rnn和lstm

来源:互联网 发布:左轮网吧计费软件 编辑:程序博客网 时间:2024/05/22 17:33

RNN区别于普通神经网络的地方在于,前一时刻的状态会影响到后一时刻的状态,在网络结构上呈现隐藏层的自循环结构,不同时刻的参数共享,下图为从时间上把RNN展开的的网络层图,每一列三个黑圈代表一个普通神经网络结构,列之间有参数W2关联,因为RNN加入了序列上下文的考虑,比如一句话里词与词的联系,一部电影里帧与帧的联系,RNN可以用于语句序列的处理,比如一句话,I am a girl,每一时刻输入一个单词,每个单词往往是拿一个固定维度的向量表示(one-hot,word2vec),第一个时刻输入I,第二个时刻输入am,I对应的隐藏层状态可以传递给am对应的隐藏层,这样就考虑了序列的顺序特征,保留了序列前后的关联性,可以用来预测下一个出现的单词是什么,这样,每一个时刻的网络结构对应一个输出,表示下一个单词的预测结果。但有时并不需要每一时刻的网络结构都有输出,比如判断一段文字所表达的情感,只需要关注最后一个词输入的网络结构上的输出即可。

LSTM是RNN的改良情况,一解决了RNN的弊端,RNN虽然保留了“前文”对“后文的”影响,但这个影响随着时间的拉长而减弱,“后面节点对前面节点的感知力下降”,因此LSTM设置了一个专门用于记忆的结构cell。二是LSTM的循环模块不再是单一的神经网络层(隐藏层),而是由4部分组成,包括一个原始输入和三个“门”结构。

LSTM的核心在于每一时刻的状态都有选择的保留或者丢弃了前一状态的信息,这一功能的实现就是通过“门”结构,输入门、输出门、遗忘门,每一个门结构都读取了这一时刻的输入数据、上一时刻的传递数据、以及上一时刻的cell状态,这三种数据的线性组合再通过一个非线性函数(sigmoid、...)来决定哪些值需要更新(有选择的保留或者丢弃)。遗忘门输出的是需要丢弃的信息,输入门输出的是需要保留的信息,整合为该时刻cell状态,再有选择的输出。结构如下,每一结构的公式按照节点连接的部分推导。