LSTM模型介绍

LSTM模型介绍递归神经网络(RNN)人类不会每时每刻都开始思考。当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词。你不会忘掉掉所有东西,然后再从头开始思考。你的想法有持久性。传统的神经网络不能做到这一点,这是一个主要的缺点。例如,假设您想要对电影视频中每个点发生的事件进行分类。目前尚传统神经网络无法利用其对电影中先前事件的推理来预测后者。循环神经网络解决了这个问题。它们是带有循环的…


Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

递归神经网络(RNN)

人类不会每时每刻都开始思考。 当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词。 你不会忘掉掉所有东西,然后再从头开始思考。 你的想法有持久性。

传统的神经网络不能做到这一点,这是一个主要的缺点。 例如,假设您想要对电影视频中每个点发生的事件进行分类。 目前尚传统神经网络无法利用其对电影中先前事件的推理来预测后者。

循环神经网络解决了这个问题。 它们是带有循环的网络,允许信息持续存在。

在这里插入图片描述
在上图中,一块神经网络A查看一些输入xt并输出一个值ht。 循环允许信息从网络的一个步骤传递到下一个步骤。

这些循环使得循环神经网络看起来有点神秘。 但是,如果你多想一点,事实证明它们与普通的神经网络并没有什么不同。 可以将循环神经网络视为同一网络的多个副本,每个副本都将消息传递给后继者。 考虑如果我们展开循环会发生什么:

在这里插入图片描述
这种类似链的性质表明,递归神经网络与序列和列表密切相关。 它们是用于此类数据的神经网络的自然架构。

在过去几年中,将RNN应用于各种问题取得了令人难以置信的成功:语音识别,语言建模,翻译,图像字幕…这个列表还在继续增加。

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

LSTM 网络

长短期记忆网络 – 通常只称为“LSTM” – 是一种特殊的RNN,能够学习长期的规律。 它们是由Hochreiter&Schmidhuber(1997)首先提出的,并且在后来的工作中被许多人精炼和推广。他们在各种各样的问题上应用得非常好,现在被广泛的使用。

LSTM明确旨在避免长期依赖性的问题。 长时间记住信息实际上是他们的默认行为,而不是他们难以学习的东西!

所有递归神经网络都具有神经网络重复模块链的形式。 在标准RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。
在这里插入图片描述
LSTM也具有这种类似链的结构,但重复模块具有不同的结构。 有四个,而不是一个神经网络层,如下图所示。
在这里插入图片描述
我们将逐步介绍LSTM图。 现在,让我们来介绍所使用的符号。
在这里插入图片描述
在上图中,每箭头都携带一个向量,从上一个节点的输出到其他节点的输入。 粉色圆圈表示逐点运算,如矢量加法,而黄色框表示神经网络层。 箭头合并表示连接,而箭头分叉表示其内容被复制,副本将转移到不同的位置。

LSTM背后的核心理念

LSTM的关键是单元状态,水平线贯穿图的顶部。
有些像传送带。 它直接沿着整个链运行,只有一些次要的线性交互。 信息很容易沿着它不变地流动。
在这里插入图片描述
LSTM能够移除或添加信息到结点来改变信息流状态,由称为门(gate)的结构精心调节。
门是一种可选择通过信息的节点。 它们由西格玛(Sigmoid)神经网络层和逐点乘法运算组成。
在这里插入图片描述
sigmoid层输出0到1之间的数字,描述每个信息向量应该通过多少。 值为零意味着“不让任何东西通过”,而值为1则意味着“让一切都通过!”

LSTM具有三个这样的门,用于保护和控制信息流向量状态。

LSTM 详细介绍

我们的LSTM的第一步是确定我们将从节点状态中丢弃哪些信息。 该判定由称为“遗忘门层”的西格玛(Sigmoid)层决定。它查看ht-1和xt,并为单元状态Ct-1中的每个数字输出0到1之间的数字。 1代表“完全保持这个”,而0代表“完全摆脱这个”。

让我们回到语言模型示例,试图根据以前的所有单词预测下一个单词。 在这样的问题中,节点状态可能包括当前受试者的性别,因此可以使用正确的代词。 当我们看到一个新主题时,我们想要忘记旧主题的性别。

在这里插入图片描述
下一步是确定我们将在单元节点状态中存储哪些新信息。 这有两个部分。 首先,称为“输入门层”的sigmoid层决定我们将更新哪些值。 接下来,tanh层创建可以添加到状态的新候选值C~t的向量。 在下一步中,我们将结合这两个来创建状态更新。

在我们语言模型的例子中,我们想要将新主题的性别添加到单元格状态,以替换我们忘记的旧主题。
在这里插入图片描述
现在是时候将旧的单元状态Ct-1更新为新的单元状态Ct。 之前的步骤已经决定要做什么,我们只需要实际做到这一点。
我们将旧状态乘以ft,忘记我们之前决定忘记的事情。 然后我们添加* C~t。 这是新的候选值,根据我们决定更新每个状态的值来缩放。

在语言模型的情况下,我们实际上放弃了关于旧主题的性别的信息并添加新信息,正如我们在前面的步骤中所做的那样。
在这里插入图片描述
最后,我们需要决定我们要输出的内容。 此输出将基于我们的单元状态,但将是过滤版本。 首先,我们运行一个sigmoid层,它决定我们要输出的单元状态的哪些部分。 然后,我们将单元状态置于tanh(将值推到介于-1和1之间)并将其乘以sigmoid门的输出,以便我们只输出我们决定的部分。

对于语言模型示例,由于它只是看到一个主题,它可能想要输出与动词相关的信息,以防接下来会发生什么。 例如,它可能输出主语是单数还是复数,以便我们知道动词应该与什么形式共轭,如果接下来的话。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195072.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 用python做的网站_有趣的python爬虫案例

    用python做的网站_有趣的python爬虫案例项目地址:https://github.com/rwv/chinese-dos-games-webgit克隆地址:gitclonehttps://github.co…

    2022年10月28日
  • 圆周率两千万亿位_圆周率后3000万亿位

    圆周率两千万亿位_圆周率后3000万亿位网友一:对于我们日常生活应用来说,π=3.14就够用了,这就是小学毕业的要求。如果是工程上用,π=3.1415927也足够用了,也就是计算器的精度。那么如果继续计算圆周率,到100位、1万位,其实已经不是实用价值,而是数学研究价值了。1,信念,验证无限不循环π肯定是无限不循环的,不需要验证了。但是,作为数学的信念,我们就想验证一下。这种信念不仅仅在数学家中有,在其他学科领域、行业领域也有。2,研究…

    2022年9月12日
  • Pycharm中安装Pygame方法「建议收藏」

    Pycharm中安装Pygame方法「建议收藏」本文转自:https://blog.csdn.net/zhangffyy/article/details/78524592第一步:打开Pycharm第二步:点File->DefaultSettings->ProjectInterpreter->点加号第三步:搜索Pygame->InstallPackage然后就安装好了,新建一个p

    2022年8月29日
  • OpenCV-Python (Sobel算子)[通俗易懂]

    OpenCV-Python (Sobel算子)[通俗易懂]Sobel算子Sobel算子的基本概念Sobel算子是一个主要用于边缘检测的离散微分算子(discretedifferentiationoperator)。它结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度。在图像的任意一点使用此算子,都将会产生对应的梯度矢量或是其法矢量。原型Sobel算子依然是一种过滤器,只是其是带有方向的。在OpenCV-Pyt…

    2022年7月14日
  • python表白代码,照片隐藏表白话语

    python表白代码,照片隐藏表白话语最近天气好冷,感觉整个人都是冰冰的!程序员如何用python“表白”自己的女神呢?一、具体过程1、代码思路先用cv2中的imread方法读取冰冰的照片,再用PIL的Image方法创建一个相同大小的图像(初始填充白色),最后在图片上每一个块加字。2、python完整代码#-*-coding:utf-8-*-fromPILimportImage,ImageDraw,ImageFontimp

    2022年5月5日
  • sql的嵌套查询_sql子查询嵌套优化

    sql的嵌套查询_sql子查询嵌套优化最近在做各类小应用,用到了MYSQL,有时候会用到一些比较复杂的嵌套查询,在研究怎么通过SQL实现这些。假设下面这张表(stu)描述学生的基本信息:idnamegrade1Jim72Tom83Cake9………另外一张表(sco)描述学生的成绩信息:stu_idsubjectscore1

    2022年8月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号