一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

这篇具有很好参考价值的文章主要介绍了一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、前言

本文主要译至Understanding LSTM Networks并加上了部分笔者的见解,对于全面理解LSTM有一定的帮助。

1、Recurrent Neural Networks循环神经网络

人类不会每一秒都从头开始思考。
当你阅读这篇文章时,你会根据你对前面单词的理解来理解每个单词。
你不会扔掉所有东西,重新开始思考。
你的思想有坚持。Your thoughts have persistence.

传统的神经网络无法做到这一点,这似乎是一个主要缺点。
例如,假设您想对电影中每一点发生的事件类型进行分类。
目前尚不清楚传统的神经网络如何利用其对电影中先前事件的推理来通知后来的事件。

递归神经网络解决了这个问题。它们是带有循环的网络,允许信息持续存在。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
在上图中,一大块神经网络 A, 查看一些输入 x t x_t xt并输出一个值 h t h_t ht
循环允许信息从网络的一个步骤传递到下一个步骤。

这些循环使递归神经网络看起来有点神秘。
然而,如果你多想想,就会发现它们与普通神经网络并没有什么不同。
循环神经网络可以被认为是同一网络的多个副本,每个副本都将一条消息传递给后继者。
考虑一下如果我们展开循环会发生什么:
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
这种链状性质表明循环神经网络与序列和列表sequences and lists密切相关。
它们是用于此类数据的神经网络的自然架构。

他们肯定被使用了!
在过去的几年里,将 RNN 应用于各种问题取得了令人难以置信的成功:语音识别、语言建模、翻译、图像字幕……这个例子不胜枚举。
关于 RNN 可以实现的惊人壮举,将在 Andrej Karpathy 的优秀博客文章 The Unreasonable Effectiveness of Recurrent Neural Networks中进行讨论。但他们真的很了不起。

这些成功的关键是使用“LSTM”,这是一种非常特殊的递归神经网络,对于许多任务,它比标准版本要好得多。
几乎所有基于递归神经网络的令人兴奋的结果都是用它们实现的。
本文将探讨这些 LSTM。

2、The Problem of Long-Term Dependencies长期依赖的问题

RNN 的吸引力之一是它们可能能够将以前的信息连接到当前的任务,例如使用以前的视频帧可能会告知对当前帧的理解。
如果 RNN 可以做到这一点,它们将非常有用。
但他们可以吗?这要看情况而定。

有时,我们只需要查看最近的信息即可执行当前任务。
例如,考虑一个语言模型试图根据前面的单词预测下一个单词。
如果我们试图预测“the clouds are in the sky”中的最后一个词,我们不需要任何进一步的上下文——很明显下一个词将是 sky。
在这种情况下,相关信息和需要它的地方之间的差距很小,RNN 可以学习使用过去的信息。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
但在某些情况下,我们需要更多上下文。
考虑尝试预测文本“I grew up in France… I speak fluent French.”中的最后一个词。
最近的信息表明,下一个词可能是一种语言的名称,但如果我们想缩小哪种语言的范围,我们需要法国的上下文,从更远的地方。
相关信息和需要它的点之间的差距变得非常大是完全有可能的。

不幸的是,随着差距的扩大,RNN 变得无法学习连接信息。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
理论上,RNN 绝对有能力处理这种“长期依赖”。
人类可以仔细地为他们挑选参数来解决这种形式的玩具问题。
遗憾的是,在实践中,RNN 似乎无法学习它们。
Hochreiter (1991) [German] 和 Bengio 等人 (1994)深入探讨了这个问题,他发现了一些非常根本的原因,为什么这可能很困难。

值得庆幸的是,LSTM 没有这个问题!

3、LSTM Networks

长短期记忆网络——通常简称为“LSTM”——是一种特殊的 RNN,能够学习长期依赖关系。
它们由 Hochreiter & Schmidhuber (1997) 引入,并在后续工作中被许多人改进和推广。
它们在处理大量问题时表现出色,现在被广泛使用。

LSTM 明确设计用于避免长期依赖问题。
长时间记住信息实际上是他们的默认行为,而不是他们努力学习的东西!

所有循环神经网络都具有神经网络重复模块链的形式。
在标准 RNN 中,这个重复模块将具有非常简单的结构,例如单个 tanh 层。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
LSTM 也有这种链状结构,但重复模块有不同的结构。
不是只有一个神经网络层,而是有四个,以一种非常特殊的方式进行交互。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
不要担心正在发生的事情的细节。
稍后我们将逐步介绍 LSTM 图。
现在,让我们尝试熟悉我们将要使用的符号。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
在上图中,每条线都带有一个完整的向量,从一个节点的输出到其他节点的输入。
粉色圆圈代表逐点操作,如向量加法,而黄色框是学习的神经网络层。
行合并表示串联,而行分叉表示其内容被复制并且副本转到不同的位置。

4、The Core Idea Behind LSTMs

LSTM 的关键是细胞状态cell state,即贯穿图表顶部的水平线。

细胞状态有点像传送带。
它直接沿着整个链条运行,只有一些次要的线性交互。
信息很容易原封不动地沿着它流动。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

LSTM 确实有能力删除或添加信息到细胞状态,由称为门的结构仔细调节。

门是一种有选择地让信息通过的方式。
它们由一个 sigmoid 神经网络层和一个逐点乘法运算组成。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

sigmoid 层输出介于 0 和 1 之间的数字,描述应该让多少成分通过。
值为零表示“不让任何东西通过”,而值为 1 表示“让一切都通过!”

LSTM 具有三个这样的门,以保护和控制单元状态cell state。

5、Step-by-Step LSTM Walk Through

LSTM 的第一步是决定我们要从细胞状态中丢弃哪些信息。
该决定由称为“遗忘门层”的sigmoid层做出。
它看着 h t − 1 h_{t−1} ht1 x t x_t xt, 并输出一个介于 0 和1之间的数字对于细胞状态 C t − 1 C_{t−1} Ct1 中的每个数字。
A 1代表“完全保留这个”,而 a 0 代表“彻底抛弃这个”。

让我们回到我们的语言模型示例,它试图根据所有先前的单词预测下一个单词。
在这样的问题中,细胞状态可能包括当前主体的性别,以便可以使用正确的代词。
当我们看到一个新主题时,我们想忘记旧主题的性别。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
下一步是决定我们要在细胞状态中存储哪些新信息。
这有两个部分。
首先,称为“输入门层”的 sigmoid 层决定我们将更新哪些值。
接下来,一个 tanh 层创建一个新候选值向量 C ~ t \tilde{C}_t C~t,可以将其添加到状态。
在下一步中,我们将结合这两者来创建对状态的更新。

在我们的语言模型示例中,我们想要将新主题的性别添加到单元格状态,以替换我们忘记的旧主题。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
现在是更新旧细胞状态 C t − 1 C_{t−1} Ct1 的时候了, 进入新的细胞状态 C t C_t Ct. 前面的步骤已经决定了要做什么,我们只需要实际去做。

我们将旧状态乘以 f t f_t ft,以忘记我们早些时候决定忘记的事情。
然后我们加上 i t ∗ C ~ t i_t * \tilde{C}_t itC~t
这是新的候选值,根据我们决定更新每个状态值的程度进行缩放。

在语言模型的情况下,这是我们实际上要删除有关旧主题性别的信息并添加新信息的地方,正如我们在前面的步骤中所决定的那样。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
最后,我们需要决定要输出什么。
此输出将基于我们的细胞状态,但将是过滤后的版本。
首先,我们运行一个 sigmoid 层,它决定我们要输出细胞状态的哪些部分。
然后,我们把cell state通过tanh(将值推到 −1 和 1之间 ) 并将其乘以 sigmoid 门的输出,这样我们就只输出我们决定输出的部分。

对于语言模型示例,由于它只是看到一个主语,它可能想要输出与动词相关的信息,以防接下来会发生什么。
例如,它可能会输出主语是单数还是复数,这样我们就知道接下来应该将动词变位为什么形式。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

6、Variants on Long Short Term Memory

到目前为止,我所描述的是一个非常普通的 LSTM。
但并不是所有的 LSTM 都和上面的一样。
事实上,似乎几乎每篇涉及 LSTM 的论文都使用略有不同的版本。
差异很小,但值得一提的是其中的一些差异。

由 Gers & Schmidhuber (2000) 引入的一种流行的 LSTM 变体正在添加“窥孔连接”。“peephole connections.”
这意味着我们让门层查看细胞状态。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
上图给所有的门都加了窥视孔,但是很多论文会给一些窥视孔,其他的就不给了。

另一种变体是使用耦合的遗忘门和输入门。
我们不是单独决定要忘记什么以及我们应该向什么添加新信息,而是一起做出这些决定。
我们只会忘记什么时候我们要输入一些东西来代替它。
当我们忘记旧的东西时,我们只会向状态输入新值。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
LSTM 的一个稍微更显着的变化是门控循环单元 (Gated Recurrent Unit, GRU),由 Cho 等人引入(2014)。
它将遗忘门和输入门组合成一个“更新门”。
它还合并了细胞状态和隐藏状态,并做了一些其他的改变。
生成的模型比标准 LSTM 模型更简单,并且越来越受欢迎。
一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】
这些只是一些最著名的 LSTM 变体。
还有很多其他的,比如 Yao 等人的 Depth Gated RNNs(2015)。
还有一些完全不同的方法来解决长期依赖关系,比如 Koutnik 等人的 Clockwork RNNs (2014)。

这些变体中哪个最好?差异重要吗?格雷夫等人 (2015) 对流行的变体进行了很好的比较,发现它们都差不多。 Jozefowicz 等人 (2015) 测试了超过一万个 RNN 架构,发现其中一些在某些任务上比 LSTM 更有效。

7、Conclusion

早些时候,我提到了人们使用 RNN 取得的显著成果。
基本上所有这些都是使用 LSTM 实现的。
对于大多数任务,它们确实工作得更好!

写成一组方程式,LSTM 看起来相当吓人。
希望在本文中逐步介绍它们可以使它们更容易理解。

LSTM 是我们使用 RNN 可以完成的一大步。
人们很自然地会想:是否又迈出了一大步?
研究人员的共同意见是:“是的!还有下一步,那就是attention!”这个想法是让 RNN 的每一步都从一些更大的信息集合中挑选信息来查看。
例如,如果您使用 RNN 创建描述图像的标题,它可能会选择图像的一部分来查看它输出的每个单词。
事实上,徐等人 (2015) 正是这样做的——如果你想探索注意力,这可能是一个有趣的起点!
使用注意力已经取得了许多非常令人兴奋的结果,而且似乎还有更多的结果……

注意力并不是 RNN 研究中唯一令人兴奋的话题。
例如,Kalchbrenner 等人的 Grid LSTM (2015) 似乎非常有前途。
在生成模型中使用 RNN——例如 Gregor 等人 (2015),Chung 等人 (2015),或 Bayer & Osendorfer (2015) – 似乎也很有趣。
过去几年对于递归神经网络来说是一个激动人心的时期,而即将到来的只会更加精彩!文章来源地址https://www.toymoban.com/news/detail-452020.html

到了这里,关于一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RNN 单元:分析 GRU 方程与 LSTM,以及何时选择 RNN 而不是变压器

            深度学习往往感觉像是在雪山上找到自己的道路。拥有坚实的原则会让你对做出决定更有信心。我们都去过那里         在上一篇文章中,我们彻底介绍并检查了 LSTM 单元的各个方面。有人

    2024年02月10日
    浏览(47)
  • 深度学习RNN,GRU,LSTM文本生成解码器的训练损失讲解(附代码)

    以下以GRU为例讲解RNN作为解码器时如何根据用户、商品特征信息 hidden 生成评价。 解码器部分代码如下: 在训练时,解码器会有两个输入:一是编码器提取的用户、商品特征,二是用户对商品的评价。 评价是文字,在训练开始前已经转换成了Token ID, 比如 I love this item , 每个

    2024年04月12日
    浏览(41)
  • 算法项目(2)—— LSTM、RNN、GRU(SE注意力)、卡尔曼轨迹预测

    项目运行的方式(包教会) 项目代码 LSTM、RNN、GRU(SE注意力)、卡尔曼四种算法进行轨迹预测. 各种效果图 运行有问题? csdn上后台随时售后. 本文实现了三种深度学习算法加传统算法卡尔曼滤波进行轨迹预测, 预测效果图 首先看下不同模型的指标: 模型 RMSE LSTM 0.00288479607870

    2024年02月21日
    浏览(39)
  • 基于深度学习的轴承寿命预测实践,开发CNN、融合LSTM/GRU/ATTENTION

    关于轴承相关的项目之前做的大都是故障识别诊断类型的,少有涉及回归预测的,周末的时候宅家发现一个轴承寿命加速实验的数据集就想着拿来做一下寿命预测。 首先看下数据集如下: 直接百度即可搜到,这里就不再赘述了。 Learning_set为训练集 Test_set为测试集 我这里为了

    2024年02月02日
    浏览(48)
  • 增加PyQt5界面的交通流量预测(模型为CNN_GRU,CNN_BiGRU_ATTENTION,LSTM,Python代码)

    1.效果视频:增加PyQt5界面的交通流量预测(模型为CNN_GRU,CNN_BiGRU_ATTENTION,LSTM)_哔哩哔哩_bilibili) 2.三个模型和数据集的介绍 交通流量预测(python代码,压缩包中带有数据,CNN_GRU,CNN_BiGRU_ATTENTION,LSTM三种不同模型,多特征输入,单标签输出,可以替换为其它时序数据集)_交通

    2024年04月28日
    浏览(40)
  • 循环神经网络的变体模型-LSTM、GRU

    长短时记忆网络(Long Short-Term Memory,LSTM)是一种深度学习模型,属于循环神经网络(Recurrent Neural Network,RNN)的一种变体。LSTM的设计旨在解决传统RNN中遇到的长序列依赖问题,以更好地捕捉和处理序列数据中的长期依赖关系。 下面是LSTM的内部结构图 LSTM为了改善梯度消失,

    2024年01月21日
    浏览(37)
  • 【长短时记忆网络(LSTM)和门控循环单元(GRU)】

    长短时记忆网络(LSTM)和门控循环单元(GRU)都是为了解决传统循环神经网络(RNN)在处理长序列数据时遇到的梯度消失问题而设计的。它们通过引入门控机制,有效地保持长期依赖信息,同时避免了梯度在时间反向传播过程中消失的问题。 LSTM通过使用三个门(输入门、遗

    2024年04月09日
    浏览(45)
  • 基于eNSP加防火墙的千人中型校园/企业网络规划与设计(一步一步走)

    有什么问题可以在评论区说明自己遇到的情况,博主看到会第一时间回复,希望其他人也可以回复别人的问题, 。 可根据以下所提供的设计与实现步骤过程一步一步自行实现(每一条命令都是关键的命令);但是如果有需要的也可以根据以下地址进行下载完整的topo图和完整

    2024年02月04日
    浏览(57)
  • Ubuntn 教你如何一步一步在 Ubuntn 上安装Samba服务器详解(看不懂,你怪我)

    目录 一、Ubuntu安装Samba 服务器 二、Samba服务器配置 三、启动和关闭 四、安装完成访问在window界面输入cmd界面输入\\\\ip地址,进去找到share文件输入自己设置的密码

    2024年01月23日
    浏览(40)
  • 基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 LSTM:     GRU     matlab2022a         门控循环单元(Gated Recurrent Unit,简称GRU)是一种用于序列建模和预测的递归神经网络(RNN)变体。GRU通过引入门控机制,克服了传统RNN在处

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包