RNN,GRU,LSTM

2019-08-29 17:17:15

问题描述:比较RNN,GRU,LSTM。

问题求解:

  • 循环神经网络 RNN

传统的RNN是维护了一个隐变量 ht 用来保存序列信息,ht 基于 xt 和 ht-1 来计算 ht 。

ht = g( Wi xt + Ui ht-1 + b)

y= g( Wht + b)

  • 门控循环神经网络 GRU

 

门控循环神经网络(Gated Recurrent Unit,GRU)中引入了门控机制。

Update:Γ= g( Wu xt + Uu ht-1 + b)

ht~ = g( Wc xt + Uht-1 + b)    -Candidate

ht = Γu * ht~ + Γf * ht-1

【注】实际使用中还会加入重置门,可以看成计算了 ht-1 和 xt 之间的相关性

Γr = g( Wr xt + Ur ht-1 + b)

ht~ = g( Wc xt + Γr Uht-1 + b)

  • 长短期记忆网络 LSTM

长短期记忆网络(Long Short Term Memory,LSTM)是循环神经网络的最知名和成功的扩展。由于循环神经网络有梯度消失和梯度爆炸的问题,学习能力有限,在实际的任务中往往不达预期。LSTM可以对有价值的信息进行长期记忆,从而减小循环神经网络的学习难度,因此在语音识别,NER,语言建模等问题中有着广泛的应用。

与传统的循环神经网络对比,LSTM仍然是基于xt 和 ht-1 来计算 ht ,只不过对计算的内部流程进行更加精心的设计。

LSTM中引入了cell memory称为 c,ht 由 cell memory生成。

LSTM在前向传播的时候不仅传递 ht ,而且还传递 cell memory,cell memory实际形成了一个信息的流通的highway。

LSTM中加入了三个门更新门(也有称为输入门) Γu,遗忘门 Γf,输出门 Γo。这里的门的概念可以理解为相关性,本质是三个权重。

Update:Γ= g( Wu xt + Uu ht-1 + b)

Forget:Γ= g( Wf xt + Uht-1 + b)

Output:Γo= g( Wo xt + Uht-1 + b)

这三个门都是作用在cell memory上的,那么cell memory怎么计算呢?

ct~ = g( Wc xt + Uht-1 + b)

ctΓuct~Γfct-1

计算完成 c后,就可以根据输出门来求 h了。

ht = Γo * ct

原文地址:https://www.cnblogs.com/hyserendipity/p/11430868.html