一文看懂LSTM原理及其优点,变体Gru

在这里插入图片描述

LSTM理解

从上图我们可以看到,LSTM与普通循环网络不同的是,LSTM加入Memroy Cell以及input,forget,output gate三个门的概念。我们可以把Memory Cell简单的理解为前一状态在该状态的记忆,LSTM通过这三个门来对该状态进行操作。

Forget Gate
遗忘门(forget gate):决定我们需要从cell状态中扔掉什么样的信息。通过sigmoid层将输入 h t − 1 , x t h_{t-1},x_t ht1,xt转化为0和1之间的数。1代表“完全保留这个值”,而0代表“完全扔掉这个值”。
输入:
[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imbog.csdnimg.cn/25E4lrE191021104419278.png)https://img-下blog.csdnimg.cn/20191021104419278.png)]
在这里插入图片描述

input Gate:
输入门(input gate)决定我们需要在cell中存储什么样的信息。这个问题有两个部分。第一,一个sigmoid层调用“输入门(input gate)”以决定哪些数据是需要更新的。然后,一个tanh层为新的候选值 C ^ t \hat C_t C^t创建一个向量 ,这些值能够加入state中。下一步,我们要将这两个部分合并以创建对state的更新。
在这里插入图片描述
具体来看,我们把前一状态 C t − 1 C_{t-1} Ct1 f t f_t ft相乘得到网络选择遗忘后的状态,然后加上通过input gate的新的记忆信息 i t ∗ C ^ t i_t * \hat C_t itC^t.在决定需要遗忘和加入的记忆后,我们就可以将旧的cell memory C t − 1 C_{t-1} Ct1计算得到新的cell memory C t C_t Ct
在这里插入图片描述

Output Gate:
输出门(output gate),我们将cell memory中的值放入tanh得到记忆信息中需要的数据,再将其与sigmoid门的输出 O t O_t Ot相乘得到最后我们需要的输出。这样LSTM所有的工作就完成了,最终的output就可以通过输入们遗忘门将前面长期的记忆与当前状态结合,从而区别与普通rnn。
在这里插入图片描述

LSTM举例

在这里插入图片描述
我们将(x1,x2,x3)看作输入,这是一个序列输入,当x2=1是,memory就等于memory+x1。当x2=-1时,memory等于0。x3=1,输出就是memory当前值。
在这里插入图片描述
我们将三个门的weights设置如上图,这些weights正好对应上面例题中的要求,我们利用之前说明的公式最终可以求出y的输出。大家可以试试,加强对LSTM的理解。

rnn难训练的原因:

在这里插入图片描述
如图,我们可以看到,w1,w2作为权重,total loss会出现悬崖式的上升或下降。所以,当loss平坦时,learning rate应该设置的大些,而当loss处于悬崖临界的时候,learning rate*梯度将使weights变化巨大,出现nan。

在这里插入图片描述
正如上图,我们用一个简单的rnn为例,输入如图为序列1,0,0···,输出为y1,y2,…y1000.当w=1时,y1000=1,当w=1.01,y1000=20000,而当w=0.99,y1000=0.所以,我们不难看出w的微小变化会剧烈影响y的输出,从而出现gradient vanish or gradient explode。我们很难设置合理的learning rate去train rnn。

LSTM可以消除gradeient vanishing

在这里插入图片描述
LSTM与普通rnn区别在于存在三个门,上面我们讲到,遗忘门可以选择前一状态的记忆与该状态的输入相加,形成该状态的记忆信息。所以只要遗忘门不关,前一状态的记忆就会影响该状态的输出。换句话说,lstm中,状态时通过累加的方式来计算的,他的导数不是乘积的形式,而rnn用覆盖的方式计算状态,是乘积的方式。所以lstm可以解决gradient vanishing,但是阻止不了gradient explode。

循环门单元(Gated Recurrent Unit,GRU)

它组合了遗忘门和输入门到一个单独的“更新门”中。它也合并了cell state和hidden state,并且做了一些其他的改变。结果模型比标准LSTM模型更简单。
在这里插入图片描述
从上图可见,reset gate产生 r t r_t rt, r t r_t rt作为一个权重,来衡量前一状态的取舍,从而生成新的状态信息即候选隐藏层 h ^ t \hat h_t h^t。update gate产生 z t z_t zt,它决定输出 h t h_t ht h t − 1 h_{t-1} ht1 h ^ t \hat h_t h^t中分别取多少。

GRU省略了output gate,所以从参数量上减少了三分之一,训练速度提高,同时通过实验验证性能与LSTM性能持平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值