跟李沐学AI:循环神经网络RNN

循环神经网络

循环神经网络 (recurrent neural networks,RNNs) 是具有隐状态的神经网络。RNN 具有隐状态(hidden state)的原因在于它需要一种机制来存储之前输入的信息,以便于处理当前输入时能够考虑之前的上下文。基于上节提到的潜变量自回归模型:。其中隐状态 (hidden state), 也称为隐藏变量 (hidden variable), 它存储了到时间步t−1的序列信息。通常,我们可以基于当前输入和先前隐状态来计算时间步t处的任何时间的隐状态:。在每一个时间步t,RNN 接收一个输入xt​以及来自上一时间步的隐状态ht−1,并根据这两个信息计算出当前时间步的隐状态ht。隐状态可以看作网络对于之前所有输入的记忆表示,它包含了从序列开始到当前时间步所有信息的摘要。

循环神经网络的输出决定,

其中:ht是当前时间步t的隐状态,xt是当前时间步的输入,Wxh和Whh分别是从输入到隐状态和从隐状态到隐状态的权重矩阵,b是偏置项,f(⋅)是激活函数,例如tanh或ReLU等。

困惑度

困惑度(Perplexity, PP)用来衡量模型预测单词的能力,它反映了模型对未知数据的"困惑"程度。通常情况下,困惑度越低,说明模型对数据的拟合程度越好。困惑度计算公式如下:

在最好的情况下,模型总是完美地估计标签词元的概率为1。 在这种情况下,模型的困惑度为1。

在最坏的情况下,模型总是预测标签词元的概率为0。 在这种情况下,困惑度是正无穷大。

梯度裁剪

在循环神经网络(RNNs)中,梯度裁剪是一种常用于缓解梯度消失或梯度爆炸问题的技术。

在RNN中,梯度消失的问题尤为显著,因为它们的权重需要通过时间进行反向传播。在每一时间步中,梯度是通过链式法则计算的,这意味着当前时间步的梯度是由前一时间步的梯度乘以前一时间步的权重矩阵得到的。如果这个权重矩阵的特征值小于1,那么经过多次相乘之后,梯度就会逐渐减小至接近零。当这种情况发生时,网络就很难调整其权重来学习远距离的时间依赖性。这就是梯度消失。与梯度消失相反,梯度爆炸发生在梯度增长得非常快以至于变得过大,这可能导致权重参数的剧烈更新,使得模型难以收敛。

梯度裁剪的目的是通过限制梯度的大小来解决这些问题。具体来说,当计算出的梯度超过某个预定义的阈值时,可以按比例缩小梯度的值,使得它们不会过于庞大,从而避免梯度爆炸。这个过程可以通过两种常见的方式来实现:

基于范数的裁剪

设定一个阈值C(通常是超参数),如果梯度的L2范数大于C,则将整个梯度向量按比例缩放,使得其范数不超过C。这样可以保证梯度保持在一个合理的范围内。

基于元素的裁剪

这种方法直接检查梯度向量中的每个元素,如果发现某个元素的绝对值超过了预设的最大值,则 将该元素裁剪到最大值或最小值。

相关推荐
明明真系叻1 小时前
第二十六周机器学习笔记:PINN求正反解求PDE文献阅读——正问题
人工智能·笔记·深度学习·机器学习·1024程序员节
XianxinMao1 小时前
Transformer 架构对比:Dense、MoE 与 Hybrid-MoE 的优劣分析
深度学习·架构·transformer
88号技师2 小时前
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
人工智能·算法·matlab·优化算法
IT猿手2 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码
开发语言·人工智能·算法·机器学习·matlab
88号技师2 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
2301_764441332 小时前
基于python语音启动电脑应用程序
人工智能·语音识别
HyperAI超神经3 小时前
未来具身智能的触觉革命!TactEdge传感器让机器人具备精细触觉感知,实现织物缺陷检测、灵巧操作控制
人工智能·深度学习·机器人·触觉传感器·中国地质大学·机器人智能感知·具身触觉
galileo20163 小时前
转化为MarkDown
人工智能
说私域4 小时前
私域电商逆袭密码:AI 智能名片小程序与商城系统如何梦幻联动
人工智能·小程序
请站在我身后4 小时前
复现Qwen-Audio 千问
人工智能·深度学习·语言模型·语音识别