1 基本理解
针对于序列性的输入。
每一次都是对 前文的信息 + 当前的输入 = 当前的输出。
2 视觉处理方面可能的应用
2.1 图片的动态场景理解
用CNN做识别,用RNN来串联场景信息
参考文献
Deep Visual-Semantic Alignments for Generating Image Descriptions(https://arxiv.org/abs/1412.2306)
2.2 对动态影像添加标签和智能描述
用于视频审核和视频管理(大量视频的快速信息解析?)
参考文献
Deep Learning for Video Classification and Captioning(https://arxiv.org/pdf/1609.06782.pdf)
3 RNN模型的分类
3.1 简单RNN模型
最核心的点是时间上参数共享。
CNN是空间上参数共享(卷积核?)
当前输出值 yt
隐藏层 Ht 到 yt 的连接权重 wy
当前状态值Ht又由xt 和 Ht-1加权,并通过激活函数得到
并不断迭代循环,不断产生当前状态值Ht。
由于导数连乘,肯定存在梯度爆炸(导数大于1连乘)和梯度消失(导数小于1连乘)。
由此也引出了LSTM和GRU。
3.2 LSTM(长短期记忆模型)
注意这里每个节点的乘号和加号。
关键是增加了最上方的ct,记忆状态
sigmoid函数输出的值范围是0-1,所以可以控制信息流出的比例
分别管理三扇门
1)forget gate 遗忘门过滤掉上期的一些部分(如果ft是0,那么ct-1就直接没了)
2)input gate 输入门又输入一些本期新的东西(用it来控制当期的比例,并用tanh来控制大小和方向)
3)output gate 最终的输出 (ot和ct相乘继续得到)
tanh函数是-1 ~ 1,所以可以控制信息增减的方向
可以看到加入了ct对ct-1的偏导数
可以看到这个偏导数是混合相乘的,会让整个导数更稳定,不易梯度消失或者爆炸。
3.3 GRU模型
两个sigmoid函数代表两个门
update gate:决定了上期状态能进入到当期的比例,当与上期状态Ht相乘,就得到了历史信息部分。
reset gate:决定了上期信息的遗忘比例,Ht-1和xt会最终得到一些新增信息部分(如下图所示),最终用上1-zt作为权重比例分配。
最后,历史信息部分和当前新增部分,就得到了最终当期状态值。