循环神经网络 RNN
2019-10-22阅读 1921

循环神经网络是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络

对循环神经网络的研究始于二十世纪80-90年代,并在二十一世纪初发展为重要的深度学习算法 ,其中双向循环神经网络和长短期记忆网络是常见的的循环神经网络

RNN结构

一个标准的(简单的)RNN单元包含三层: 输入层,隐藏层和输出层,用图示有两种方式:折叠式与展开式

图片1.png 

序列数据

图片2.png 



现在有一组序列数据 data 0,1,2,3. 在当预测 result0 的时候,我们基于的是 data0, 同样在预测其他数据的时候, 我们也都只单单基于单个的数据. 每次使用的神经网络都是同一个 NN. 不过这些数据是有关联 顺序的 , 就像在厨房做菜, 酱料 A要比酱料 B 早放, 不然就串味了. 所以普通的神经网络结构并不能让 NN 了解这些数据之间的关联.

处理序列数据的神经网络

图片3.png 

那我们如何让数据间的关联也被 NN 加以分析呢? 想想我们人类是怎么分析各种事物的关联吧, 最基本的方式,就是记住之前发生的事情. 那我们让神经网络也具备这种记住之前发生的事的能力. 再分析 Data0 的时候, 我们把分析结果存入记忆. 然后当分析 data1的时候, NN会产生新的记忆, 但是新记忆和老记忆是没有联系的. 我们就简单的把老记忆调用过来, 一起分析. 如果继续分析更多的有序数据 , RNN就会把之前的记忆都累积起来, 一起分析.

图片4.png 

再重复一遍刚才的流程, 不过这次是以加入一些数学方面的东西. 每次 RNN 运算完之后都会产生一个对于当前状态的描述 , state. 我们用简写 S( t) 代替, 然后这个 RNN开始分析 x(t+1) , 他会根据 x(t+1)产生s(t+1), 不过此时 y(t+1) 是由 s(t) 和 s(t+1) 共同创造的. 所以我们通常看到的 RNN 也可以表达成这种样式。

应用

语音识别:输入的语音数据,生成相应的语音文本信息。比如微信的语音转文字功能。

机器翻译:不同语言之间的相互转换。像有道翻译、腾讯翻译官等。

音乐生成:使用RNN网络生成音乐,一般会用到RNN中的LSTM算法(该算法可以解决RNN网络中相距较远的节点梯度消失的问题)。

文本生成:利用RNN亦可以生成某种风格的文字。

情感分类:输入文本或者语音的评论数据,输出相应的打分数据。

DNA序列分析:输入的DNA序列,输出蛋白质表达的子序列。

视频行为识别:识别输入的视频帧序列中的人物行为。

实体名字识别:从文本中识别实体的名字。