循环神经网络

循环神经网络:Recurrent Nerual Network,简称RNN。

CS231n李飞飞计算机视觉 循环神经网络

 RNN可以有很多种结构,包括一对一的Vanilla网络,一对多的图像字幕,多对一的情感分类(处理一定数量的按顺序排列的词,然后试着把句子里的词,按正面和负面情感分类),多对多的机器翻译(将一个序列翻译成另一个序列)、视频分类。

RNN例子

CS231n李飞飞计算机视觉 循环神经网络

RN有其自己内部的状态,但是在每个时间点接收内容,然后结合函数来修改自己的状态,也就是说影响RNN状态的因素不止有自己的状态还有接受内容。

可以将RNN的状态表达成这样一个函数:

CS231n李飞飞计算机视觉 循环神经网络

其中CS231n李飞飞计算机视觉 循环神经网络表示RNN在t时刻的状态,CS231n李飞飞计算机视觉 循环神经网络表示在t时刻RNN收到的内容。CS231n李飞飞计算机视觉 循环神经网络表示参数为w的函数。

CS231n李飞飞计算机视觉 循环神经网络

CS231n李飞飞计算机视觉 循环神经网络是对CS231n李飞飞计算机视觉 循环神经网络的权重,CS231n李飞飞计算机视觉 循环神经网络是对CS231n李飞飞计算机视觉 循环神经网络的权重。

图像标注

考虑一个图像标注的网络

CS231n李飞飞计算机视觉 循环神经网络

网络分为两部分,CNN和RNN,CNN用来处理图像,RNN用来负责建立序列模型。

CS231n李飞飞计算机视觉 循环神经网络

将图像放入CNN中,得到v,然后利用第二个公式计算出h(这里CS231n李飞飞计算机视觉 循环神经网络表示图像信息进入RNN的第一步的情况。)

CS231n李飞飞计算机视觉 循环神经网络是序列的第一个单词的分布情况,假设根据CS231n李飞飞计算机视觉 循环神经网络,发现最可能出现的词语是“稻草”。

CS231n李飞飞计算机视觉 循环神经网络

然后将“稻草”对应的向量放入RNN的底部,得到序列中第二个单词的描述CS231n李飞飞计算机视觉 循环神经网络“帽子‘”,

CS231n李飞飞计算机视觉 循环神经网络

然后将“帽子”对应的向量放入RNN的底部,依次循环直到得到一个结束标志。最终RNN价格这张图片描述成草帽。

y向量的维数等于单词表的数目加一,这是因为考虑到了结束标志。

LSTM

CS231n李飞飞计算机视觉 循环神经网络

RNN只有一个隐藏状态h,而LSTM包含多个隐藏状态h,c。

CS231n李飞飞计算机视觉 循环神经网络

其中i表示input,f表示forget,o表示output,f,i,o的值是0~1,g的值是-1~1

CS231n李飞飞计算机视觉 循环神经网络表示细胞状态,CS231n李飞飞计算机视觉 循环神经网络的更新依赖f(忘记门)和i(输入门)两个变量,首先CS231n李飞飞计算机视觉 循环神经网络与f逐元素相乘,舍弃CS231n李飞飞计算机视觉 循环神经网络的部分信息,f中为1的元素对应的CS231n李飞飞计算机视觉 循环神经网络信息得以完全保留,为0的元素对应的CS231n李飞飞计算机视觉 循环神经网络信息会被丢弃。然后,i与g逐元素相乘,表示细胞状态受输入i的影响。两者加和得到新的目标状态。

CS231n李飞飞计算机视觉 循环神经网络再来影响CS231n李飞飞计算机视觉 循环神经网络,计算o(输出门)与CS231n李飞飞计算机视觉 循环神经网络的点积,然后得到CS231n李飞飞计算机视觉 循环神经网络

计算过程如下:

CS231n李飞飞计算机视觉 循环神经网络

CS231n李飞飞计算机视觉 循环神经网络

对比LSTM和RNN

CS231n李飞飞计算机视觉 循环神经网络

  1. RNN全部的隐藏状态影响下一状态。而LSTM只选择部分隐藏状态影响下一状态。
  2. RNN可能会发生梯度消失的情况,而LSTM因为有加法的原因回均匀地分配梯度,不会产生梯度消失的问题。

总结

  1. RNN设计灵魂
  2. RNN简单但效果不够好
  3. LSTM的加法会使梯度流加速
  4. RNN梯度的反向传播会造成梯度爆炸或梯度消失,梯度爆炸问题可以通过梯度裁剪来解决,梯度消失问题就通过增加额外的加法解决(类似LSTM)

参考:https://www.cnblogs.com/coldyan/p/8385021.html