LSTM-理解 Part-3(LSTM Networks)

news2024/11/23 23:48:51

之前博客中有涉及前两部分的介绍:
第一部分LSTM-理解 Part-1(RNN:循环神经网络)
第二部分LSTM-理解 Part-2(RNN的局限性)
这是其中的第三部分,讲解 LSTM Networks。

LSTM Networks

长短期记忆网络(Long Short Term Memory networks)

长短期记忆网络(Long Short Term Memory networks),通常简称为“LSTM”,是一种特殊的循环神经网络,能够学习长期依赖关系。它们由Hochreiter和Schmidhuber于1997年提出,并在后续工作中得到了许多人的改进和普及。它们在各种问题上表现出色,现在被广泛使用。

LSTM明确设计为避免长期依赖问题。记住信息长时间是它们的默认行为,而不是它们难以学习的东西!

所有循环神经网络都具有神经网络重复模块链的形式。在标准的RNN中,这个重复模块的结构非常简单,比如只有一个tanh层。

在这里插入图片描述

标准循环神经网络中的重复模块包含一个单层。
标准的RNN中,每个时间步的输入都会传入一个神经网络单元,该单元会使用当前输入以及前一时间步的隐藏状态作为输入,经过一个非线性的激活函数进行转换,生成新的隐藏状态,作为下一时间步的输入。这个单元的结构通常比较简单,只包含一个单层神经网络,也就是说,它的内部只包含一个线性变换和一个激活函数。这样设计的原因是为了减少计算量和参数数量,以便在处理大规模数据时能够更有效地训练和使用RNN模型。然而,这种简单的结构也导致了RNN在处理长序列时很容易出现梯度消失或梯度爆炸的问题。

LSTMs也具有链状结构,但重复模块的结构不同。它不是只包含一个神经网络层,而是包含四个神经网络层,这四个层以非常特殊的方式相互交互。

在这里插入图片描述

LSTM 中的重复模块包含四个相互作用的层。
当我们构建一个LSTM网络时,每个时间步都包含四个主要的交互层:输入门、遗忘门、输出门和记忆单元。这些层都被设计成互相交互以使网络可以更好地捕捉长期依赖关系。
输入门决定什么信息将被添加到记忆单元中。它首先通过一个Sigmoid层将输入数据进行筛选,确定哪些信息要被保留。然后,一个tanh层将输入数据进行处理,生成一个可以被添加到记忆单元中的新信息。
遗忘门决定哪些信息需要从记忆单元中删除。它也由一个Sigmoid层和一个tanh层组成。Sigmoid层首先决定哪些信息需要被遗忘,然后tanh层根据这个信息删除相应的内容。
输出门决定从记忆单元中提取哪些信息。输出门包含一个Sigmoid层和一个tanh层。Sigmoid层确定需要输出的信息,tanh层将它们处理成可以传递给下一层的格式。
最后,记忆单元就是一个内部状态,记录了在时间序列上之前的所有信息,并将它们传递给当前时间步。这种内部状态可以让LSTM网络更好地记住先前的信息,从而更好地处理长期依赖关系。

不要担心正在发生的细节。稍后我们将逐步介绍LSTM图表。现在,让我们只是试图熟悉我们将使用的符号。
在这里插入图片描述

在上面的图中,每条线(第3个)都携带一个整个向量,从一个节点的输出到其他节点的输入。粉色圆圈(第2个)表示逐点操作,例如向量加法,而黄色框(第1个)表示学习的神经网络层。线的合并(第4个)表示串联,而线的分叉(第5个)表示其内容被复制,并将副本发送到不同的位置。这里的符号表示可能比较陌生,但在后面的解释中,我们会逐步介绍每个符号的含义。

The Core Idea Behind LSTMs

LSTMs的核心思想
LSTM的关键在于细胞状态(cell state),它是图示中从上到下的水平线(见下)。

细胞状态有点像传送带。它沿着整个链条直线向下运行,只有一些微小的线性交互。信息很容易沿着它不变地流动。

在这里插入图片描述

LSTM具有删除或添加信息到cell state的能力,这是由门结构精细调控实现的。

门是一种可选地通过信息的方式。它们由sigmoid神经网络层和逐点乘法操作组成。

在这里插入图片描述

Sigmoid层输出0到1之间的数字,描述了每个组件应该通过多少。值为0表示“不让任何东西通过”,而值为1表示“让所有东西通过”!

LSTM有三个这样的门,用于保护和控制单元状态。

Step-by-Step LSTM Walk Through

逐步解析 LSTM

在 LSTM 中的第一步是决定我们要从单元状态中删除哪些信息。这个决策是由一个称为“遗忘门层”的 Sigmoid 层做出的。它查看 h t − 1 h_{t−1} ht1 x t x_t xt,并为单元状态 C t − 1 C_{t−1} Ct1 中的每个数字输出介于 0 和 1 之间的一个数。1 表示“完全保留”,而 0 表示“完全舍弃”。

让我们回到一个语言模型的例子,该模型试图基于之前的所有单词来预测下一个单词。在这样的问题中,单元状态可能包括当前主体的性别,以便可以使用正确的代词。当我们看到一个新主体时,我们希望忘记旧主体的性别。

在这里插入图片描述


下一步是决定我们要将什么新信息存储在细胞状态中。这包含两个部分。首先,一个称为“输入门层”的sigmoid层决定我们将更新哪些值。接下来,一个tanh层创建一个新的候选值向量 C ~ t \tilde{C}_{t} C~t,可以添加到状态中。在下一步中,我们将合并这两个部分以创建状态更新。

在我们的语言模型的例子中,我们想要将新主题的性别添加到细胞状态中,以替换我们正在忘记的旧主题的性别。

在这里插入图片描述


现在是时候将旧的单元状态 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,即新的候选值,它们的比例决定了每个状态值的更新程度。

在语言模型的例子中,这是我们实际删除关于旧主体性别的信息并添加新信息的步骤,就像我们在之前的步骤中决定的那样。
在这里插入图片描述


最后,我们需要决定我们要输出什么。这个输出将基于我们的单元状态,但会是一个过滤后的版本。首先,我们运行一个sigmoid层,它决定了我们要输出单元状态的哪些部分。然后,我们将单元状态通过tanh(将值推到-1到1之间)并乘以sigmoid门的输出,以便我们只输出我们决定的部分。

对于语言模型的例子,因为它刚刚看到了一个主语,它可能想要输出与动词相关的信息,以防接下来的词是动词。例如,它可以输出主语是单数还是复数,以便我们知道下一个词是动词时应该把动词变成什么形式。

在这里插入图片描述

Variants on Long Short Term Memory

LSTM的变体

上面,所描述的是一个相当普通的 LSTM。但并非所有的 LSTM 都与上述相同。实际上,似乎几乎每一篇涉及 LSTM 的论文都使用了略微不同的版本。这些差异很小,但值得一提。

由 Gers & Schmidhuber(2000)介绍的一种流行的 LSTM 变体是添加“窥视孔连接”。这意味着我们让门控层可以查看细胞状态

在这里插入图片描述


另一种变体是使用耦合的遗忘门和输入门。我们不是单独地决定要遗忘什么,以及我们应该添加什么新信息,而是将这些决定结合在一起。只有在我们要输入新信息时才遗忘,只有在我们要遗忘一些旧信息时才输入新值到状态中
在这里插入图片描述


一种比 LSTM 更为简单的变体是门循环单元(Gated Recurrent Unit,GRU),由Cho等人(2014)提出。它将遗忘门和输入门合并为一个单独的“更新门”,并合并了单元状态和隐藏状态,并进行了其他一些更改。由此产生的模型比标准LSTM模型更简单,越来越受欢迎。

在这里插入图片描述


这些只是一些最值得注意的LSTM变体。还有许多其他变体,例如由Yao等人(2015)提出的Depth Gated RNNs。还有一些完全不同的方法来解决长期依赖问题,例如Koutnik等人(2014)的Clockwork RNNs。

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

总结

早些时候,我提到人们使用RNN取得了显著的结果。事实上,几乎所有这些结果都是使用LSTM实现的。对于大多数任务来说,它们确实比其他方法都要好!

将LSTM写成一组方程看起来相当令人生畏。希望通过本文对它们进行逐步解释,使得读者更容易理解。

LSTM是我们可以通过RNN实现的重大进步。自然而然的问题是:是否还有另一个大的进步?研究人员普遍认为:“是的!下一个进步是注意力机制!”这种想法是让RNN的每个步骤从一些更大的信息集合中选择要查看的信息。例如,如果您正在使用RNN为图像创建标题,它可能会选择每个输出单词要查看的图像部分。实际上,Xu等人(2015)就是这样做的——如果您想探索注意力机制,这可能是一个有趣的起点!使用注意力机制已经取得了许多令人兴奋的结果,并且似乎还有更多的结果即将到来……

注意力机制并不是RNN研究中唯一令人兴奋的领域。例如,Kalchbrenner等人(2015)的网格LSTM似乎非常有前途。在生成模型中使用RNN的工作,例如Gregor等人(2015)、Chung等人(2015)或Bayer和Osendorfer(2015),也非常有趣。过去几年一直是递归神经网络方面的激动人心的时期,未来几年也将会更加如此!

Reference

LSTM-理解 Part-1(RNN:循环神经网络)

LSTM-理解 Part-2(RNN的局限性)

Understanding LSTM Networks

[干货] 深入浅出LSTM及其Python代码实现

YouTube视频:Illustrated Guide to LSTM’s and GRU’s: A step by step explanation

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python MySQL】零基础也能轻松掌握的学习路线与参考资料

Python是一种广泛使用的编程语言,MySQL是一个流行的关系数据库管理系统。学习Python和MySQL可以帮助开发人员更有效地处理数据,并构建可扩展和强大的Web应用程序。本文将介绍Python MySQL学习路线,参考资料和优秀实践。 Python MySQL学习路线…

美的智家、海尔智家,吹响新一轮AI竞赛号角

ChatGPT大行其道,各行各业迫不及待披上了AI大模型的“盔甲”,有的企业自研AI大模型,有的企业牵手头部科技企业,寻求智能产品价值的最大化,智能家电行业也不例外。 在国内,百度AI大模型文心一言一经推出就吸…

卷绕模型介绍

卷绕模型是收放卷应用的基础知识,这篇博客帮大家整理分析,有关收放卷的其它相关基础知识请参看专栏相关文章。和这篇文章相关联的知识点大家可以参看下面的博客 体积法计算卷径详细介绍 卷径计算详解(通过卷绕的膜长和膜厚进行计算)_RXXW_Dor的博客-CSDN博客有关卷绕+张力控…

LoRA:大模型的低秩自适应微调模型

对于大型模型来说,重新训练所有模型参数的全微调变得不可行。比如GPT-3 175B,模型包含175B个参数吗,无论是微调训练和模型部署,都是不可能的事。所以Microsoft 提出了低秩自适应(Low-Rank Adaptation, LoRA),它冻结了预…

企业级体验:未来体验管理的价值与趋势

我从事企业级体验相关领域的工作已十六载有余,曾经就职的企业既有阿里巴巴、腾讯这样的互联网“大厂”,也有顺丰、龙湖这样的线下“传统”企业。在这些企业中,我所工作的场景横跨了软件、电商、互联网、物流、零售、地产、金融等诸多业务领域…

11.计算机基础-计算机网络面试题—基础知识

本文目录如下: 计算机基础-计算机网络 面试题一、基础知识简述 TCP 和 UDP 的区别?http 与 https的区别?Session 和 Cookie 有什么区别?详细描述一下 HTTP 访问一个网站的过程?https 是如何实现加密的?URL是什么&…

Linux下网络编程(3)——socket编程实战,如何构建一个服务器和客户端连接

经过前几篇的介绍,本文我们将进行编程实战,实现一个简单地服务器和客户端应用程序。 编写服务器程序 编写服务器应用程序的流程如下: ①、调用 socket()函数打开套接字,得到套接字描述符; ②、调用 bind()函数将套接字…

Deep Supervised Dual Cycle Adversarial Network for Cross-Modal Retrieval 论文阅读笔记

​# 1. 论文信息 论文名称Deep Supervised Dual Cycle Adversarial Network for Cross-Modal Retrieval作者Lei Liao 中山大学会议/出版社IEEE Transactions on Circuits and Systems for Video Technologypdf📄在线pdf代码💻无代码 本文是基于公共空间…

mov转换为mp4格式怎么转,多方法教程

mov转换为mp4格式怎么转?如果你连mov都不了解,那就更别说将其进行转换了。其实使用过苹果手机的人应该接触的很多,但是我们时常不关注这个视频格式。MOV是一种音频和视频文件格式,它在苹果手机上使用。它不兼容安卓或Windows电脑&…

cookie、session、JWT(Json Web Token) 的区别?

cookie、session、JWT(Json Web Token) 的区别? 答: 要从http的无状态说起,http是无状态的,也就是如果你第一次访问服务器,之后再次访问的时候,服务器是不会意识到你再次来进行访问的。不想让已经登录的用…

敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理

敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理 一、MoSCoW 1、MoSCoW : 读作"莫斯科",适用于故事优先级的排序,首次出现在 3-13敏捷产品实践:产品待办事项列表的排序 ; 基于价值的分析的一种技术 &#…

mac python3.9安装pyqt5、qt5、pyqt5-tools

一 pip安装 转义安装 # 一条代码就可以搞定没错,使用的是Rosetta2 x86_64模式安装的 arch -x86_64 python3 -m pip install PyQt5arch -x86_64 python3 -m pip install pyqt5-tools二 brew安装 arm版 以下pip命令自行更具自己环境选择pip或pip3 在安装pyqt前必须先…

【C++】set和map的底层AVL树的实现

AVL树 文章目录 前言一、AVL树的实现总结 前言 上一篇文章对 map/multimap/set/multiset 进行了简单的介绍,在其文档介绍中发现,这几个容器有个共同点是:其底层都是按照二叉搜索树来实现的 ,但是二叉搜索树有其自身的缺陷&#xf…

OC消息机制

目录 1 OC消息机制2 OC消息发送3 OC动态方法解析4 OC消息转发 1 OC消息机制 OC对象调用方法在编译阶段不知道具体的方法在哪里,是在运行的过程中,向对象发送消息,通过对象得到函数地址,调用函数,如果没有找到&#xf…

计算机网络实验(ensp)-实验 9:配置 NAT 及了解 ping 命令

目录 实验报告: 实验操作 1.建立网络拓扑图并开启设备 2.配置路由器 1.输入命名:sys 从用户视图切换到系统视图 2.输入命名:sysname 姓名 修改路由器名字 3.输入命名:interface g0/0/1 (简写&…

Linux——进程和计划任务管理

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。 个人主页:小李会科技的…

Uniapp申请APP版应用签名、打包、并在微信开放平台申请移动应用的全流程攻略

一.应用签名申请 1.1 安装jdk, jre, 并设置环境变量 Jdk下载链接 1.2 准备就绪后, 重新打开cmd窗口, 键入Java看是否已正确配置.** 1.3 如已正确配置,则执行以下命令,进行证书生成操作。生成好的证书保存在当前cmd的启动目录下** 证书别名和应用名称可替换成自己的软件名称.…

【容斥+状压+树上异或】ABC152 F - Tree and Constraints

思路真的和他很像,但是我不太会写容斥,只写过几道板子题 而且有个地方不知道怎么处理,就是容斥原理的F函数里面怎么求多个路径的边的并集 这里是用状压处理的 该学学容斥的写法了QwQ F - Tree and Constraints (atcoder.jp) 题意&#x…

Python 实验六 函数的设计

1.编写两个函数分别按单利和复利计算利息,根据本金、年利率、存款年限得到本息和和利息。调用这两个函数计算1000元在银行存3年,在年利率是6%的情况下,单利和复利分别获得的本息和和利息。单利计算指只有本金计算利息。复利计算是指不仅本金计…

【问题解决】Mybatis Plus Generator(新代码生成器)+达梦数据库,创建数据库连接失败

前言 使用Mybatis Plus Generator(新代码生成器)达梦数据库,执行生成方法失败 无法创建数据库连接 文章目录 前言问题描述错误日志输出尝试解决最终解决方法 问题描述 创建数据源配置,连接配置参照官网 jdbc:dm://localhost:5236/…