LSTM神经网络详解

LSTM神经网络详解LSTM 长短时记忆网络 LongShortTer LSTM 是一种改进之后的循环神经网络 可以解决 RNN 无法处理长距离的依赖的问题 目前比较流行 长短时记忆网络的思路 原始 RNN 的隐藏层只有一个状态 即 h 它对于短期的输入非常敏感 再增加一个状态 即 c 让它来保存长期的状态 称为单元状态 cellstate 按照上面时间维度展开 在 t 时刻 LSTM 的输入有三个 当前时刻网络的输入值 X t 上一时刻 LSTM 的输出值 h t 1 以及上

LSTM

长短时记忆网络(Long Short Term Memory Network, LSTM),是一种改进之后的循环神经网络,可以解决RNN无法处理长距离的依赖的问题,目前比较流行。

长短时记忆网络的思路:

在这里插入图片描述
按照上面时间维度展开:
在这里插入图片描述
在 t 时刻,LSTM 的输入有三个:当前时刻网络的输入值 X_t、上一时刻 LSTM 的输出值 h_t-1、以及上一时刻的单元状态 C_t-1;
LSTM 的输出有两个:当前时刻 LSTM 输出值 h_t、和当前时刻的单元状态 C_t.



关键问题是:怎样控制长期状态 c ?

如何在算法中实现这三个开关?

方法:用 门(gate)

方法:用门的输出向量按元素乘以我们需要控制的那个向量
原理:门的输出是 0到1 之间的实数向量,当门输出为 0 时,任何向量与之相乘都会得到 0 向量,这就相当于什么都不能通过;
输出为 1 时,任何向量与之相乘都不会有任何改变,这就相当于什么都可以通过。

LSTM 的前向计算

一共有 6 个公式

遗忘门(forget gate)
它决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t

输入门(input gate)
它决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t

输出门(output gate)
控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t

LSTM 的反向传播训练算法

主要有三步:

1. 前向计算每个神经元的输出值,一共有 5 个变量,计算方法就是前一部分:
在这里插入图片描述
2. 反向计算每个神经元的误差项值。与 RNN 一样,LSTM 误差项的反向传播也是包括两个方向:
一个是沿时间的反向传播,即从当前 t 时刻开始,计算每个时刻的误差项;
一个是将误差项向上一层传播。



3. 根据相应的误差项,计算每个权重的梯度。

接着就来求两个方向的误差,和一个梯度计算。

1.误差项沿时间的反向传递:

定义 t 时刻的误差项:
在这里插入图片描述
目的是要计算出 t-1 时刻的误差项:
在这里插入图片描述
利用 h_t c_t 的定义,和全导数公式,可以得到 将误差项向前传递到任意k时刻的公式:
在这里插入图片描述




2. 将误差项传递到上一层的公式:

在这里插入图片描述

3. 权重梯度的计算:

在这里插入图片描述
以上就是 LSTM 的训练算法的全部公式。

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

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

(0)
上一篇 2026年3月19日 上午11:13
下一篇 2026年3月19日 上午11:13


相关推荐

  • notepad++正则表达式替换字符串

    notepad++正则表达式替换字符串则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率。EditPlus的查找,替换,文件中查找支持以下的正则表达式:表达式说明/t制表符./n新行..匹配任意字符.|匹配表达式左边和右边的字符.例如,”ab|bc”匹配”ab”或者”bc”….

    2022年5月17日
    46
  • CPU重要参数_cpu性能参数指标有哪些

    CPU重要参数_cpu性能参数指标有哪些内容来自http://www.360doc.com/content/18/1124/15/60810319_796935567.shtmlCPU有几个重要的参数:主频、核心、线程、缓存、架构。那么他

    2022年8月2日
    13
  • windows下CUDA的卸载以及安装

    windows下CUDA的卸载以及安装参考博客windows7下cuda9.0卸载、cuda8.0安装一、前言对于一个刚玩CUDA菜鸟来说,安装问题就是一个巨大的坑,安装过程里面有很多需要注意的细节,很多自定义的选项,如果漏选,对编译GPU版本的Caffe会出现一些莫名奇妙的问题。为此,会经常出现卸载CUDA,再安装CUDA的问题,所以对于CUDA的卸载与安装就会有一些注意事项,现在总结一下。二、…

    2026年2月23日
    5
  • JAVA 解析Xml字符串

    JAVA 解析Xml字符串JAVA解析Xml字符串(dom4j)

    2022年5月4日
    57
  • SQL语句增加字段、修改字段、修改类型、修改默认值[通俗易懂]

    SQL语句增加字段、修改字段、修改类型、修改默认值[通俗易懂]–一、修改字段默认值altertable表名dropconstraint约束名字——说明:删除表的字段的原有约束altertable表名addconstraint约束名字DEFAULT默认值for字段名称——-说明:添加一个表的字段的约束并指定默认值–二、修改字段名:altertable表名renamecolumn…

    2022年5月21日
    56
  • HDU 2544 最短路 SPFA 邻接表 模板

    HDU 2544 最短路 SPFA 邻接表 模板

    2021年12月15日
    36

发表回复

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

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