你知道的时序建模模块

作者:13472722199 链接:https://zhuanlan.zhihu.com/p/77466700 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

卷积神经网络是在空间上挖掘特征,例如对象检测大多数使用卷积神经网络,一个对象在图像中移动,对象里相邻点像素具有一定固有特征。循环神经网络是在时序的数据中挖掘特征,例如语言模型中经常使用LSTM,GRU来处理文字序列特征。如果不谈训练准确率,时空是可以变换的,在卷积神经网络能使用的地方,常常也能使用循环神经网络来训练。1D的卷积可以训练语言模型。图像也可以使用循环神经网络来训练。

1.RNN

1.1 RNN网络结构

下图是RNN图示,简单说明是:有三个参数矩阵 [公式] ,三层网络结构(输入层,隐藏层,输出层),隐藏输出带入下次输入。

img
img

设t时刻输入[公式] ,输入矩阵 [公式] ,隐藏层矩阵为: [公式] ,隐藏层输入 [公式] , [公式] , [公式] ,输出矩阵为 [公式] , 输出为:[公式]

[公式] 当然经常写成 [公式]

[公式] 为隐藏层。

[公式]

[公式] 通常使用softmax进行输出。

1.2. RNN的梯度反向传播(BP)

1.2.1不带时间序列的神经网络计算梯度

下图是一个神经网络的一部分。

[公式] 计算需要假定每层的 [公式] 已知。数据通过网络后,根据loss,来更新每层的 [公式] 来减少loss。因此每层的输出 [公式] 是由网络的forward计算的, [公式] 是由误差向后BP计算的。

img
img

根据链式求导法则,有下式成立。

[公式] ....(1)

[公式] ...........(2)

[公式] .......... (3)

1.2.2 带时间序列的神经网络梯度

假设一个RNN网络如下图。

img
img

loss函数:求 [公式]

img
img

根据链式法则对 [公式]

[公式] [公式] = [公式]

梯度是t的指数函数,如果 [公式] ,连续乘积后会出现梯度爆炸,反之当 [公式] 会出现梯度消失问题。

梯度爆炸现在已不是很严重的问题,可以通过梯度修剪(Gradient clipping)来避免。梯度消失问题是RNN的通过LSTM来解决梯度消失问题。

2. LSTM神经网络

2.1 LSTM神经网络结构

img
img

三个门 [公式] 分别是遗忘门,输入门和输出门:

[公式]
[公式]
[公式]

三个输入: [公式] , [公式] , [公式] 输入,上次隐藏层输出以及上次记忆细胞值。

候选记忆细胞 [公式]

记忆细胞输出 [公式]

[公式] 的值分布在[0,1]之间,当前记忆细胞组合了当前输入和前次记忆细胞状态。如果遗忘 ⻔⼀直近似1且输⼊⻔⼀直近似0,过去的记忆细胞将⼀直通过时间保存并传递⾄当前时间步。这 个设计可以应对循环神经⽹络中的梯度衰减问题,并更好地捕捉时间序列中时间步距离较⼤的依 赖关系。

隐藏层输出为 [公式]

输出 [公式]

3. 门控循环单元GRU

3.1 门控循环单元GRU神经网络结构

img
img

两个门重置门,更新门: [公式]

[公式]
[公式]

候选隐藏层: [公式]

隐藏层: [公式]

输出层: [公式]

Last updated