一文看懂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性能持平。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LSTM是一种循环神经网络(RNN)的变体,广泛应用于序列数据处理任务中。根据引用中提供的信息,以下是几种常见的LSTM及其变体的性能对比: 1. BasicLSTMCell:这是最基本的LSTM单元,由标准的LSTM结构组成。它具有较低的计算复杂度和内存消耗,适用于大多数任务。 2. static_rnn:这是一个静态循环网络,它使用BasicLSTMCell构建。静态循环网络适用于序列长度固定的情况,但对于变长序列需要进行填充处理。 3. dynamic_rnn:这是一个动态循环网络,也使用BasicLSTMCell构建。相比静态循环网络,动态循环网络能够处理变长序列,不需要进行填充处理。 4. LSTMBlockCell和LSTMBlockFusedCell:这两个变体是为了提高性能而设计的。LSTMBlockCell使用基于计算图的操作,而LSTMBlockFusedCell使用基于计算图的操作和GPU加速。它们在计算速度和内存效率方面相对较高,适用于大规模数据集和复杂任务。 5. contrib.cudnn_rnn:这是TensorFlow的一个贡献库,提供了与NVIDIA的cuDNN库集成的高性能LSTM实现。该实现能够利用GPU进行加速,适用于需要大规模并行计算的任务。 根据引用中提供的信息,理解LSTM的基本结构对于理解其变体的结构是非常重要的。一旦掌握了基本结构,理解和应用不同的变体就会相对容易。 另外,引用提到了双向LSTM,它由一个正向的LSTM和一个逆序的LSTM组成。双向LSTM能够同时利用过去时刻和未来时刻的信息,因此在预测任务上通常比单向LSTM更准确。 综上所述,现有的LSTM及其变体在性能方面有所区别。选择适合特定任务和数据集的LSTM变体需要考虑计算资源、数据特征和性能要求等因素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [TensorFlow 学习笔记 - 几种 LSTM 对比](https://blog.csdn.net/myonelotus/article/details/80199373)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [长短期记忆网络(Long Short-Term Memory,LSTM)及其变体双向LSTMGRU](https://blog.csdn.net/weixin_42111770/article/details/80900575)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值