RNN理解:

对于一段输入,如果前后文之间有关联,传统神经网络不能提取、处理这种关联信息(输入的各部分是独立无影响的)

RNN可以在训练时,将前一阶段的特征保留,并传入到下一阶段一同训练,一定程度上处理了前后文的关联关系

作用:

对于时序输入问题进行训练:文本分析、机器翻译

 

RNN结构示意:

 

rnn gan rnn gan lstm_文本分析

对于t时刻的RNN cell,有两个输入,一个输出:

Xt:t时刻的输入

ht-1:t-1时刻的输出

ht:t时刻的输出,输出有两个流向,直接得出结果、输入到下一时刻

计算过程:

ht = tanh(W*[ht-1,Xt] + bt)   <===>   tanh(Wh*ht-1 + Wx*Xt +bt)

括号内相当于:ht-1、Xt做线性变换后合并

 

RNN存在的问题:

后输入受前输入影响,但前输入不受后输入影响;t时刻输出到t+1时刻后,t+2时刻只能接收t+1时刻输出,不能直接受到t时刻影响,在多次传递后,t时刻输出对t+n时刻的影响随n增大而减小

 

LSTM理解:

相较于RNN,增加了一个输出,用于长期存储特征信息,增加遗忘门,可以减少信息负荷

LSTM结构:

rnn gan rnn gan lstm_文本分析_02

rnn gan rnn gan lstm_d3_03

对于t时刻的LSTM cell,有三个输入,两个输出:

Xt:t时刻的输入

ht-1:t-1时刻的输出之一

ht:t时刻的输出之一,输出有两个流向,直接得出结果、输入到下一时刻

Ct-1:t-1时刻的输出之一

Ct:t时刻的输出之一

常见符号:

C:单元状态/记忆单元,cell state,保存长期状态

门:sigmod(W*X+b),得到0-1间的实数向量,进行选择性计算

σ:sigmod计算符号,得到0-1结果

 

计算过程:

遗忘门:ft = sigmod(W*[ht-1,Xt] + b),决定对上一记忆单元的遗忘情况

输入门:it = sigmod(W*[ht-1,Xt] + b),决定ct中哪些信息需要更新

中间记忆单元:ct = tanh(W*[ht-1,Xt] + b),通过ht-1与输入信息,计算特征信息

记忆单元:Ct = ft*Ct-1 + it*ct,通过遗忘门与上一记忆单元进行记忆传递,通过输入门与中间记忆单元,计算得到t时刻记忆单元

输出门:ot = sigmod(W*[ht-1,Xt] + b),决定哪些记忆单元跟新到h中

输出:ht = ot*tanh(Ct),得到t时刻输出,并输入下一时刻

 

小结:

ht-1与Xt共同影响3个门,得到中间记忆单元ct,

Ct-1、ct与遗忘门、输入门共同作用计算得到Ct,

Ct与输出门作用得到ht