Recurrent Neural Network
在复习时,老师提到了ResNet的优点:添加了L2范数之后,会使得所有参数趋于0,从而使模型舍弃不需要的层;反向传播时可以通过残差网络使模型更快收敛。
Recurrent Neural Network的基本类别
one to one模型是一种基本的模型,之前使用的卷积神经网络也可以归到这一类模型上,slides中称其为Vanilla Neural Network。
one to many模型可用在Image captioning,当输入一张图片之后,我们希望输出一个该图片的描述。
many to one模型可用在Sentiment Classification,根据输入的句子,判断作者的感情。
many to many模型(第一个many to many模型)可用在machine translation,输入一种语言翻译成另一只语言。
最后一个many to many模型可用在对输入video按帧分类。
Recurrent Neural Network分析
对于RNN的状态更新我们可以用一个 recurrence formula来表示
由式子可知,虽然输入和每次计算的状态不同,但权重 和计算式子 都是不变的。
由图可知,在RNN中,我们对每个状态计算梯度时,都需要对 进行更新,所以 为所有状态的梯度之和。
根据RNN的流程图,我们可以知道在forewards中,loss function需要计算每一个状态的loss,那么在backwards中,我们也需要计算所有的状态得到梯度,但是这样计算需要极高的损耗,因此在训练时我们针对整个时间序列只计算一个子序列的loss,极大减少了梯度计算的复杂度。
文中给出一个基于numpy实现的rnn网络: https://gist.github.com/karpathy/d4dee566867f8291f086
Image Captioning
在Image Captioning中,我们将卷积卷积神经网络最后一层全连接层(产生类别数的向量)和soft Max层去除,将剩余层的输出作为RNN网络的输入,即RNN网络的formula 从 变为 。
取RNN网络的输出作为下一个状态的输入。当RNN网络中输出 标记时,停止采样。因此在训练时需要对每个图片的captioning添加。
15年提出了Attention机制来进行Image Captioning,这里实际上是说在不同时刻对图片中的不同区域进行识别,从而形成更准确的信息。
梯度消失和梯度爆炸
RNN网络由于backward时,梯度流很长,每次更新时要乘以相同的 ,因此在这个过程中很容易发生梯度的消失和爆炸。
对于梯度爆炸,我们可以在梯度超过某个阈值之后,对梯度进行切割,即
对于梯度消失问题,可以使用LSTM,在一定程度上缓解。
LSTM的介绍,可以参考:https://blog.csdn.net/qq_33669204/article/details/83986047
视频中提出LSTM的关键在于遗忘门,遗忘门在不同的时间会有不同遗忘位置,而且遗忘门是sigmoid,数值在(0,1)之间,数值性质更好。
在初始遗忘门的参数时,尽量使其在训练的出世时值接近1。