lstm算法

一、原因

我们也介绍了循环神经网络很难训练的原因,这导致了它在实际应用中,很难处理长距离的依赖。在本文中,我们将介绍一种改进之后的循环神经网络:长短时记忆网络(Long Short Term Memory Network, LSTM),它成功的解决了原始循环神经网络的缺陷,成为当前最流行的RNN,在语音识别、图片描述、自然语言处理等许多领域中成功应用。但不幸的一面是,LSTM的结构很复杂,因此,我们需要花上一些力气,才能把LSTM以及它的训练算法弄明白。在搞清楚LSTM之后,我们再介绍一种LSTM的变体:GRU (Gated Recurrent Unit)。 它的结构比LSTM简单,而效果却和LSTM一样好,因此,它正在逐渐流行起来。

二、定义
1.LSTM的网络结构

RNN:有两个输入,两个输出。
LSTM:有三个输入,三个输出。
GRU:有两个输入,两个输出。

  • 相比RNN传递一个网络状态h^t ,LSTM传递两个状态,一个 c t c^t ct(cell state)和一个 h t h^t ht(hidden state)

在这里插入图片描述

2.LSTM的三个门
  • 输入门
  • 遗忘门
  • 输出门
(1).遗忘门

作用对象:细胞状态
作用:将细胞状态中的信息选择性的遗忘
例如公式:(5) c t = z f ⊙ c t − 1 + z i ⊙ z c^t=z^f⊙c^{t-1}+z^i⊙z ct=zfct1+ziz z f z^f zf是对决定从cell状态中丢弃什么信息, z f z^f zf的范围[0,1],
让我们回到语言模型的例子中来基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前主语的类别,因此正确的代词可以被选择出来。当我们看到新的主语,我们希望忘记旧的主语。
例如,他今天有事,所以我。。。当处理到‘’我‘’的时候选择性的忘记前面的’他’,或者说减小这个词对后面词的作用。
GRU对LSTM做了两个大改动。

(2).输入门

作用对象:细胞状态
作用:将新的信息选择性的记录到细胞状态中
例如公式:(5) c t = z f ⊙ c t − 1 + z i ⊙ z c^t=z^f⊙c^{t-1}+z^i⊙z ct=zfct1+ziz z i z^i zi是对决定从当前z状态中选择多少信息进入当前 c t c^t ct z i z^i zi的范围[0,1],
在我们语言模型的例子中,我们希望增加新的主语的类别到细胞状态中,来替代旧的需要忘记的主语。
例如:他今天有事,所以我。。。。当处理到‘’我‘’这个词的时候,就会把主语我更新到细胞中去。

(3).输出门

在语言模型的例子中,因为他就看到了一个 代词,可能需要输出与一个 动词 相关的信息。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化。
例如:上面的例子,当处理到‘’我‘’这个词的时候,可以预测下一个词,是动词的可能性较大,而且是第一人称。
会把前面的信息保存到隐层中去。

三、相关公式
1.模块内图

在这里插入图片描述

2. lstm的七个公式

(1) z f = s i g m o i d ( w f ∗ [ h t − 1 , x t ] + b f ) z^f=sigmoid(w_f*[h^{t-1},x^t]+b_f) zf=sigmoid(wf[ht1,xt]+bf) 遗忘门
(2) z i = s i g m o i d ( w i ∗ [ h t − 1 , x t ] + b i ) z^i=sigmoid(w_i*[h^{t-1},x^t]+b_i) zi=sigmoid(wi[ht1,xt]+bi) 输入门
(3) z o = s i g m o i d ( w o ∗ [ h t − 1 , x t ] + b o ) z^o=sigmoid(w_o*[h^{t-1},x^t]+b_o) zo=sigmoid(wo[ht1,xt]+bo) 输出门
(4) z = t a n h ( w ∗ [ h t − 1 , x t ] + b ) z=tanh(w*[h^{t-1},x^t]+b) z=tanh(w[ht1,xt]+b)
(5) c t = z f ⊙ c t − 1 + z i ⊙ z c^t=z^f⊙c^{t-1}+z^i⊙z ct=zfct1+ziz 输出1
(6) h t = z o ⊙ t a n h ( c t ) h^t=z^o⊙tanh(c^t) ht=zotanh(ct) 输出2
(7) y t = s o f t m a x ( w ′ h t ) y^t=softmax(w'h^t) yt=softmax(wht) 输出3

四、激活函数

1.sigmoid 用在了各种gate上,产生0~1之间的值,这个一般只有sigmoid最直接了。
2.tanh 用在了状态和输出上,是对数据的处理,这个用其他激活函数或许也可以。

五、LSTM如何解决梯度消失梯度爆炸

在这里插入图片描述
参考:
https://zhuanlan.zhihu.com/p/136223550

LSTM变体GRU

将输入门、遗忘门、输出门变为两个门:更新门(Update Gate)和重置门(Reset Gate)。
将单元状态与输出合并为一个状态:
Gated Recurrent Unit (GRU)就是lstm的一个变态,这是由 Cho, et al. (2014) 提出。它将忘记门和输入门合成了一个单一的 更新门。同样还混合了细胞状态和隐藏状态,和其他一些改动。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值