Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【综述专栏】循环神经网络RNN(含LSTM,GRU)小综述

【综述专栏】循环神经网络RNN(含LSTM,GRU)小综述

作者头像
马上科普尚尚
发布于 2021-01-13 06:24:50
发布于 2021-01-13 06:24:50
5.2K0
举报

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

作者:CSDN—我就是黑凤梨

地址:https://blog.csdn.net/hzy199772

全连接神经网络(Full Connected Neural Networks, FCNN)具有局限性,其同一层的节点之间是无连接的,当需要用到序列之前时刻的信息时,FCNN无法办到。由于FCNN一个序列的不同位置之间无法共享特征,所以只能单独的处理一个个的输入,即前一个输入和后一个输入之间没有关系,无法处理在时间或空间上有前后关联的输入问题。

重点介绍RNN的发展历史、模型改进及其应用领域,总结了RNN模型的特点及相关工作,旨在为刚进入该领域的初学者和对RNN进行深入研究的学者提供参考资料。

01

RNN循环神经网络

1.1 RNN的结构

RNN的结构图如图:

右方是左方图的展开形式,对于每一个时间步t,都有来自前面时间步的信息,并加以权重w用于控制,在每一个时间步中,从输入X,加上权重Wx,和来自上一步的激活值a,以及激活值权重Wa,经过激活函数输出y,然后再对y使用损失函数计算损失。

但是这种做法会造成,在任一时间步t中处理时,只参考或者说获取了前面时间步的特征,序列后方的信息特征没有学习到,这无疑会造成问题,所以我们引入了BRNN(双向循环神经网络)

1.2 BRNN的结构

BRNN的结构如图:

BRNN的隐藏层需要记录两个值。A参与正向计算,A’参与反向计算。最终的输出值y取决于A和A’。

RNN的前向计算 按照时间序列展开,然后使用基于时间的反向传播算法(Back Propagation Through Time, BPTT)对网络中的参数进行更新,也是目前循环神经网络最常用的训练算法。

1.3 梯度消失和梯度爆炸

这样我们解决了如何学习序列后方特征的问题,但是RNN仍然存在问题,在训练RNN的过程中容易出现梯度爆炸和梯度消失的问题,导致在训练时梯度的传递性不高,即梯度不能在较长序列中传递,从而使RNN无法检测到长序列的影响。对于基于梯度的学习需要模型参数θ和损失函数L之间存在闭式解,根据估计值和实际值之间的误差来最小化损失函数,那么在损失函数上计算得到的梯度信息可以传回给模型参数并进行相应修改。

假设对于序列x1,x2,x3……,xt ,通过St=F(s,x)将上一时刻的状态映射到下 一 时刻的状态S。T时刻损失函数L关于参数的梯度为:

假设循环网络若要可靠地存储信息即 也意味着当模型能够保持长距离依赖z时,其本身也处于梯度消失的情况下。随着时间跨度增加,梯度也会以指数级收敛于0。当 发生梯度爆炸的现象, 网络也陷入局部不稳定。

梯度爆炸问题是指在RNN中,每一步的梯度更新可能会积累误差,最终梯度变得非常大,以至于RNN的权值进行大幅更新,程序将会收到NaN错误。一般而言,梯度爆炸问题更容易处理,可以通过设置一个阈值来截取超过该阈值的梯度。

梯度消失的问题更难检测,可以通过使用其他结构的RNNs来应对,例如长短期记忆网络(long short-term memory, LTSM)和门控循环单元(Gated Recurrent Unit, GRU)。

02

LSTM

2.1 引子

使用梯度下降方法来优化RNN的一个主要问题就是梯 度在沿着序列反向传播的过程中可能快速消失。已经有大量的研究工作用于解决RNN中存在的训练问题并且提出了关于RNN的变体LSTM.

2.2 LSTM单元

LSTM的关键是细胞状态,表示细胞状态的这条线水平的穿过图的顶部。

细胞的状态类似于输送带,细胞的状态在整个链上运行,只有一些小的线性操作作用其上,信息很容易保持不变的流过整个链。

LSTM确实具有删除或添加信息到细胞状态的能力,这个能力是由被称为门(Gate)的结构所赋予的。门(Gate)是一种可选地让信息通过的方式。它由一个Sigmoid神经网络层和一个点乘法运算组成。Sigmoid神经网络层输出0和1之间的数字,这个数字描述每个组件有多少信息可以通过, 0表示不通过任何信息,1表示全部通过

LSTM单元中有三种类型的门控,分别为:输入门i、遗忘门f和输出门o,门控可以看作一层全连接层,LSTM对信息的存储和更新正是由这些门控来实现。

更具体地说, 门控是由sigmoid函数和点乘运算实现,门控并不会提供额外的信息。门控的一般形式可以表示为: 其中 Sigmoid 函数,是机器学习中常用的非线性激活函数,可以将一个实值映射到区间 0 ~ 1,用于描述信息通过的多少.当门的输出值为0 ,表示没有信息通过,当值为1 则表示所有信息都可以通过。

LSTM的前向计算过程可以表示为式(1) ~ (5)。在时间步t时,LSTM的隐藏层的输入和输出向量分别为xt和ht,记忆单元为ct .输入门用于控制网络当前输入数据xt流入记忆单元的多少,即有多少可以保存到ct,其值为:

遗忘门是LSTM单元的关键组成部分,可以控制哪些信息要保留哪些要遗忘,并且以某种方式避免当梯度随时间反向传播时引发的梯度消失和爆炸问题。遗忘门控制自连接单元 ,可以决定历史信息中的哪些部分会被丢弃。即上一时刻记忆单元Ct-1中的信息对当前记忆单元Ct 的影响。

输出门控制记忆单元ct对 当 前 输 出 值 ht的 影 响 ,即记忆单元中的哪一部分会在时间步t 输出。输出门的值如式(4) 所示 ,LSTM单元的在t时刻的输出 ht可 以 通 过 式 (5)得到。

2.3 LSTM的补充理解方式和变种(☆)

2.3.1一步步的拆解LSTM

LSTM的第一步是决定我们要从细胞状态中丢弃什么信息。该决定由被称为“遗忘门”的Sigmoid层实现。它查看ht-1(前一个输出)和xt(当前输入),并为单元格状态Ct-1(上一个状态)中的每个数字输出0和1之间的数字。1代表完全保留,而0代表彻底删除。

下一步是决定我们要在细胞状态中存储什么信息。这部分分为两步。首先,称为“输入门”的Sigmoid层决定了我们将更新哪些值。接下来一个tanh层创建候选向量Ct,该向量将会被加到细胞的状态中。在下一步中,我们将结合这两个向量来创建更新值。

现在是时候去更新上一个状态值Ct−1了,将其更新为Ct。我们将上一个状态值乘以ft,以此表达期待忘记的部分。之后我们将得到的值加上 it∗C̃ t。这个得到的是新的记忆细胞的值。

最后,我们需要决定我们要输出什么。此输出将基于我们的细胞状态,但这明显是参考了记忆细胞C的过滤版本。首先,我们运行一个sigmoid,它决定了我们要输出的细胞状态的哪些部分。然后,我们将单元状态通过tanh(将值规范化到-1和1之间),并将其乘以Sigmoid门的输出,至此我们只输出了我们决定的那些部分。

2.3.2LSTM变种

一个比较流行的LSTM变种是由Gers & Schmidhuber (2000)提出的,添加“peephole connections”。这意味着允许gate层去看细胞的状态。下图中所有的Sigmoid层都增加了窥视,但许多论文实现不是针对所有都增加窥探,而是有针对性的增加。这也叫做窥视孔连接.

另一种变化是使用耦合的忘记和输入门,而不是单独决定要忘记什么、添加什么,这个决定需要一起做。只有当需要输入某些信息的时候,我们才会忘记这个位置的历史信息。只有当我们忘记一些历史信息的时候,我们才在状态中添加新的信息。

LSTM的一个稍微更显着的变化是由Cho介绍的门控循环单元(或GRU)。它将遗忘门和输入门组合成一个统一的“更新门”。它还将单元格状态和隐藏状态合并,并进行了一些其他更改。所得到的模型比标准LSTM模型更简单,并且越来越受欢迎。GRU将在下一节进行介绍。

03

GRU

3.1 GRU介绍

在LSTM中,引入了三个门函数:输入门、遗忘门和输出门。而在GRU中,只有两个门:更新门和重置门。模型的结构如图所示:

GRU的前向传播公式:

GRU 有两个有两个门,即一个重置门(reset gate)和一个更新门(update gate)。从直观上来说,重置门决定了如何将新的输入信息与前面的记忆相结合,更新门定义了前面记忆保存到当前时间步的量。如果我们将重置门设置为 1,更新门设置为 0,那么我们将再次获得标准 RNN 模型。使用门控机制学习长期依赖关系的基本思想和 LSTM 一致,但还是有一些关键区别:

3.2 GRU详解

3.2.1 更新门

在时间步 t,我们首先需要使用以下公式计算更新门 :

其中 为第 t 个时间步的输入向量,即输入序列 X 的第 t 个分量,它会经过一个线性变换(与权重矩阵 W(z) 相乘)。 保存的是前一个时间步 t-1 的信息,它同样也会经过一个线性变换。更新门将这两部分信息相加并投入到 Sigmoid 激活函数中,因此将激活结果压缩到 0 到 1 之间。以下是更新门在整个单元的位置与表示方法。

更新门帮助模型决定到底要将多少过去的信息传递到未来,或到底前一时间步和当前时间步的信息有多少是需要继续传递的。这一点非常强大,因为模型能决定从过去复制所有的信息以减少梯度消失的风险。

3.2.2 重置门

本质上来说,重置门主要决定了到底有多少过去的信息需要遗忘,我们可以使用以下表达式计算: 该表达式与更新门的表达式是一样的,只不过线性变换的参数和用处不一样而已。下图展示了该运算过程的表示方法。如前面更新门所述, 和 先经过一个线性变换,再相加投入 Sigmoid 激活函数以输出激活值。

3.2.3 当前记忆内容

现在我们具体讨论一下这些门控到底如何影响最终的输出。在重置门的使用中,新的记忆内容将使用重置门储存过去相关的信息,它的计算表达式为:

入 与上一时间步信息 先经过一个线性变换,即右乘矩阵 。因为前面计算的重置门是一个由 0 到 1 组成的向量,它会衡量门控开启的大小。例如某个元素对应的门控值为 0,那么它就代表这个元素的信息完全被遗忘掉。该乘积将确定所要保留与遗忘的以前信息。将这两部分的计算结果相加再投入双曲正切激活函数中。该计算过程可表示为:

3.2.4 当前时间步的最终记忆

在最后一步,网络需要计算 ,该向量将保留当前单元的信息并传递到下一个单元中。在这个过程中,我们需要使用更新门,它决定了当前记忆内容 h’t 和前一时间步 h(t-1) 中需要收集的信息是什么。这一过程可以表示为:

为更新门的激活结果,它同样以门控的形式控制了信息的流入。 与 的 乘积表示前一时间步保留到最终记忆的信息,该信息加上当前记忆保留至最终记忆的信息就等于最终门控循环单元输出的内容。

门控循环单元不会随时间而清除以前的信息,它会保留相关的信息并传递到下一个单元,因此它利用全部信息而避免了梯度消失问题。

参考文献

[1] 作者:colah 链接:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 来源:Understanding LSTM Networks(Github) [2] 作者:Jerry_wl 链接:https://www.jianshu.com/p/4b4701beba92 来源:简书 [3] 作者:杨丽,吴雨茜,王俊丽,刘义理 论文:《循环神经网络研究综述》 来源:计算机应用, 2018, 38( S2): 1 - 6,26 [4] 翻译者:李亚洲 文章:《经典必读:门控循环单元(GRU)的基本概念与原理》 来源:https://www.jiqizhixin.com/articles/2017-12-24

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人工智能前沿讲习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【深度学习实验】循环神经网络(三):门控制——自定义循环神经网络LSTM(长短期记忆网络)模型
LSTM(长短期记忆网络)是一种循环神经网络(RNN)的变体,用于处理序列数据。它具有记忆单元和门控机制,可以有效地捕捉长期依赖关系。
Qomolangma
2024/07/30
1.5K0
【深度学习实验】循环神经网络(三):门控制——自定义循环神经网络LSTM(长短期记忆网络)模型
神经网络结构——CNN、RNN、LSTM、Transformer !!
本文将从什么是CNN?什么是RNN?什么是LSTM?什么是Transformer?四个问题,简单介绍神经网络结构。
JOYCE_Leo16
2024/03/19
33.4K0
神经网络结构——CNN、RNN、LSTM、Transformer !!
⻓短期记忆LSTM
在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。LSTM就是具备了这一特性。
大数据技术与机器学习
2019/11/20
1.7K0
RNN及其变种LSTM/GRU/SRU
在某轮迭代tt中考虑公式5、6,用于计算RNN错误 ,我们对每一步迭代计算错误率总和。那么每一步tt的错误率 均可通过前面所列的计算出来。
百川AI
2021/12/31
9630
RNN及其变种LSTM/GRU/SRU
白话--长短期记忆(LSTM)的几个步骤,附代码!
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/08/29
1.4K0
白话--长短期记忆(LSTM)的几个步骤,附代码!
变种 LSTM —— GRU 原理
门控循环单元(GRU)与 长短期记忆(LSTM)原理非常相似,同为使用门控机制控制输入、记忆等信息而在当前时间步做出预测。但比起 LSTM,GRU的门控逻辑有些许不同。
Ewdager
2020/07/14
1.5K0
变种 LSTM —— GRU 原理
一份详细的LSTM和GRU图解
在这篇文章中,我们将从LSTM和GRU背后的直觉开始。然后我(Michael)将解释使LSTM和GRU表现良好的内部机制。如果你想了解这两个网络背后的机制,那么这篇文章就是为你准备的。
AiTechYun
2018/10/25
3.8K0
一份详细的LSTM和GRU图解
教程 | 经典必读:门控循环单元(GRU)的基本概念与原理
选自Medium 作者:Simeon Kostadinov 机器之心编译 参与:蒋思源 LSTM 通过门控机制使循环神经网络不仅能记忆过去的信息,同时还能选择性地忘记一些不重要的信息而对长期语境等关系进行建模,而 GRU 基于这样的想法在保留长期序列信息下减少梯度消失问题。本文介绍了 GRU 门控机制的运算过程,更详细的内容请查看原论文。 在本文中,我们将讨论相当简单且可理解的神经网络模型:门控循环单元(GRU)。根据 Cho, et al. 在 2014 年的介绍,GRU 旨在解决标准 RNN 中出现的
机器之心
2018/05/11
10.8K0
深度学习基础入门篇-序列模型[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解
生活中,我们经常会遇到或者使用一些时序信号,比如自然语言语音,自然语言文本。以自然语言文本为例,完整的一句话中各个字符之间是有时序关系的,各个字符顺序的调换有可能变成语义完全不同的两句话,就像下面这个句子:
汀丶人工智能
2023/05/24
1.4K0
深度学习基础入门篇-序列模型[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解
LSTM和GRU的解析从未如此通俗易懂
▌短时记忆 RNN 会受到短时记忆的影响。如果一条序列足够长,那它们将很难将信息从较早的时间步传送到后面的时间步。 因此,如果你正在尝试处理一段文本进行预测,RNN 可能从一开始就会遗漏重要信息。 在反向传播期间,RNN 会面临梯度消失的问题。 梯度是用于更新神经网络的权重值,消失的梯度问题是当梯度随着时间的推移传播时梯度下降,如果梯度值变得非常小,就不会继续学习。
机器学习AI算法工程
2019/10/28
2.1K0
技能 | 三次简化一张图: 一招理解LSTM/GRU门控机制
作者 | 张皓 引言 RNN是深度学习中用于处理时序数据的关键技术, 目前已在自然语言处理, 语音识别, 视频识别等领域取得重要突破, 然而梯度消失现象制约着RNN的实际应用。LSTM和GRU是两种目前广为使用的RNN变体,它们通过门控机制很大程度上缓解了RNN的梯度消失问题,但是它们的内部结构看上去十分复杂,使得初学者很难理解其中的原理所在。本文介绍”三次简化一张图”的方法,对LSTM和GRU的内部结构进行分析。该方法非常通用,适用于所有门控机制的原理分析。 预备知识: RNN RNN (recurr
AI科技大本营
2018/04/26
1.3K0
技能 | 三次简化一张图: 一招理解LSTM/GRU门控机制
【AI前沿】深度学习基础:循环神经网络(RNN)
循环神经网络(RNN)与传统的前馈神经网络(如多层感知器和卷积神经网络)不同,RNN具有内存能力,能够在处理当前输入时保留之前的信息。这使得RNN特别适合处理序列数据,如文本、语音和时间序列等。
屿小夏
2024/07/13
4090
【AI前沿】深度学习基础:循环神经网络(RNN)
循环神经网络(二) ——GRU、LSTM、BRNN、deep RNN
循环神经网络(二) ——GRU、LSTM、BRNN、deep RNN (原创内容,转载请注明来源,谢谢) 一、概述 本文主要讲述RNN的其他结构,这些结构比RNN更常用,而且对于自然语言处理,有更高效
用户1327360
2018/03/29
3.8K0
循环神经网络(二) ——GRU、LSTM、BRNN、deep RNN
循环神经网络——实现LSTM
网络回忆:在《循环神经网络——介绍》中提到循环神经网络用相同的方式处理每个时刻的数据。
bear_fish
2018/09/19
1.1K0
循环神经网络——实现LSTM
十 | 门控循环神经网络LSTM与GRU(附python演练)
门控循环神经网络在简单循环神经网络的基础上对网络的结构做了调整,加入了门控机制,用来控制神经网络中信息的传递。门控机制可以用来控制记忆单元中的信息有多少需要保留,有多少需要丢弃,新的状态信息又有多少需要保存到记忆单元中等。这使得门控循环神经网络可以学习跨度相对较长的依赖关系,而不会出现梯度消失和梯度爆炸的问题。如果从数学的角度来理解,一般结构的循环神经网络中,网络的状态
磐创AI
2018/12/17
1.4K0
动图详解LSTM和GRU
反向传播(Back Propagation)是一种与最优化方法(比如梯度下降方法)结合、用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度,然后将梯度反馈给最优化方法,用来更新网络权重以最小化损失函数。
YoungTimes
2022/04/28
1.1K0
动图详解LSTM和GRU
【算法】循环神经网络RNN
小编邀请您,先思考: 1 RNN和LSTM有什么异同? 2 RNN的输入和输出分别是什么? 3 如何用Python实现RNN? 传统的机器学习方法,如SVM、logistics回归和前馈神经网络都没有将时间进行显式模型化,用这些方法来建模都是基于输入数据独立性假设的前提。但是,对于很多任务而言,这非常局限。举个例子,假如你想根据一句没说完的话,预测下一个单词,最好的办法就是联系上下文的信息。下面有两种解决方案 1.一种思路是记忆之前的分类器的状态,在这个基础上训练新的分类器,从而结合历史影响,但是这样需要大
陆勤_数据人网
2018/04/18
1.3K0
【算法】循环神经网络RNN
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
RNN在处理长期依赖(时间序列上距离较远的节点)时会遇到巨大的困难,因为计算距离较远的节点之间联系时会涉及雅可比矩阵的多次相乘,会造成梯度消失或者梯度膨胀的现象。为了解决该问题,研究人员提出了许多解决办法,例如ESN(Echo State Network),增加有漏单元(Leaky Units)等等,其中成功应用最广泛的就是门限RNN(Gated RNN),而LSTM就是门限RNN中最著名的一种。有漏单元通过设计连接间的权重系数,从而允许RNN累积距离较远节点间的长期联系;而门限RNN则泛化了这样的思想,允许在不同时刻改变该系数,且允许网络忘记当前已经积累的信息。
JOYCE_Leo16
2024/04/09
1700
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
从90年代的SRNN开始,纵览循环神经网络27年的研究进展
选自arXiv 作者:Hojjat Salehinejad等 机器之心编译 参与:刘晓坤、路雪、蒋思源 近日,来自多伦多大学和滑铁卢大学的研究者撰文介绍循环神经网络的基础知识、近期发展和面临的挑战。机
机器之心
2018/05/11
7450
LSTM 为何如此有效?这五个秘密是你要知道的
长短期记忆网络(LSTM),作为一种改进之后的循环神经网络,不仅能够解决 RNN无法处理长距离的依赖的问题,还能够解决神经网络中常见的梯度爆炸或梯度消失等问题,在处理序列数据方面非常有效。
AI科技评论
2020/04/14
1.4K0
LSTM 为何如此有效?这五个秘密是你要知道的
推荐阅读
相关推荐
【深度学习实验】循环神经网络(三):门控制——自定义循环神经网络LSTM(长短期记忆网络)模型
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档