Long Short-Term Memory

这篇论文总结的太抽象了,只是翻译了一遍。
(我太笨了,如果把这个当我的入门读物,我觉着会把我折磨坏)

递归神经网络的一个重要优点是它们在映射输入和输出序列时使用上下文信息的能力。不幸的是,对于标准的RNN体系结构,实际可以访问的上下文范围非常有限。问题是,给定输入对隐藏层的影响,以及对网络输出的影响,在围绕网络的循环连接循环时,要么衰减,要么呈指数增长。这种效应在文献中通常被称为梯度消失问题(Hochreiter, 1991;Hochreiter et al., 2001;Bengio et al., 1994)。梯度消失问题如图4.1所示


图4.1 rnn的梯度消失问题。
未展开网络中节点的阴影表示它们在时刻1时对输入的灵敏度(阴影越深,灵敏度越高)。随着新的输入覆盖隐藏层的激活,灵敏度随着时间的推移而衰减,并且网络“忘记”了第一个输入。

在20世纪90年代,人们做了许多尝试来解决rnn的梯度消失问题。其中包括非梯度训练算法,如模拟退火和离散误差传播(Bengio et al., 1994),明确引入了时间延迟(Lang et al., 1990;Lin et al., 1996;Plate, 1993)或时间常数(Mozer, 1992),以及分层序列压缩(Schmidhuber, 1992)。本书推崇的方法是长短期记忆(LSTM)架构(Hochreiter和Schmidhuber, 1997)。

本章回顾LSTM的背景资料。第4.1节描述了LSTM的基本结构,并解释了它如何处理梯度消失问题。第4.3节讨论了计算LSTM误差梯度的近似和精确算法。第4.4节描述了对基本LSTM体系结构的一些增强。第4.2节讨论了预处理对远程依赖关系的影响。第4.6节提供了训练和应用LSTM网络所需的所有方程。

4.1 网络结构

LSTM体系结构由一组循环连接的子网(称为内存块)组成。这些块可以被认为是数字计算机中存储芯片的可微分版本。每个块包含一个或多个自连接的存储单元和三个乘法单元,输入、输出和遗忘门——为单元提供连续的类似的写、读和复位操作。

图4.2提供了一个LSTM内存块与单个单元的示例。LSTM网络与标准RNN相同,只是隐藏层中的求和单元被存储块取代,如图4.3所示。 LSTM块也可以与普通的求和单元混合使用,尽管这通常是不必要的。LSTM网络可以使用与标准rnn相同的输出层。


图4.2 单元LSTM内存块。
这三个门是非线性的求和单元,收集来自内部和外部块的激活,并通过乘法(小黑色圆圈)控制细胞的激活。输入和输出门将细胞的输入和输出相乘,而遗忘门将细胞的先前状态相乘。在单元格内不应用任何激活函数。门激活函数' f '通常是逻辑s型,因此门激活在0(门关闭)和1(门打开)之间。单元输入和输出激活函数(' g '和' h ')通常是tanh或逻辑s型,尽管在某些情况下' h '是恒等函数。从细胞到门的加权“窥视孔”连接用虚线表示。块内的所有其他连接都是未加权的(或者等价地,具有固定的权重1.0)。从区块到网络其余部分的唯一输出来自输出门乘法。


图4.3 LSTM网络。(抽象=_=)
该网络由四个输入单元、两个单细胞LSTM存储块的隐藏层和五个输出单元组成。并不是所有的连接都显示出来。注意,每个块有四个输入,但只有一个输出。

这是12年的论文,感觉现在的表现形式更加清晰易懂

首先LSTM有两个状态,c^t,h^t 

c^t 变化的比较慢

h^t 变化的比较快

那除了变化快慢还有什么区别呢

在了解 c^t,h^t  区别之前先了解一下两个输入和四个激活状态

两个输入: h^{t-1}, x^{t}

四个激活状态包括3个sigmiod还有一个tanh,3个sigmoid表示不同的门,tanh表示输入的激活状态

三个门都有:

遗忘门: z^f=\sigma (w^f[x^t,h^{t-1}]+b^f)

记忆门: z^i=\sigma (w^i[x^t,h^{t-1}]+b^i)

输出门:z^o=\sigma (w^o[x^t,h^{t-1}]+b^o)

输入的激活状态:

        z=tanh(w[x^t,h^{t-1}]+b)

然后就是利用得到的这4个状态求  c^t,h^t 

首先由 c^{t-1} 得到 c^t

        c^t=z^f c^{t-1}+z^i z

        这一步的意思就是忘记之前不重要的,记住当前输入重要的

再由 c^t 得到 h^{t}

        h^t=z^otanh(c^t)

 LSTM中的激活函数包括sigmiod和tanh,为什么不使用一个激活函数呢

sigmoid的使用是作为一个门的作用,他的取值是0-1,可以根据数据的重要性给予数值,这个无法代替,但是tanh就是一个简单的激活函数可以使用其他的激活函数代替。

乘法门允许LSTM存储单元长时间存储和访问信息,从而减轻了梯度消失的问题。例如,只要输入门保持关闭(即具有接近0的激活),单元的激活将不会被到达网络的新输入覆盖,因此可以通过打开输出门在序列的较晚时间内对网络可用。LSTM对梯度信息随时间的保存如图4.4所示。


图4.4 LSTM对梯度信息的保存。
如图4.1所示,节点的阴影表示它们在时刻1时对输入的敏感性;在这种情况下,黑色节点是最敏感的,而白色节点是完全不敏感的。输入门、遗忘门和输出门的状态分别显示在隐藏层的下方、左侧和上方。为简单起见,所有的门要么完全打开(' O '),要么完全关闭(' - ')。只要遗忘门打开,输入门关闭,记忆细胞就会“记住”第一个输入。输出层的灵敏度可以通过输出门打开和关闭而不影响电池。

在过去的十年中,LSTM在一系列需要远程记忆的合成任务中被证明是成功的,包括学习无上下文语言(Gers和Schmidhuber, 2001),在扩展的噪声序列上回忆高精度实数(Hochreiter和Schmidhuber, 1997)以及各种需要精确计时和计数的任务(Gers等,2002)。特别是,它解决了其他任何RNN架构都无法解决的几个人为问题。

此外,LSTM已应用于各种现实问题,如蛋白质二级结构预测(Hochreiter et al., 2007;Chen and Chaudhari, 2005),音乐生成(Eck and Schmidhuber, 2002),强化学习(Bakker, 2002),语音识别(Graves and Schmidhuber, 2005);Graves et al., 2006)和手写识别(Liwicki et al., 2007;Graves et al., 2008)。正如预期的那样,它的优势在需要使用远距离上下文信息的问题上最为明显。

4.2 预处理的影响

上述讨论提出了预处理影响的重要观点。如果我们能找到一种方法,在将包含长范围上下文依赖关系的任务呈现给序列学习算法之前,将其转换为只包含短范围依赖关系的任务,那么LSTM等架构就会变得有些多余。例如,原始语音信号通常具有超过40khz的采样率。显然,序列学习算法需要跨越大量的时间步,才能对以这种形式呈现的话语进行标记或建模。然而,当信号首先转换为100hz的梅尔频率倒谱系数序列时,使用上下文范围相对较短的算法(如隐马尔可夫模型)对数据进行建模就变得可行了。

尽管如此,如果这样的转换是困难的或未知的,或者如果我们只是希望得到一个好的结果而不必设计特定于任务的预处理方法,那么能够处理长时间依赖性的算法是必不可少的。

 4.3 梯度计算

与上一章讨论的网络一样,LSTM是一个可微函数逼近器,通常使用梯度下降进行训练。最近,LSTM的非梯度训练方法也被考虑(Wierstra et al., 2005;Schmidhuber et al., 2007),但它们超出了本书的范围

最初的LSTM训练算法(Hochreiter和Schmidhuber, 1997)使用了一个近似的误差梯度,结合了实时循环学习(RTRL;Robinson and Fallside, 1987)和时间反向传播(BPTT;Williams and Zipser, 1995)。BPTT部分在一个时间步后被截断,因为人们认为长时间依赖性将由记忆块处理,而不是由循环连接周围的(消失的)激活流处理。截断梯度的好处是使算法完全在线,因为可以在每个时间步之后进行权重更新。对于连续控制或时间序列预测等任务来说,这是一个重要的特性。

然而,也可以使用未截断的BPTT计算精确的LSTM梯度(Graves和Schmidhuber, 2005b)。除了比截断梯度更精确外,精确梯度还具有更容易调试的优点,因为它可以使用第3.1.4.1节中描述的技术进行数值检查。本书中只使用了精确梯度,其公式在第4.6节中提供。

4.4 架构变体

在其原始形式中,LSTM只包含输入门和输出门。遗忘门(Gers et al., 2000),以及附加的窥视孔权重(Gers et al., 2002),将这些门连接到记忆单元,然后添加到扩展的LSTM中(Gers, 2001)。遗忘门的目的是为记忆细胞提供一种自我重置的方式,这对于需要网络“忘记”之前输入的任务很重要。与此同时,窥视孔连接提高了LSTM学习需要精确计时和计算内部状态的任务的能力。

由于LSTM完全由简单的乘法和求和单元以及它们之间的连接组成,因此可以直接创建块体系结构的进一步变体。事实上,研究表明,在诸如学习上下文无关语言和上下文敏感语言等玩具问题上具有同样良好性能的替代结构可以自动进化(Bayer et al., 2009)。然而,标准扩展形式似乎是序列标记的良好通用结构,并且在本书中专门使用。

4.5 双向长短期记忆

在双向递归神经网络(第3.2.4节)中使用LSTM作为网络架构可以得到双向LSTM (Graves and Schmidhuber, 2005 5a,b;Chen and Chaudhari, 2005;Thireou and Reczko, 2007)。双向LSTM在两个输入方向上都提供了对长范围上下文的访问,并将在后面的章节中广泛使用。

4.6 网络方程

本节提供了递归神经网络中LSTM隐藏层的激活(正向传递)和BPTT梯度计算(反向传递)的方程。

和前面一样,wij是从单元i到单元j的连接的权值,在t时刻网络对单元j的输入记为j,单元j在t时刻的激活记为bt j。LSTM方程仅针对单个内存块给出。对于多个区块,计算只是以任意顺序对每个区块重复。下标ι、φ、ω分别表示该模块的输入门、遗忘门、输出门。下标c表示一个c存储单元。从cell c到输入门、遗忘门和输出门的窥视孔权重分别记为wci、wcφ和wcω。St c是细胞c在时刻t的状态(即线性细胞单元的激活)。F是门的激活函数,g和h分别是细胞输入和输出的激活函数。

设I是输入的个数,K是输出的个数H是隐藏层的单元个数。请注意,只有c单元输出连接到层中的其他块。其他LSTM激活,例如状态、单元输入或门激活,仅在块中可见。我们使用索引h来引用隐藏层中其他块的单元输出,与标准隐藏单元完全相同。与标准rnn一样,对于长度为T的输入序列x,前向传递是通过从T = 1开始,递归地应用更新方程,同时增加T来计算的,BPTT后向传递是通过从T = T开始,递归地计算单位导数,同时将T减少到1来计算的(详细信息参见3.2节)。最终的权重导数是通过对每个时间步长的导数求和得到的,用Eqn表示。(3.35)。

在向前和向后传递过程中计算方程的顺序很重要,并应按照下面指定的顺序进行。与标准rnn一样,所有状态和激活在t =0时初始化为零,并且在t = T+1时所有δ项都为零 


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/409061.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chainlit接入FastGpt接口完美对接,实现全新的用户聊天界面

前言 由于fastgpt只提供了一个分享用的网页应用,网页访问地址没法自定义,虽然可以接入NextWeb/ChatGPT web等开源应用。但是如果我们想直接给客户应用,还需要客户去设置配置,里面还有很多我们不想展示给客户的东西怎么办&#xf…

[数据集][目标检测]街灯路灯检测数据集VOC+YOLO格式1893张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1893 标注数量(xml文件个数):1893 标注数量(txt文件个数):1893 标注…

数据结构(Java实现):链表习题

文章目录 1. 题目列表及链接2. 题目解析及代码2.1 删除链表中等于给定值 val 的所有节点2.2 反转一个单链表2.3 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点2.4 输入一个链表,输出该…

iTransformer时序模型改进——基于SENet和TCN的倒置Transformer,性能暴涨

1数据集介绍 ETT(电变压器温度):由两个小时级数据集(ETTh)和两个 15 分钟级数据集(ETTm)组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 数据集链接: https…

深度学习入门-第4章-神经网络的学习

学习就是从训练数据中自动获取最优权重参数的过程。引入损失函数这一指标,学习的目的是找出使损失函数达到最小的权重参数。使用函数斜率的梯度法来找这个最小值。 人工智能有两派,一派认为实现人工智能必须用逻辑和符号系统,自顶向下看问题…

Sass实现网页背景主题切换

Sass 实现网页背景主题切换 前言准备工作一、 简单的两种主题黑白切换1.定义主题2. 添加主题切换功能3. 修改 data-theme 属性 二、多种主题切换1. 定义主题2. 动态生成 CSS 变量1.遍历列表2.遍历映射3.高级用法 3. 设置默认主题4. 切换功能HTML 三、多种主题多种样式切换1. 定…

Java数组的定义与使用

目录 1. 数组的基本概念 1.1为什么要使用数组 1.2 什么是数组 1.3 数组的创建及初始化 1.3.1 数组的创建 1.3.2 数组的初始化 1. 动态初始化 2. 静态初始化 1.4 数组的使用 1.4.1 数组中元素访问 1.4.2 遍历数组 2. 数组是引用类型 2.1 基本类型变量与引用类型变量…

【C++从小白到大牛】C++智能指针的使用、原理和分类

目录 1、我们为什么需要智能指针? 2、内存泄露 2.1 什么是内存泄漏,内存泄漏的危害 2.2如何避免内存泄漏 总结一下: 3.智能指针的使用及原理 3.1 RAII 3.2关于深拷贝和浅拷贝更深层次的理解: 3.3 std::auto_ptr 3.4 std::unique_pt…

Springboot里集成Mybatis-plus、ClickHouse

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 Springboot里集成Mybati…

Overleaf参考文献由 BibTex 转 \bibitem 格式

目录 Overleaf参考文献由 BibTex 转 \bibitem 格式一、获取引用论文的BibTex二、编写引用论文对应的bib文件三、编写生成bibitem的tex文件四、转化bibitem格式 参考资料 Overleaf参考文献由 BibTex 转 \bibitem 格式 一、获取引用论文的BibTex 搜索论文引用点击BibTex 跳转出…

怎样快速搭建 Linux 虚拟机呢?(vagrant 篇)

作为一名Coder(程序员或码农),供职于中小型互联网公司,而你恰恰偏向于服务端,那么,产品部署在生产环境的艰巨任务,便毫无疑问的落在你身上了。 只有大厂(大型互联网)企业…

Ps:首选项 - 界面

Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K Photoshop 首选项中的“界面” Interface选项卡可以定制 Photoshop 的界面外观和行为,从而创建一个最适合自己工作习惯和需求的工作环境。这些设置有助于提高工作效率,减轻眼…

Simple RPC - 07 从零开始设计一个服务端(下)_RPC服务的实现

文章目录 PreRPC服务实现服务注册请求处理 设计: 请求分发机制 Pre Simple RPC - 01 框架原理及总体架构初探 Simple RPC - 02 通用高性能序列化和反序列化设计与实现 Simple RPC - 03 借助Netty实现异步网络通信 Simple RPC - 04 从零开始设计一个客户端&#…

# 利刃出鞘_Tomcat 核心原理解析(九)-- Tomcat 安全

利刃出鞘_Tomcat 核心原理解析(九)-- Tomcat 安全 一、Tomcat专题 - Tomcat安全 - 配置安全 1、 删除 tomcat 的 webapps 目录下的所有文件,禁用 tomcat 管理界面. 如下目录均可删除: D:\java-test\apache-tomcat-8.5.42-wind…

数据结构-KMP算法

先解决 前缀与后缀串的最长匹配长度信息(前缀或后缀都不能取整体)。如下 位置6的前缀最长串就是abcab(不能取全部,即不能为abcabc) 位置6的后缀最长串就是bcabc(不能取全部,即不能为abcabc)

[Linux#47][网络] 网络协议 | TCP/IP模型 | 以太网通信

目录 1.网络协议 2.协议分层 2.1 OSI七层模型 2.2TCP/IP五层(四层)模型 2.3 以太网通信 1.网络协议 "协议"本质就是一种约定 计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的 信息. 要想传递各种不同…

HTML+CSS浮动和清除浮动的效果及其应用场景举例

一、清除浮动的效果 解释 .container:用于展示浮动和清除浮动效果的容器,具有边框和背景色以便于区分。 .float-box:浮动元素,用不同的背景色标识。 .clearfix:使用伪元素清除浮动的类,应用于第二个容器。 …

IDEA 2024.2.0.2 使用 Jrebel and XRebel 热部署

安装 激活 工具网站中url和邮箱复制进去 设置 允许项目自动构建 允许开发过程中自动部署

python面向对象—封装、继承、多态

封装 ① 把现实世界中的主体中的属性和方法书写到类的里面的操作即为封装 ② 封装可以为属性和方法添加为私有权限,不能直接被外部访问 在面向对象代码中,我们可以把属性和方法分为两大类:公有(属性、方法)、私有&…

SQLSugar进阶使用:高级查询与性能优化

文章目录 前言一、高级查询1.查所有2.查询总数3.按条件查询4.动态OR查询5.查前几条6.设置新表名7.分页查询8.排序 OrderBy9.联表查询10.动态表达式11.原生 Sql 操作 ,Sql和存储过程 二、性能优化1.二级缓存2.批量操作3.异步操作4.分表组件,自动分表5.查询…