Tensorflow2.0——LSTM

Tensorflow2.0——LSTM

LSTM

随着距离的增加,RNN无法有效的利用历史信息。而长短记忆神经网络——LSTM,能够学习长的依赖关系。

LSTM的链状结构,有四层,这四层以特殊的方式进行交互。
在这里插入图片描述
门(Gate)是一种可选地让信息通过的方式。 它由一个Sigmoid神经网络层和一个点乘法运算组成。
在这里插入图片描述
Sigmoid神经网络层输出0和1之间的数字,这个数字描述每个组件有多少信息可以通过, 0表示不通过任何信息,1表示全部通过。LSTM有三个门,用于保护和控制细胞的状态。

LSTM的三个门

【Forget 门】

LSTM的第一步是决定我们要从细胞状态中丢弃什么信息。 该决定由被称为“忘记门”的Sigmoid层实现。它查看ht-1(前一个输出)和xt(当前输入),并为单元格状态Ct-1(上一个状态)中的每个数字输出0和1之间的数字。1代表完全保留,而0代表彻底删除。

若根据以前的语料来预测下一个单词,在这样的问题中,细胞状态可能包括当前主题的性别,从而决定使用正确的代词。 当我们看到一个新主题时,我们想要忘记旧主题的性别。
在这里插入图片描述
【Input 门】

下一步是决定我们要在细胞状态中存储什么信息。 这部分分为两步。 首先,称为“输入门层”的Sigmoid层决定了我们将更新哪些值。 接下来一个tanh层创建候选向量Ct,该向量将会被加到细胞的状态中。 在下一步中,我们将结合这两个向量来创建更新值。

我们希望将新主题的性别添加到单元格状态,以替换我们忘记的旧对象。
在这里插入图片描述

【Output 门】

现在是时候去更新上一个状态值Ct−1了,将其更新为Ct。将上一个状态值乘以ft,以此表达期待忘记的部分。之后我们将得到的值加上 it∗C̃ t。这个得到的是新的候选值, 按照我们决定更新每个状态值的多少来衡量。

在语言模型的例子中,对应着实际删除关于旧主题性别的信息,并添加新信息。
在这里插入图片描述
最后,我们需要决定我们要输出什么。 此输出将基于我们的细胞状态,但将是一个过滤版本。 首先,我们运行一个sigmoid层,它决定了我们要输出的细胞状态的哪些部分。 然后,我们将单元格状态通过tanh(将值规范化到-1和1之间),并将其乘以Sigmoid门的输出,至此我们只输出了我们决定的那些部分。

对于语言模型的例子,由于只看到一个主题,考虑到后面可能出现的词,它可能需要输出与动词相关的信息。 例如,它可能会输出主题是单数还是复数,以便我们知道动词应该如何组合在一起。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
LSTM能够很好地解决梯度离散问题。
在这里插入图片描述

GRU

在这里插入图片描述
GRU比LSTM少了一个门,有reset gate和update gate两个门,效率会更高,结果有时也会更好。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值