简单理解LSTM神经网络

简单理解LSTM神经网络递归神经网络在传统神经网络中 模型不会关注上一时刻的处理会有什么信息可以用于下一时刻 每一次都只会关注当前时刻的处理 举个例子来说 我们想对一部影片中每一刻出现的事件进行分类 如果我们知道电影前面的事件信息 那么对当前时刻事件的分类就会非常容易 实际上 传统神经网络没有记忆功能 所以它对每一刻出现的事件进行分类时不会用到影片已经出现的信息 那么有什么方法可以让神经网络能够记住这些信息呢

递归神经网络
在传统神经网络中,模型不会关注上一时刻的处理会有什么信息可以用于下一时刻,每一次都只会关注当前时刻的处理。举个例子来说,我们想对一部影片中每一刻出现的事件进行分类,如果我们知道电影前面的事件信息,那么对当前时刻事件的分类就会非常容易。实际上,传统神经网络没有记忆功能,所以它对每一刻出现的事件进行分类时不会用到影片已经出现的信息,那么有什么方法可以让神经网络能够记住这些信息呢?答案就是Recurrent Neural Networks(RNNs)递归神经网络。



这里写图片描述





其中, XtXt为输出。



这里写图片描述




这样的一条链状神经网络代表了一个递归神经网络,可以认为它是对相同神经网络的多重复制,每一时刻的神经网络会传递信息给下一时刻。如何理解它呢?假设有这样一个语言模型,我们要根据句子中已出现的词预测当前词是什么,递归神经网络的工作原理如下:



这里写图片描述




其中,W为各类权重,x表示输入,y表示输出,h表示隐层处理状态。

递归神经网络因为具有一定的记忆功能,可以被用来解决很多问题,例如:语音识别、语言模型、机器翻译等。但是它并不能很好地处理长时依赖问题。

长时依赖问题
长时依赖是这样的一个问题,当预测点与依赖的相关信息距离比较远的时候,就难以学到该相关信息。例如在句子”我出生在法国,……,我会说法语“中,若要预测末尾”法语“,我们需要用到上下文”法国“。理论上,递归神经网络是可以处理这样的问题的,但是实际上,常规的递归神经网络并不能很好地解决长时依赖,好的是LSTMs可以很好地解决这个问题。

LSTM 神经网络
Long Short Term Mermory network(LSTM)是一种特殊的RNNs,可以很好地解决长时依赖问题。那么它与常规神经网络有什么不同?
首先我们来看RNNs具体一点的结构:





这里写图片描述




所有的递归神经网络都是由重复神经网络模块构成的一条链,可以看到它的处理层非常简单,通常是一个单tanh层,通过当前输入及上一时刻的输出来得到当前输出。与神经网络相比,经过简单地改造,它已经可以利用上一时刻学习到的信息进行当前时刻的学习了。



这里写图片描述




其中,处理层出现的符号及表示意思如下:



这里写图片描述



LSTMs的核心思想
理解LSTMs的关键就是下面的矩形方框,被称为memory block(记忆块),主要包含了三个门(forget gate、input gate、output gate)与一个记忆单元(cell)。方框内上方的那条水平线,被称为cell state(单元状态),它就像一个传送带,可以控制信息传递给下一时刻。




这里写图片描述




这个矩形方框还可以表示为:



这里写图片描述




这两个图可以对应起来看,下图中心的 ctct分别为遗忘门、输入门、输出门,用sigmoid层表示。上图中的两个tanh层则分别对应cell的输入与输出。



这里写图片描述




该层的输出是一个介于0到1的数,表示允许信息通过的多少,0 表示完全不允许通过,1表示允许完全通过。

逐步解析LSTM
LSTM第一步是用来决定什么信息可以通过cell state。这个决定由“forget gate”层通过sigmoid来控制,它会根据上一时刻的输出ht1ht−1通过或部分通过。如下:




这里写图片描述




举个例子来说就是,我们在之前的句子中学到了很多东西,一些东西对当前来讲是没用的,可以对它进行选择性地过滤。

第二步是产生我们需要更新的新信息。这一步包含两部分,第一个是一个“input gate”层通过sigmoid来决定哪些值用来更新,第二个是一个tanh层用来生成新的候选值C~tC~t相加,得到了候选值。



这里写图片描述




举个例子就是,在前面的句子中我们保存的是张三的信息,现在有了新的李四信息,我们需要把张三的信息丢弃掉,然后把李四的信息保存下来。

上面是对LSTM一个典型结构的理解,当然,它也会有一些结构上的变形,但思想基本不变,这里也就不多讲了。

转载来源:https://blog.csdn.net/shijing_0214/article/details/














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

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

(0)
上一篇 2026年3月20日 上午9:56
下一篇 2026年3月20日 上午9:56


相关推荐

  • if、elif、else 和 endif 指令详解 (C/C++)

    if、elif、else 和 endif 指令详解 (C/C++)if elif else 和 endif 指令详解 C C if 指令与 elif else 和 endif 指令一起控制源文件部分的编译 如果您编写的表达式 在 if 后 有一个非零值 则在翻译单元中保留紧跟 if 指令的行组 语法 conditional if partelif partsoptelse partoptendif lineif part

    2026年3月17日
    1
  • MD5加密 MD5加盐

    MD5加密 MD5加盐MD5 算法的原理可简要的叙述为 MD5 码以 512 位分组来处理输入的信息 且每一分组又被划分为 16 个 32 位子分组 经过了一系列的处理后 算法的输出由四个 32 位分组组成 将这四个 32 位分组级联后将生成一个 128 位散列值 一 为什么要用哈希函数来加密密码 1 如果开发者需要保存密码 比如网站用户的密码 要考虑如何保护这些密码数据 网站用户密码的泄露是一件非常严重的事情 容易引起

    2026年3月18日
    1
  • Heartbeat配置方案

    Heartbeat配置方案HA 即 highavailabl 高可用 又被叫做双机热备 用于关键性业务 简单理解就是 有 2 台机器 A 和 B 正常是 A 提供服务 B 待命闲置 当 A 宕机或服务宕掉 会切换至 B 机器继续提供服务 常见的实现高可用的开源软件有 heartbeat 和 keepalived 高可用只是服务的高可用 不包括数据的备份 服务的 ip 会进行切换 切换时可以设置服务启动 配置方法 配置准备 ip 主机 1

    2026年3月17日
    0
  • llm+agent,使用与 OpenAI 兼容的 API 格式

    llm+agent,使用与 OpenAI 兼容的 API 格式

    2026年3月15日
    3
  • 进程间通信和线程间通信的区别_有些线程包含多个进程

    进程间通信和线程间通信的区别_有些线程包含多个进程进程间通信转自https://www.cnblogs.com/LUO77/p/5816326.html线程间通信https://www.cnblogs.com/jobs1/p/10784021.html线程间通信进程和线程的区别程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消。反映…

    2022年10月7日
    5
  • 如何恢复电脑共享文件(windows7错误恢复进不去)

    第一步:检查AutoShareServer和AutoShareWks注册表值,以确保未将它们设置为0。依次点击“开始→运行”,输入regedit,然后按回车键进入注册表编辑器。      第二步:找到并单击HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServerParameters。   第三步:如

    2022年4月10日
    331

发表回复

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

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