一、循环神经网络与应用场景
考察一个输入序列 ,循环神经网络每次会结合上一次的网络状态 和本次输入 ,更新网络状态为 ,并根据需要输出结果 。循环神经网络的前向传播的数学表达如下:
其结构和应用情形如下。
1. 一(输入)对多(输出):图像标注,即输入一幅图像,输出关于这幅图像的描述。
图 1. 循环神经网络之一对多
2. 多对一:情感分析。
图 2. 循环神经网络之多对一
图 3. 循环神经网络之多对多
图 4. 循环神经网络之多对多
二、循环神经网络的反向传播
循环神经网络的反向传播过程有几种不同的方式,视输入序列的长度而定。
- 利用全序列计算损失函数,计算梯度,然后进行反向传播。
- 将整个序列划分为小段,对每一小段计算前向与反向传播的结果。每小段输入时都重置网络状态。
- 将整个序列划分为小段,但针对每小段处理时,不重置网络状态,而沿用上一小段产生的状态。
三、图像标注
-
由卷积网络生成图像特征向量,用作循环卷积网络的状态初始值。然后使用起始标识符
<START>
作为第一个字词,启动网络,每次生成一个用于描述图像的词(从事先给定的图库中选取),并将该词替代起始标识符,作为循环网络层的输入。 -
使用注意力模型的图像标注:使用卷积神经网络产生一组与图像相关的特征向量,每一个可能与图像的某部分相关。循环神经网络每一次输出,除了输出用于描述图像的单词外,还会输出在那组特征向量上的概率分布,依据概率分布对图像的那组特征进行加权,所得结果作为下一步的输入。
四、循环神经网络的改进:长短时记忆网络
考虑循环神经网络的反向传播过程。对于隐藏状态求导,由于每一层的梯度流都会引入一个系数矩阵 的相乘操作,因此很容易出现梯度爆炸或梯度消失的现象。
- 对于梯度爆炸,可采用梯度截断方法,即当梯度超过一定门限后,强制使得梯度不在增大。
- 对于梯度消失,则需要改进循环神经网络的结构——即引入门控制单元的长短时记忆网络。
图 5. 对隐藏状态求导会引入系数矩阵的相乘
长短时记忆网络的一个单元模块中包含四个控制门,由之来控制单元状态 和网络状态 :
- f(oget)-gate: 遗忘门,控制着是否消除本次单元状态 的影响。
- i(nput)-gate: 输入门,标识着本次输入。
- g(ate)-gate: 门(原谅这个奇怪的命名,课程的讲授者也不清楚这个字符具体的指代),控制着本次输入的影响程度。
- o(utput)-gate: 输出门,标识着输出。
该网络前向传播的数学表达为:
对单元状态求导时,只会包含一个与f-gate的输出的逐元素的相乘操作,不会引入矩阵相乘操作,会极大缓解梯度消失的现象。
图 6. 对单元状态求导的梯度流图示