2019-08-29 17:17:15
问题描述:比较RNN,GRU,LSTM。
问题求解:
- 循环神经网络 RNN
传统的RNN是维护了一个隐变量 ht 用来保存序列信息,ht 基于 xt 和 ht-1 来计算 ht 。
ht = g( Wi xt + Ui ht-1 + bi )
yt = g( Wo ht + bo )
- 门控循环神经网络 GRU
门控循环神经网络(Gated Recurrent Unit,GRU)中引入了门控机制。
Update:Γu = g( Wu xt + Uu ht-1 + bu )
ht~ = g( Wc xt + Uc ht-1 + bc ) -Candidate
ht = Γu * ht~ + Γf * ht-1
【注】实际使用中还会加入重置门,可以看成计算了 ht-1 和 xt 之间的相关性
Γr = g( Wr xt + Ur ht-1 + br )
ht~ = g( Wc xt + Γr Uc ht-1 + bc )
- 长短期记忆网络 LSTM
长短期记忆网络(Long Short Term Memory,LSTM)是循环神经网络的最知名和成功的扩展。由于循环神经网络有梯度消失和梯度爆炸的问题,学习能力有限,在实际的任务中往往不达预期。LSTM可以对有价值的信息进行长期记忆,从而减小循环神经网络的学习难度,因此在语音识别,NER,语言建模等问题中有着广泛的应用。
与传统的循环神经网络对比,LSTM仍然是基于xt 和 ht-1 来计算 ht ,只不过对计算的内部流程进行更加精心的设计。
LSTM中引入了cell memory称为 ct ,ht 由 cell memory生成。
LSTM在前向传播的时候不仅传递 ht ,而且还传递 cell memory,cell memory实际形成了一个信息的流通的highway。
LSTM中加入了三个门更新门(也有称为输入门) Γu,遗忘门 Γf,输出门 Γo。这里的门的概念可以理解为相关性,本质是三个权重。
Update:Γu = g( Wu xt + Uu ht-1 + bu )
Forget:Γf = g( Wf xt + Uf ht-1 + bf )
Output:Γo= g( Wo xt + Uo ht-1 + bo )
这三个门都是作用在cell memory上的,那么cell memory怎么计算呢?
ct~ = g( Wc xt + Uc ht-1 + bc )
ct = Γu * ct~ + Γf * ct-1
计算完成 ct 后,就可以根据输出门来求 ht 了。
ht = Γo * ct