隐状态:

循环神经网络 - 图1存储了到时间步循环神经网络 - 图2的序列信息
循环神经网络 - 图3表示当前的输入,有递推关系
循环神经网络 - 图4
循环神经网络是有隐状态的神经网络

无隐状态的神经网络

对于一个单隐藏层的的多层感知机
循环神经网络 - 图5表示隐藏层激活函数
给定一个小批量样本循环神经网络 - 图6循环神经网络 - 图7为批量大小,循环神经网络 - 图8为一个样本的维度,
隐藏层输出循环神经网络 - 图9,
循环神经网络 - 图10
隐藏层权重参数为循环神经网络 - 图11,循环神经网络 - 图12,循环神经网络 - 图13为隐藏层的神经元数目
接下来,将隐藏层变量作用到输出层,得到
循环神经网络 - 图14
输出层的权重参数为循环神经网络 - 图15循环神经网络 - 图16

有隐状态的循环神经网络

image.pngh
假设在在时间步t有小批量输入循环神经网络 - 图18
循环神经网络 - 图19代表t时间步的隐变量,与多层感知机不同的是,保存了前一个时间步的隐变量循环神经网络 - 图20,并引入更新参数循环神经网络 - 图21来描述当前时间步中如何使用该隐变量
当前隐藏变量的值由当前输入和上一个时间步的隐变量同时确定,于是:
循环神经网络 - 图22
隐状态使用的定义与前一个时间步中使用的定义相同, 因此上式 (8.4.5)的计算是循环的,基于循环计算的隐状态神经网络被命名为 循环神经网络
对于输出层,在时间步t下:
循环神经网络 - 图23
输出层的权重参数循环神经网络 - 图24循环神经网络 - 图25不随时间变化,换句话说循环神经网络总是使用这些参数

梯度剪裁

迭代计算这T个时间步上的梯度,反向传播会产生循环神经网络 - 图26的矩阵乘法链,导致数值不稳定
如果我们进假设目标函数表现良好, 即函数在常数下是利普希茨连续循环神经网络 - 图27,即是:
image.png
并假设:通过循环神经网络 - 图29更新参数,则
循环神经网络 - 图30
这意味着我们不会观察到超过循环神经网络 - 图31的变化。这样的坏处是限制了取得进展的速度,好处是它限制了事情变糟的程度,尤其当我们朝着错误的方向前进时。
那么如何解决梯度爆炸:
可以通过降低η的学习率来解决这个问题。
但是如果我们很少得到大的梯度呢? 在这种情况下,这种做法似乎毫无道理。
循环神经网络 - 图32
image.png
循环神经网络 - 图34循环神经网络 - 图35进行投影即乘以一个小于1的系数, 并且更新后的梯度完全与的原始方向对齐。

RNN梯度消失问题

RNN中的总的梯度不会消失。即便梯度越传越弱,那也只是远距离的梯度消失,由于近距离的梯度不会消失,所有梯度之和并不会消失。RNN 所谓梯度消失的真正含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系

RNN应用

image.png