深入理解LSTM神经网络

深入理解LSTM神经网络LSTM 核心思想及详细解读

本文内容及图片主要参考:Understanding LSTM Networks

LSTM核心思想

LSTM最早由 Hochreiter & Schmidhuber 在1997年提出,设计初衷是希望能够解决神经网络中的长期依赖问题,让记住长期信息成为神经网络的默认行为,而不是需要很大力气才能学会。

LSTM记忆单元

LSTM-RNN展开图

图例

下面是对LSTM单元内各部分的理解:

LSTM通过“门”(gate)来控制丢弃或者增加信息,从而实现遗忘或记忆的功能。“门”是一种使信息选择性通过的结构,由一个sigmoid函数和一个点乘操作组成。sigmoid函数的输出值在[0,1]区间,0代表完全丢弃,1代表完全通过。一个LSTM单元有三个这样的门,分别是遗忘门(forget gate)、输入门(input gate)、输出门(output gate)

门(gate)

  • 遗忘门(forget gate):遗忘门是以上一单元的输出 ht1 和本单元的输入 xt 为输入的sigmoid函数,为 Ct1 中的每一项产生一个在[0,1]内的值,来控制上一单元状态被遗忘的程度。
    遗忘门(forget gate)
  • 输入门(input gate):输入门和一个 tanh 函数配合控制有哪些新信息被加入。 tanh 函数产生一个新的候选向量 Ct~ ,输入门为 Ct~ 中的每一项产生一个在[0,1]内的值,控制新信息被加入的多少。至此,我们已经有了遗忘门的输出 ft ,用来控制上一单元被遗忘的程度,也有了输入门的输出 it ,用来控制新信息被加入的多少,我们就可以更新本记忆单元的单元状态了,
    Ct=ftCt1+itCt~


    输入门(input gate)

  • 输出门(output gate):输出门用来控制当前的单元状态有多少被过滤掉。先将单元状态激活,输出门为其中每一项产生一个在[0,1]内的值,控制单元状态被过滤的程度。
    这里写图片描述

LSTM变种

上面描述的LSTM是一种标准版本,并不是所有LSTM都和上面描述的一模一样。事实上,似乎每篇论文用到的LSTM都有一点细微的不同。

一种比较流行的LSTM变种如下图所示,最早由Gers & Schmidhuber在2000年提出。这种方法增加了“peephole connections”,即每个门都可以“窥探”到单元状态。这里,遗忘门和输入门是与上一单元状态建立连接,而输出门是与当前单元状态建立连接。
这里写图片描述

另外一个值得关注的变种看起来很好玩,叫做Gated Recurrent Unit(GRU),最早由Cho, et al.在2014年提出。这种方法将遗忘门和输入门连入了一个“更新门”(update gate),同时也合并了隐藏状态 ht 和单元状态 Ct ,最终的结果比标准LSTM简单一些。

当然,变种有很多,是列不过来的。有人专门比较总结过LSTM的变种,并比较了其效果,结果显示这些变种表现差不多,具体参见Greff, et al. (2015)及Jozefowicz, et al. (2015)。

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

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

(0)
上一篇 2026年3月17日 下午6:32
下一篇 2026年3月17日 下午6:32


相关推荐

  • Android Animation:这一次让你彻底了解 Android Frame Animation「建议收藏」

    Android Animation:这一次让你彻底了解 Android Frame Animation「建议收藏」Android Animation:这一次让你彻底了解 Android Frame Animation

    2022年4月21日
    42
  • Java高级工程师常见面试题(一)-Java基础「建议收藏」

    Java高级工程师常见面试题(一)-Java基础「建议收藏」博主其他相关文章:《Java高级工程师常见面试题-总结》1.String类为什么是final的。多线程安全,将字符串对象保存在字符串常量池中共享效率高2.HashMap的源码,实现原理,底层结构。HashMap基于哈希表的Map接口的实现。允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。值得注意的是HashMap不是线程安全的…

    2022年5月27日
    37
  • 2年开发经验总结的java面试题(有完整答案)

    2年开发经验总结的java面试题(有完整答案)一、Java基础部分1、Java基本数据类型有八种:四种整数类型(byte、short、int、long),两种浮点数类型(double、float)一种字符类型char,一种布尔类型Boolean记忆:8位:Byte(字节型)16位:short(短整型)、char(字符型)32位:int(整…

    2022年6月18日
    54
  • JAVA 换行输出的五种方法

    JAVA 换行输出的五种方法1 在输出后面加 nSystem out print 王先生 n 2 n System out print 王先生 n 3 格式化输出类型后面加 nSystem out print amp s n 王先生 4 格式化输出类型 nSystem out print s n 王先生 5 println 相当于 print n n 即另起一行输出对应的参数

    2026年3月19日
    2
  • 跟我一起写Makefile(整理版)

    跟我一起写Makefile(整理版)跟我一起写Makefile陈皓(博客地址:http://blog.csdn.net/haoel/article/details/2886)整理的PDF文件:http://download.csdn.net/download/xiaoshuai537/102620891.makefile很重要什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为…

    2022年5月15日
    32
  • Errors were encountered while processing 解决方法

    Errors were encountered while processing 解决方法在执行更新或者安装软件命令时 sudoapt getupgradesu getinstall 遇到 Errorswereen 查看错误信息发现 notfullyinst 解决方法 cd var lib dpkgsudomvin baksudomkdir

    2026年3月18日
    1

发表回复

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

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