一文了解LSTM和GRU背后的秘密

db3d0feb2b09b97dad59c0a58cf5908194646c4a

你好,欢迎阅读长短期记忆网络(LSTM)和门控循环单元(GRU)的图解文章。我是Michael,是AI语音助理领域的机器学习工程师。
在这篇文章中,我们将从LSTM和GRU背后的原理出发。然后我将解释允许LSTM和GRU表现良好的内部机制。如果你想了解这两个网络的背后到底是什么,那么这篇文章就是为你准备的。

问题根源短期记忆

递归神经网络(RNN)具有短期记忆。如果序列足够长,他们将很难将信息从较早的时间步骤传送到后面的步骤。因此,如果你正在尝试对一段文本进行预测,RNN可能会从一开始就遗漏掉重要信息。
在反向传播期间,递归神经网络(RNN)会遇到梯度消失问题。梯度是用于更新神经网络权重的值。梯度消失问题是当梯度随着时间的推移传播时梯度下降。如果梯度值变得非常小,则不会继续学习。

cbb7cef7c183ac08f3cc87086c3bd8d2a00c2b83

梯度更新的规则

因此,在递归神经网络中,获得小梯度更新的层会停止学习,而这些层通常是较早的层次。因为这些层不学习,RNN可以忘记它在较长序列中看到的内容,因此具有短期记忆。如果你想了解更多关于递归神经网络的一般机制,可以在这里阅读这篇帖子

解决方案:LSTM和GRU

LSTM和GRU是作为短期记忆的解决方案而创建的。它们具有称为门的内部机制,可以调节信息流。

eae2d920091ba9cbebd41bde0a42cd0fb2935bc7

这些门可以了解序列中哪些数据是需要保留或丢弃的。通过这样方式,它可以沿着长链序列传递相关信息进行预测。几乎所有基于递归神经网络的现有技术结果都是通过这两个网络实现的。LSTM和GRU可以在语音识别,语音合成和文本生成中找到,甚至可以使用它们为视频生成字幕。
到此为止,你应该对LSTM和GRU擅长处理长序列的原因有充分的了解。我将通过直观的解释和插图来解决介绍它们,中间避免尽可能多的数学运算。

本质

让我们从一个实验开始吧。假设你在网上查看淘宝评论,以确定你是否想购买生活物品。你将首先阅读评论,然后确定是否有人认为它是好的或是否是坏的。

9e8c5375eb4dcb356f4459d35a24b19270df7b86

当你阅读评论时,你的大脑下意识地只会记住重要的关键词。你会选择“惊人”和“完美均衡的早餐”这样的词汇。你不太关心“this”,“give”,“all”,“should”等。如果你的朋友第二天问你评论说什么,你不可能一字不漏地记住它。但你可能还记得主要观点,比如“肯定会再次购买”。其他的话就会从记忆中逐渐消失。

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

综述RNN

为了理解LSTM或GRU如何实现这一点,让我们回顾一下递归神经网络。RNN的工作原理如下; 第一个词被转换成机器可读的向量,然后RNN逐个处理矢量序列。

4da723bb8059de49e85944f42ebbf795bcae5d3d

逐一顺序处理

处理时,它将先前的隐藏状态传递给序列的下一步。隐藏状态充当神经网络记忆,其中包含了有关网络以前见过的先前数据的信息。

让我们看看RNN的一个单元,看看它将如何计算隐藏状态。首先,将输入和先前隐藏状态组合以形成向量。该向量现在具有关于当前输入和先前输入的信息。向量经过tanh函数,输出是新的隐藏状态,或网络的内存。

7c128e4313a81157b2de5568223867b2dee1d80c

激活函数:Tanh

激活函数tanh用于帮助调节流经网络的值。tanh函数将值限制与在-1和1之间。

5ac8ffe7d118a466d13b9aad1ded87246a57d78f

Tanh squishes值介于-1和1之间

当向量流经神经网络时,由于各种数学运算,它经历了许多变换。所以想象一个值继续乘以3。你可以看到某些值如何爆炸并变得天文数字, 从而导致其他值看起来微不足道。

f87f0c56481b4756b342fdb884f08d45fda85ce4

没有tanh函数的变换

tanh函数确保值保持在-1和1之间,从而调节神经网络的输出。你可以看到上面的相同值如何保持在tanh函数允许的边界之间。

549fcd783ea319103878d6d8b51a62525b526d27

矢量变换与tanh

这是一个RNN,它内部的操作很少,但在适当的情况下工作得很好。RNN使用的计算资源比它的演化变体LSTM和GRU少得多。

LSTM

LSTM具有与递归神经网络类似的控制流程,都是向前传播时处理传递信息的数据。差异是LSTM细胞内的操作。

2f87001758dbdd2307986f6d43e2dff55f7ecaf2

LSTM Cell及其运算

这些操作允许LSTM保留或忘记信息。现在看这些操作可能会有点复杂,所以我们将逐步介绍这些操作。

核心概念

LSTM的核心概念是细胞状态,以及其中的各种门结构。细胞状态充当传输高速公路,在序列链中一直传递相关信息。你可以将其视为网络的“记忆”。理论上,细胞状态可以在序列的整个处理过程中携带相关信息。因此,即使来自较早时间步骤的信息也可以使其成为稍后时间步骤的方法,从而减少短期记忆的影响。当细胞状态继续进行时,信息通过门被添加或移除到细胞状态。门是不同的神经网络,决定在细胞状态上允许哪些信息。有些门可以了解在训练期间保持或忘记哪些信息。

Sigmoid

门结构中包含sigmoid激活函数。S形激活函数类似于tanh激活函数。但它不是在-1和1之间取值,而是在0和1之间取值。这有助于更新或忘记数据,因为任何数字乘以0都是0,这会导致值消失或被“遗忘”。任何数字乘以1是相同的值,因此值保持相同或“保持”。网络可以了解哪些数据不重要因此可能被遗忘或哪些数据很重要。

5ab9471f0d7d72fbd255300b305feb4e5575f48a

Sigmoid squishes值介于0和1之间

接下来让我们深入了解不同的门有什么作用,我们有三个不同的门来调节LSTM单元中的信息流。遗忘门、输入门和输出门。

遗忘门

遗忘门决定了应丢弃或保留哪些信息。来自先前隐藏状态的信息和来自当前输入的信息通过sigmoid函数传递。值介于0和1之间,越接近0意味着忘记,越接近1意味着要保持。

3a0dff81359ce65cc244b953e520af841d0399b5

遗忘门操作

输入门

输入门要更新单元状态,首先,我们将先前的隐藏状态和当前输入传递给sigmoid函数。这决定了通过将值转换为0到1来更新哪些值:0表示不重要,1表示重要。接着你还要将隐藏状态和当前输入传递给tanh函数,以便在-1和1之间取值以帮助调节网络。然后将tanh输出与sigmoid输出相乘。sigmoid输出将决定哪些信息对于输出很重要。

31c1c27e639b8199fd01733019373d5ce852a184

输入门操作

细胞状态

现在我们应该有足够的信息来计算细胞状态。首先,细胞状态逐点乘以遗忘向量。如果它乘以接近0的值,则有可能在单元状态中丢弃。然后我们从输入门获取输出并进行逐点相加,将神经网络发现的新值更新为细胞状态中,这就给了我们新的细胞状态。

8c012db54726ac75227ef7efdd7e806e384adc01

细胞状态的计算

输出门

最后是输出门,输出门决定下一个隐藏状态应该是什么。请记住,隐藏状态包含有关先前输入的信息,隐藏状态也可用于预测。首先,我们将先前的隐藏状态和当前输入传递给sigmoid函数。然后我们将新修改的单元状态传递给tanh函数。我们将tanh输出与sigmoid输出相乘,以确定隐藏状态应携带的信息,输出的是隐藏状态。然后将新的细胞状态和新的隐藏状态转移到下一个时间步。

223d3d88beebe340ffb93c9bd294002086204489

输出门运算操作

让我们整理一下整个思路,遗忘门决定与先前步骤保持相关的内容;输入门决定从当前步骤添加哪些信息;输出门决定下一个隐藏状态应该是什么。

代码演示

对于那些通过查看代码更好理解的人,这里有一个使用python伪代码的例子:

9794089dff0de0465d5ed187da7d3f0649366098

python伪代码

1.首先,先前的隐藏状态和当前输入被连接起来,我们称之为combine
2.将get的fed组合到forget层中,该层将删除不相关的数据。
3.使用combine创建候选层,候选层保留可能的值以添加到细胞状态。
4.combine同样也可以进入输入层。该层决定应将候选层中的哪些数据添加到新的细胞状态中。
5.在计算遗忘层,候选层和输入层之后,使用那些向量和先前的单元状态来计算单元状态。
6.然后计算输出。
7.最后逐点乘以输出和新的单元状态为我们提供了新的隐藏状态。
LSTM网络的控制流程是几个张量操作和一个for循环。你可以使用隐藏状态进行预测,结合所有这些机制,LSTM可以选择在序列处理期间哪些信息需要记忆或忘记。

GRU

所以现在我们知道LSTM是如何工作的,让我们简单地看一下GRU。GRU是新一代的递归神经网络,与LSTM非常相似。GRU摆脱了细胞状态并使用隐藏状态来传输信息。它也只有两个门,一个复位门和一个更新门。

3d16acdac23df6cced6bc7c059748f481d15be80

GRU细胞状态和它的门

更新门

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

重置门

重置门是另一个门,它决定忘记过去的信息量。
这就是一个GRU,GRU的张量操作较少;因此,它比LSTM更快一点,但没有一个明显的赢家。研究人员和工程师通常会尝试两者来确定哪一个更适合他们的用例。

总结

总而言之,RNN适用于处理序列数据以进行预测,但却受到短期记忆的影响。LSTM和GRU是作为一种使用称为门的机制来缓解短期记忆的痛点而创建的。门结构可以调节流经序列链的信息流。LSTM和GRU正在被用于最先进的深度学习应用,如语音识别,语音合成,自然语言理解等。

发表评论

电子邮件地址不会被公开。 必填项已用*标注