超生动图解LSTM和GRU,一文读懂循环神经网络!

LSTM和GRU看完必须全部了然 LSTM和GRU的感性理解一、RNN的缺点——短时记忆二、LSTM1.整体结构 一、RNN的缺点——短时记忆 RNN 会受到短时记忆的影响。如果一条序列足够长,那它们将很难将信息从较早的时间步传送到后面的时间步。 因此,如果你正在尝试处理一段文本进行预测,RNN 可能从一开始就会遗漏重要信息。 在反向传播期间,RNN 会面临梯度消失的问题。 梯度是用于更新神经网络的权重值,消失的梯度问题是当梯度随着时间的推移传播时梯度下降,如果梯度值变得非常小,就不会继续学习。 因此,在递归神经网络中,获得小梯度更新的层 阅读详情
作者 Michael Nguyen
王小新 编译自 Towards Data Science
量子位 出品 | 公众号 QbitAI

AI识别你的语音、回答你的问题、帮你翻译外语,都离不开一种特殊的循环神经网络(RNN):长短期记忆网络(Long short-term memory,LSTM)。

最近,国外有一份关于LSTM及其变种GRU(Gated Recurrent Unit)的图解教程非常火。教程先介绍了这两种网络的基础知识,然后解释了让LSTM和GRU具有良好性能的内在机制。当然,通过这篇文章,还可以了解这两种网络的一些背景。

图解教程的作者Michael Nguyen是一名AI语音助理方面的机器学习工程师。

下面,跟着量子位一起来学习一下~

短期记忆问题

RNN受限于短期记忆问题。如果一个序列足够长,那它们很难把信息从较早的时间步传输到后面的时间步。因此,如果你尝试处理一段文本来进行预测,RNN可能在开始时就会遗漏重要信息。

在反向传播过程中,RNN中存在梯度消失问题。梯度是用于更新神经网络权重的值,梯度消失问题是指随着时间推移,梯度在传播时会下降,如果梯度值变得非常小,则不会继续学习。

△ 梯度更新规则

因此,在RNN中,梯度小幅更新的网络层会停止学习,这些通常是较早的层。由于这些层不学习,RNN无法记住它在较长序列中学习到的内容,因此它的记忆是短期的。

关于RNN的更多介绍,可访问:
https://towardsdatascience.com/illustrated-guide-to-recurrent-neural-networks-79e5eb8049c9

解决方案:LSTM和GRU

LSTM和GRU是克服短期记忆问题提出的解决方案,它们引入称作“门”的内部机制,可以调节信息流。

这些门结构可以学习序列中哪些数据是要保留的重要信息,哪些是要删除的。通过这样做,它可以沿着长链序列传递相关信息来执行预测。几乎所有基于RNN的先进结果都是通过这两个网络实现的。LSTM和GRU经常用在语音识别、语音合成和文本生成等领域,还可用来为视频生成字幕。

当你看完这篇文章时,我相信你会对LSTM和GRU在处理长序列的突出能力有充分了解。下面我将通过直观解释和插图来进行介绍,并尽可能绕开数学运算。

直观认识

我们从一个思考实验开始。当你在网络上购买生活用品时,一般会先阅读商品评论来判断商品好坏,以确定是否要购买这个商品。

当你查看评论时,你的大脑下意识地只会记住重要的关键词。你会选择“amazing”和“perfectly balanced breakfast”这样的词汇,而不太关心“this”,“give”,“all”,“should”等字样。如果有人第二天问你评论内容,你可能不会一字不漏地记住它,而是记住了主要观点,比如“下次一定还来买”,一些次要内容自然会从记忆中逐渐消失。

在这种情况下,你记住的这些词能判定了这个餐厅的好坏。这基本上就是LSTM或GRU的作用,它可以学习只保留相关信息来进行预测,并忘记不相关的数据。

RNN回顾

为了理解LSTM或GRU如何实现这一点,接下来回顾下RNN。RNN的工作原理如下:首先单词被转换成机器可读的向量,然后RNN逐个处理向量序列。

△ 逐个处理向量序列

在处理时,它把先前的隐藏状态传递给序列的下一步,其中隐藏状态作为神经网络记忆,它包含相关网络已处理数据的信息。

△ 把隐藏状态传递给下个时间步

下面来介绍RNN中每个cell单元是如何计算隐藏状态的。

首先,将输入和先前隐藏状态组合成一个向量,向量中含有当前输入和先前输入的信息。这个向量再经过激活函数Tanh后,输出新的隐藏状态,或网络记忆。

△ RNN单元

激活函数Tanh

激活函数Tanh用于帮助调节流经网络的值,且Tanh函数的输出值始终在区间(-1, 1)内。

当向量流经神经网络时,由于存在各种数学运算,它经历了许多变换。因此,想象下让一个值不断乘以3,它会逐渐变大并变成天文数字,这会让其他值看起来微不足道。

△ 无Tanh函数的向量变换

Tanh函数能让输出位于区间(-1, 1)内,从而调节神经网络输出。你可以看到这些值是如何保持在Tanh函数的允许范围内。

△ 有Tanh函数的向量变换

这就是RNN,它的内部操作很少,但在适当情况下(如短序列分析)效果很好。RNN使用的计算资源比它的演化变体LSTM和GRU少得多。

LSTM

LSTM的控制流程与RNN类似,它们都是在前向传播过程中处理传递信息的数据,区别在于LSTM单元的结构和运算有所变化。

△ LSTM单元及其运算

这些运算能让LSTM具备选择性保留或遗忘某些信息的能力,下面我们将逐步介绍这些看起来有点复杂的运算。

核心概念

LSTM的核心概念为其单元状态和各种门结构。

单元状态相当于能传输相关信息的通路,让信息在序列链中传递下去,这部分可看作是网络的“记忆”。理论上,在序列处理过程中,单元状态能一直携带着相关信息。因此,在较早时间步中获得的信息也能传输到较后时间步的单元中,这样能减弱短期记忆的影响。

在网络训练过程中,可通过门结构来添加或移除信息,不同神经网络都可通过单元状态上的门结构来决定去记住或遗忘哪些相关信息。

Sigmoid

门结构中包含Sigmoid函数,这个激活函数与Tanh函数类似。但它的输出区间不是(-1, 1),而是(0, 1),这有助于更新或忘记数据,因为任何数字乘以0都为0,这部分信息会被遗忘。同样,任何数字乘以1都为相同值,这部分信息会完全保留。通过这样,网络能了解哪些数据不重要需要遗忘,哪些数字很重要需要保留。

△ Sigmoid输出区间为(0, 1)

下面会深入介绍下不同门结构的功能。LSTM单元中有三种调节信息流的门结构:遗忘门、输入门和输出门。

遗忘门

遗忘门能决定应丢弃或保留哪些信息。来自先前隐藏状态的信息和当前输入的信息同时输入到Sigmoid函数,输出值处于0和1之间,越接近0意味着越应该忘记,越接近1意味着越应该保留。

△ 遗忘门操作

输入门

输入门用来更新单元状态。先将先前隐藏状态的信息和当前输入的信息输入到Sigmoid函数,在0和1之间调整输出值来决定更新哪些信息,0表示不重要,1表示重要。你也可将隐藏状态和当前输入传输给Tanh函数,并在-1和1之间压缩数值以调节网络,然后把Tanh输出和Sigmoid输出相乘,Sigmoid输出将决定在Tanh输出中哪些信息是重要的且需要进行保留。

△ 输入门操作

单元状态

这里已经具备足够信息来计算单元状态。首先把先前的单元状态和遗忘向量逐点相乘,如果它乘以接近0的值,则意味在新的单元状态中可能要丢弃这些值;然后把它和输入门的输出值逐点相加,把神经网络发现的新信息更新到单元状态中,这样就得到了新的单元状态。

△ 计算单元状态

输出门

输出门能决定下个隐藏状态的值,隐藏状态中包含了先前输入的相关信息。当然,隐藏状态也可用于预测。首先把先前的隐藏状态和当前输入传递给Sigmoid函数;接着把新得到的单元状态传递给Tanh函数;然后把Tanh输出和Sigmoid输出相乘,以确定隐藏状态应携带的信息;最后把隐藏状态作为当前单元输出,把新的单元状态和新的隐藏状态传输给下个时间步。

△ 输出门操作

这里总结下,遗忘门能决定需要保留先前步长中哪些相关信息,输入门决定在当前输入中哪些重要信息需要被添加,输出门决定了下一个隐藏状态。

代码示例

这里还提供了一个用Python写的示例代码,来让大家能更好地理解这个结构。

  1. 首先,我们连接了先前的隐藏状态和当前输入,这里定义为变量combine;

  2. 把combine变量传递到遗忘层中,以删除不相关数据;

  3. 再用combine变量创建一个候选层,用来保留可能要添加到单元状态中的值;

  4. 变量combine也要传递给输出层,来决定应把候选层中的哪些数据添加到新的单元状态中;

  5. 新的单元状态可根据遗忘层、候选层和输入层和先前的单元状态来计算得到;

  6. 再计算当前单元输出;

  7. 最后把输出和新的单元状态逐点相乘可得到新的隐藏状态。

从上面看出,LSTM网络的控制流程实际上只是几个张量操作和一个for循环。你还可以用隐藏状态进行预测。结合这些机制,LSTM能在序列处理过程中有选择性地保留或遗忘某些信息。

GRU

介绍完LSTM的工作原理后,下面来看下门控循环单元GRU。GRU是RNN的另一类演化变种,与LSTM非常相似。GRU结构中去除了单元状态,而使用隐藏状态来传输信息。它只有两个门结构,分别是更新门和重置门。

△ GRU单元结构

更新门

更新门的作用类似于LSTM中的遗忘门和输入门,它能决定要丢弃哪些信息和要添加哪些新信息。

重置门

重置门用于决定丢弃先前信息的程度。

这两部分组成了GRU,它的张量操作较少,因此训练它比LSTM更快一点。在选择网络时很难判断哪个更好,研究人员通常会两个都试下,通过性能比较来选出更适合当前任务的结构。

总结

总而言之,RNN适用于处理序列数据和预测任务,但会受到短期记忆的影响。LSTM和GRU是两种通过引入门结构来减弱短期记忆影响的演化变体,其中门结构可用来调节流经序列链的信息流。目前,LSTM和GRU经常被用于语音识别、语音合成和自然语言理解等多个深度学习应用中。

如果你对这方面很感兴趣,作者还列出一些干货链接,可以从更多角度来理解LSTM和GRU结构。

用python来实现GRU和LSTM网络

http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano

理解长短期记忆模型

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

最后,附上这篇文章的原文链接和视频版:

原文:

https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

欢迎扫码添加小编微信(请备注方向),拉你入机器学习微信群,一起学习进步:

GRU与LSTM 一、前言 GRU是LSTM的一种变体,综合来看: 1、两者的性能在很多任务上不分伯仲。 2、GRU 参数相对少更容易收敛,但是在数据集较大的情况下,LSTM性能更好。 3、GRU只有两个门(update和reset),LSTM有三个门(forget,input,output) LSTM还有许多变体,但不管是何种变体,都是对输入和隐层状态做一个线性映射后加非线性激活函数,重点在于额外的门控机制是如何... 阅读详情

相关推荐

长短期记忆网络(LSTM)和门控循环单元(GRU)算法详解

分别是更新门的权重矩阵和偏置。由于输入门、遗忘门和输出门都是由Sigmoid函数变换得到的,它们的取值范围在0和1之间,因此可以有效地控制信息的流动和梯度的传递。这两个门控单元可以学习在每个时间步如何调整输入信息和上一个时间步的隐藏状态信息的重要程度,某种程度上可以看作有选择性的记忆当前时刻的输入和上一时刻的隐藏状态。总结一下,LSTM(Long Short-Term Memory)网络可以优化梯度传播不稳定的问题,主要是因为它们的设计允许信息在多个时间步长上有效地流动,而不受梯度消失或爆炸的影响。

极光喵的博客 4345

【神经网络】图解LSTM和GRU

循环神经网络(RNN,Recurrent Neural Network)受到短期记忆的影响。如果一个序列足够长,就很难将早期产生的信息带到后续的步骤中来。因此,如果试图处理一段文字来做预测,RNN可能会从一开始就遗漏了重要信息。

Data · Model · Agent · Repeat 8642

LSTM及GRU图解

lstm也是一种递归神经神经网络,那么要了解lstm之前先看看什么是RNN从上可以看出rnn有两个输入x1,h0;两个输出h1,y1.h1,x2作为下一时刻的输入,通过f函数,输出h2,y2;依次下去。。。。不管输入的序列有多长,只有一个f函数,那么自然减少了参数的数量;从上图也可看出为什么rnn可以作为时间序列的预测,下面是 深层的RNN,只是多了一层,然后下一层的输出是上衣一层的输入深层的RN...

颠沛的小丸子 6106

GRU与LSTM总结

一、LSTM(长短期记忆网络)LSTM是一种特殊的RNN类型,一般的RNN结构如下图所示,是一种将以往学习的结果应用到当前学习的模型,但是这种一般的RNN存在着许多的弊端。举个例子,如果我们要预测“the clouds are in the sky”的最后一个单词,因为只在这一个句子的语境中进行预测,那么将很容易地预测出是这个单词是sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的

lreaderl的博客 12万+

DirectX修复工具使用技巧之二——手动修复C++创建失败的文件

最后更新:2021-2-25 随着V4.0正式版的发布,近来有部分用户来咨询如何解决C++文件创建失败的问题。在此我将以解决最常见的C++2015-2019文件创建失败为例,向大家演示一下在线修复的方法,其他C++或文件的方法大同小异。此次操作以Windows 7为例,其他系统相应参考即可。 首先,如果希望程序能手动在线修复创建失败的失败,请首先确定您使用的V4.0.2版或更高版本,老版本不支持此功能。查看程序版本的方式可以把鼠标放在DirectX Repair.e...

VBcom的专栏 6万+

金融行业软件测试面试题(含答案)

6、假如发现了一个BUG,跟开发本身没什么关系,涉及到理念,需求问题,如何解决?11、假如要你测试6个月期限的p2p借款产品,你应该怎么设计案例,说出测试点。17、如果京东有一个购物网页给你,你要怎么进行测试?31、我们公司自动化测试用的语言是Java,Java你不会,该怎么办?23、你们测试用的测试环境是谁给的?24、如果领导分配你的任务超出负荷,领导高估了你的能力,怎么办。26、给你一个模块测试,只有一个星期的时间你如何有效率地完成?29、如果你组长的用例写错了,但他认为是对的,你怎么处理?

crhnb的博客 918

超生动图解LSTM和GPU,一文读懂循环神经网络!

作者 Michael Nguyen王小新 编译自 Towards Data Science量子位 出品 | 公众号 QbitAIAI识别你的语音、回答你的问题、帮你翻译外语,都离不开一种...

Datawhale 566

不会ps,你也可以成为ps高手,最强傻瓜式人像一键磨皮美白瘦脸美妆PS插件

比如:美肤是用来去斑点的,如果效果不太理想,就加大百分比,反之就减小。瘦脸如果脸胖的就打开,正常的就关闭。所谓的一键调节,要不只能调节一种效果,要不就是个预设,然后让你自己再调。同时,该软件还加入了贴心的批量处理功能,能同时处理上千张照片,让您喝着茶也能将工作做完。、自动检测照片中的人脸,包括鼻子,嘴巴,耳朵,眼睛和眉毛。、依托强大的脸部识别功能,可以高效的对人物全身皮肤进行智能识别,处理,使肤质平滑、过渡均匀。,这是网上下载的模糊照片,经过简单处理,你可以发现,眼睛变的更亮,皮肤更白,眼袋消失。

心语家园 - www.xinyucn.cc 2903

循环神经网络(RNN、LSTM、GRU)的结构及代码实现

RNN 代码实现: # 一般循环神经网络RNN class ConvRNN(nn.Module): def __init__(self, inp_dim, oup_dim, kernel, dilation): super().__init__() pad_x = int(dilation * (kernel - 1) / 2) self.conv_x = nn.Conv2d(inp_dim, oup_dim, kernel, paddin.

乐亦亦乐的博客 4697

保姆级教程:用DaVinci Configurator & Developer从零搭建AUTOSAR OS(TC2xx三核实战)

本文提供了一份详细的AUTOSAR OS配置指南,使用DaVinci Configurator和Developer工具从零开始搭建Infineon TC2xx三核系统。涵盖多核配置协同逻辑、版本兼容性陷阱及验证错误的解决方案,帮助开发者在3小时内构建可运行的多核OS框架。

weixin_33940469的博客 317

如何使用Calibre PERC抽出 点到点/p2p 电阻

@[TOC](如何使用Calibre PERC抽点到点(p2p)电阻) 一、前言 需要实现的功能是从gds中抽出net的点到点的电阻。如下图这样。 二、准备工作 lvs rule pex rule(必要时可以自己定义RC rule) gds p2p点的坐标 定义prode.defs 因为p2p的点是变化的,所以每次prode定义都要重新出,对应的perc rule也是根据每个p2p点的定义来的,perc rule也是每次都要重新出。如果需要可以写一个脚本自动出这些定义文件。 PROBE_POINTS

kobayashiyou的博客 1万+

RNN/LSTM/GRU结构可视化:dl-visuals循环神经网络图解教程

dl-visuals是一个包含215张深度学习可视化图表的开源项目,其中RNNs目录提供了丰富的循环神经网络结构图解,涵盖基础RNN、LSTM、GRU及其变体,所有图片支持在博客、幻灯片和论文中免费使用。 ## 循环神经网络基础:从简单RNN开始 循环神经网络(RNN)通过隐藏状态实现序列数据处理,其核心在于**记忆先前信息**。基础RNN单元包含输入变换、状态更新和激活输出三个关键步骤,形成

gitblog_00113的博客 1156

OpenClaw人人养虾:发现与传输

客户端需要先"发现"Gateway 的地址和端口,才能建立连接。OpenClaw 支持多种发现(Discovery)和传输(Transport)机制。

王国平的博客 572

GRU门控循环单元【数学+图解】

GRU门控循环单元【数学+图解】

逐梦苍穹的博客 2132

8、硬件工程师笔试面试知识器件篇——二极管(2025版本)

当二极管正向偏置时(阳极相对于阴极为正电压),PN结内部的电场减小,允许电子和空穴复合,形成电流。而当二极管反向偏置时,PN结的电场增强,阻止电流通过。在接触区域,P型半导体中的空穴和N型半导体中的自由电子会相互扩散和复合,形成一个没有自由载流子的耗尽区。在设计电子电路时,平衡二极管的正向电压降(Vf)和最大电流(I)是一个重要的考虑因素,因为这两者直接影响电路的性能和效率。通过这些步骤,可以确保在设计电子电路时选择的二极管能够安全地处理预期的最大正向电流和最大反向电压,从而提高电路的可靠性和安全性。

XU157303764的博客 3504

【2024年5月备考新增】《2024高项论文精华版(5)项目工作绩效域和度量绩效域》

3、专注于工作过程和能力。③专注于工作过程和能力。1、制定有效的度量指标。2、度量内容及相应指标。3、展示度量信息和结果。4、管理沟通和参与。7、监督新工作和变更。①制定有效的度量指标。②度量内容及相应指标。③展示度量信息和结果。5、基于度量进行诊断。

Else 的博客 1268

图解LSTM和GRU

1. 前言 1. 长短记忆问题 RNN受限于短期记忆问题。如果一个序列足够长,那它们很难把信息从较早的时间步传输到后面的时间步。因此,如果你尝试处理一段文本来进行预测,RNN可能在开始时就会遗漏重要信息(矩阵连乘)。 在反向传播过程中,RNN中存在梯度消失问题。梯度是用于更新神经网络权重的值,梯度消失问题是指随着时间推移,梯度在传播时会下降,如果梯度值变得非常小,则不会继续学习。其梯度更新规则为:...

m_buddy的博客 3156

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

NLP基础笔记——图解LSTM和GRU

一、LSTM(Long-Short-Term-Memories) LSTM单元结构图及其公式 二、GRU(Gated Recurrent Units) GRU单元结构图及其公式 三、LSTM和GRU的区别? GRU和LSTM的性能在很多任务上不分伯仲。 GRU 参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。 从结构上来说,GRU只有...

IOT_victor的博客 2480

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

lstm原文_超生动图解LSTM和GRU,一文读懂循环神经网络!

作者 Michael Nguyen王小新 编译自 Towards Data Science量子位 出品 | 公众号 QbitAIAI识别你的语音、回答你的问题、帮你翻译外语,都离不开一种特殊的循环神经网络(RNN):长短期记忆网络(Long short-term memory,LSTM)。最近,国外有一份关于LSTM及其变种GRU(Gated Recurrent Unit)的图解教程非常...

weixin_39565332的博客 540

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

AI-循环神经网络三剑客:RNN、LSTM、GRU解析

本文系统介绍了RNN、LSTM和GRU三种处理序列数据的神经网络框架。首先指出传统神经网络在分析序列数据时的局限,进而详解RNN的循环记忆机制、LSTM的门控结构及其解决长期依赖的优势,以及GRU作为LSTM轻量级变体的特点。通过股票预测、情感分析、音乐生成等案例,结合TensorFlow代码实现,生动展示了三种网络的应用场景。文章还提供了对比表格,指导读者根据任务需求选择合适的模型,并给出从基础应用到结合注意力机制等进阶实践建议,帮助读者掌握序列数据处理的关键技术。

achenbusi的博客 1396

让神经网络拥有“记忆”:RNN、LSTM 与 GRU 的通俗图解与代码实战【NLP系列第二篇】

本文系统解析NLP核心序列模型RNN、LSTM与GRU的原理与机制,并结合PyTorch提供代码实战与避坑指南,助你轻松掌握长序列建模。

m0_73777119的博客 691

动态图解RNN、LSTM、GRU

作者 Michael Nguyen 王小新 编译自 Towards Data Science 量子位 出品 | 公众号 QbitAI AI识别你的语音、回答你的问题、帮你翻译外语,都离不开一种特殊的循环神经网络(RNN):长短期记忆网络(Long short-term memory,LSTM)。 最近,国外有一份关于LSTM及其变种GRU(Gated Recurrent Unit)的图解教程非常火。教程先介绍了这两种网络的基础知识,然后解释了让LSTM和GRU具有良好性能的内在机制。当然,通..

qwe1110的博客 608

机器学习/深度学习/NLP-5-RNN、LSTM、GRU

机器学习/深度学习/NLP-5-RNN、LSTM、GRURNNLSTM遗忘门输入门及细胞状态更新输出门GRU参考 RNN RNN(Recurrent Neural Network)即通常所说的循环神经网络。其特点是在多层神经网络的训练中,当前时刻的输出是由当前时刻的输入以及之前时刻的状态共同决定的。它能够有效学习到上下文的序列信息。 RNN是由多个单元组成的,每个单元的形式和操作都是一样的,整体图结构如下: 以这个图为例,可展开如下公式: 其中, V 是输出层权重矩阵,g 是激活函数(常用softma

王小二的博客 1553
上一篇: 介绍你很可能忽视的4个重要的Numpy函数
下一篇: 干货 | 非常详细的有向图模型与无向图模型原理总结
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值