2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > lstm原理_通俗易懂的方式介绍LSTMGRU(动图)

lstm原理_通俗易懂的方式介绍LSTMGRU(动图)

时间:2020-08-19 13:24:35

相关推荐

lstm原理_通俗易懂的方式介绍LSTMGRU(动图)

本文内容主要翻译自:Illustrated Guide to LSTM’s and GRU’s: A step by step explanation

本文首先从直觉上了解一下LSTM和GRU;然后再介绍LSTM和GRU的内部机制。

短期记忆问题

RNN网络会受到短期记忆问题的影响。如果一个输入序列足够长,那么RNN很难将早期的信息传送到之后的时间步上。如果你正在尝试处理一段文字来进行预测,RNN可能会丢失掉起始部分的重要信息。

在反向传播过程中,RNN网络会遇到梯度消失问题。反向传播过程中计算的梯度用于对权重参数进行更新。梯度消失问题是指梯度随着时间的推移而逐渐减小[或者说由于链式的法则,梯度值从后往前越来越小],如果梯度值变得非常小,那么权重参数就不再更新。

所在RNN网络中,获得小梯度的网络层将终止学习过程,通常这些网络层为模型的前几层。因为这些网络层停止学习,RNN可能会忘记在长序列中看到的信息,因此具有短期记忆。

解决方法:LSTM & GRU

LSTM和GRU的提出是为了解决传统RNN遇到的短期记忆问题,它们内部具有称为“门”的机制,可以调节信息的流动。

这些“门”可以通过学习知道输入数据序列中那部分是重要的需要保留,那部分可以丢弃。通过这样的“门”,相关信息可以沿序列的长链传递下去从而进行预测。几乎所有基于递归神经网络的技术成果都是通过这两个网络实现的。LSTM和GRU可以用于语音识别、语音合成以及文本生成,甚至可以用它们来为视频生成字幕。

下面,我们通过图示对这两种网络进行介绍,在介绍过程中会避免大量的数学计算;通过图示,我们能对这两种网络的内部机制有清晰的了解。

本质

我们先开始做一个小实验。假设你想要在网上买一份麦片,首先你会阅读购买用户的商品评价进而决定是否购买。

当你阅读上述评论时,大脑会下意识地只记住那些关键词,如“amazing","perfectly balanced breakfast",对”this“,”gave“,”all“,”should“等词并不会太过关注。如果你朋友第二天问题评论的内容,你可能不会一字不差地记住评论内容,可能只记得关键信息,像”will definitely be buying again“.而不记得其他词汇。

这基本上就像是LSTM和GRU所做的事情,它们可以学习只保留相关信息来进行预测,并忘记不相关的数据信息。在这个例子中,你记得的词汇信息可以帮助你判断这个商品是否值得购买。

RNN回顾

为了了解LSTM和GRU的实现原理,我们先回顾一下RNN。RNN的工作原理:首先将单词转换成机器能理解的向量形式,然后将向量依次送到网络中进行处理。

在处理过程中,RNN网络将前一个时间步的隐藏状态传送到当前时间步。RNN的隐藏状态的作用类似于神经网络的"记忆",保存着它处理过的从起始到当前位置的所有数据信息。

让我们聚焦到RNN的单个单元来看一下隐藏状态是如何计算的。首先,将输入数据和前一个隐藏状态聚合,形成一个向量。这个向量拥有当前输入和以前所有的输入信息。这个聚合向量通过一个tanh激活函数,其输出结果即为新的隐藏状态,或者说网络的“记忆”。

Tanh激活函数

tanh激活函数用于帮助调节流经网络的值。tanh网络将输出结果的取值范围限制到(-1, 1).

当向量流过神经网络时,由于各种数学运算,它会经历许多变换。我们假设变化过程为:一个值连续乘以3.通过下面的gif,你可以看到某些值如何爆炸并成为天文数字,从而导致其他值显得微不足道。

tanh激活函数能够将数据的输出范围压缩到-1到1之间,从而达到调整神经网络输出结果的目的。你可以通过下图看到相同的输入数据经过tanh激活函数后的数据变化过程。

这就是RNN的计算过程。RNN的内部计算很少,在恰当的情境下工作效果非常好(如处理短文本序列)。RNN使用的计算资源比它的变体LSTM和GRU都少。

LSTM

LSTM和RNN具有类似的数据控制流,它在前向传播时处理流经单元的数据。两者的不同之处在于LSTM的内部数据操作不同。

这些操作可以保证LSTM对信息的保留和丢弃。下面我们逐步介绍LSTM单元的内部操作。

核心概念

LSTM的核心概念在于细胞状态以及各种门。细胞状态充当信息传输公路,它将相关信息沿着序列链进行传递,你可以将它看做是网络模型的“记忆”。理论上,细胞状态可以在整个序列处理过程中携带相关信息。因此,尽管是早期的信息也能被携带到之后的时间步的细胞中,进而能减缓短期记忆的问题。随着细胞状态的变化,信息通过“门”机制添加或删除到细胞状态中。“门”是一种神经网络,可以决定哪部分信息添加到细胞状态中。这些“门”可以通过学习知道在训练过程中哪些信息需要保留哪些信息需要忘记。

Sigmoid

“门”结构中包含sigmoid激活函数。Sigmoid激活函数和tanh激活函数类似:tanh激活函数将数据的输出范围限制到(-1, 1), sigmoid则将范围限制到(0,1)。这有助于更新和忘记信息,因为任何数字乘以0得0,进而实现信息的“忘记”;任何数字乘以1得原数字,进而实现信息的“保留”。神经网络可以学习指导哪部分数据不重要可以忘记,哪些数据重要需要保留

下面我们看看LSTM中各种门结构。LSTM包括三种用于控制信息流动的门结构,分别是:忘记门、输入门和输出门。

忘记门

忘记门用于决定信息的保留或丢失。前一个神经元的隐藏状态和当前输入传递到sigmoid函数中。输出结果在0至1之间。越接近0表示信息需要被丢弃(忘记),越接近1表示信息需要保留。

输入门

输入门用于更新细胞状态。首先,我们将前一个神经元的隐藏状态和当前输入传送带sigmoid函数中。sigmoid将输出调整到0~1之间,0表示信息不重要,1表示信息重要。此外,将隐藏状态和当前输入传送到tanh函数中得到一个候选状态。然后,将候选状态和sigmoid计算结果进行相乘。sigmoid计算结果用于决定tanh的输出结果哪部分是重要的需要保存。

细胞状态

至此,我们有了充足的信息可以用来更新细胞状态。首先,细胞状态和忘记向量逐元素相乘,如果和一个接近0的值进行相乘,则有可能丢弃细胞状态中元素的值;然后将这个值与输入门的输出结果进行逐元素相加,将神经网络发现的相关信息添加到细胞状态中。这样,我们就完成了细胞状态的更新。

输出门

输出门可以用于确定下一个隐藏状态的值。隐藏状态包含先前的输入信息,同时也可以用于做预测。首先,我们将前一个神经元的隐藏状态和当前输入传送到sigmoid函数中;然后我们将更新后的细胞状态送到tanh激活函数中;最后将tanh函数的输出与sigmoid函数的输出进行相乘,进而确定隐藏状态携带的信息,这个计算结果就是新的隐藏状态值。最后,将新的细胞状态和隐藏状态传送到下一个时间步的神经元中。

让我们来回顾一下,忘记门决定先前时间步的信息哪些信息的相关的需要保留。输入门决定当前时间步开始需要添加的相关信息。输出门决定下一个隐藏状态应该是什么。

运算伪代码

将前一个的隐藏状态和当前输入进行拼接得到一个新的输入,我们称之为combine将combine传送到忘记门中,这一步用于移除不相关的信息将combine传送到候选层中创建一个候选状态。候选状态保存着可能添加到细胞状态的信息将combine传送到输入门中,这一步用于确定候选状态中哪些信息需要添加到新的候选状态中使用忘记门、候选状态和输入门的计算结果,结合先前的细胞状态和候选状态计算新的细胞状态计算当前细胞的输出将输出门和输出相乘得到新的隐藏状态

LSTM网络的控制流就是几个张量计算以及一个for循环。你可以使用隐藏状态做预测。通过这些机制,LSTM在序列处理过程中可以决定哪部分信息需要忘记,哪些数据需要遗忘。

GRU

了解了LSTM的工作原理,我们来简单介绍一个GRU。GRU是RNN的一个新变体,工作原理和LSTM很相似。GRU没有细胞状态,只有一个隐藏状态用于传送信息。它只有两个门结构:重置门和更新门。

更新门

更新门和LSTM中的遗忘门和输入门功能类似。它可以决定哪部分信息需要遗忘哪些信息需要被添加。

重置门

重置门用于决定先前的信息哪些部分需要遗忘。

GRU内部的张量计算更少,因此GRU的训练速度比LSTM更快。但是很难确定两者之间孰优孰劣。研究者和算法工程师通常会都尝试一下,然后决定到底是用哪一个。

总结

RNN 用于处理序列数据来进行预测,但容易受到短期记忆的制约。LSTM 和 GRU 采用门结构来克服短期记忆的影响。门结构是一种神经网络,可以调节流经序列链的信息流。LSTM和GRU可以用于语音识别,语音合成,自然语言理解等任务中。

关注公众号,一起交流成长~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。