理解LSTM

1. 传统神经网络与RNN

人类并非在每个时刻重新进行思考。当你在阅读一篇文章时,你是基于对前面的一些词的理解去理解下一个词的。而并非边阅读边丢掉多有信息重新进行思考。因此说,人类的思考具有持续性。而传统的神经网络做不到这一点,这是其重要的短板。RNN解决了这个问题。其结构中的循环,使得信息被保留下来。

如下图,右侧是左侧的循环的展开形式。RNN(递归神经网络)可以被认为是同一网络的多个副本,每个副本将消息传递给后继网络。这种链状性质揭示了递归神经网络与序列和列表密切相关。RNN是作用于这类数据的天然结构。RNNs应用到各种问题上取得了成功:语音识别、语言建模、翻译、图像字幕。

RNN网络结构

2. Long-Term Dependencies 存在的问题

RNNs的关键在于,它们可能能够将先前的信息连接到当前任务,例如使用先前的视频帧可以增强对当前帧的理解。如果RNNs能做到这一点,它们将是极其有用的。但他们能吗?这要看情况。

有时,我们只需查看最近的信息即可执行当前任务。例如,考虑一个语言模型,它试图基于前面的单词预测下一个单词。如果我们试图预测“the clouds are in the sky”中的最后一个词,我们不需要任何进一步的上下文——很明显下一个词将是天空。在这种情况下,如果相关信息与所需位置之间的差距很小,RNNs可以学习使用过去的信息。

但也有些情况下,我们需要更多的背景。考虑试着预测课文中的最后一个词:“我在法国长大……我说一口流利的法语。“最近的信息表明,下一个词可能是一种语言的名称,但如果我们想缩小哪种语言的范围,我们需要法国的上下文,从更远的地方追溯。相关信息与需要的信息之间的差距很可能变得非常大。

而在RNN中,随着gap的增大,将无法学习到这些信息。

3. LSTM

长期短期内存网络(通常称为“LSTMs”)是一种特殊的RNN,能够学习长期依赖关系。LSTMs的明确设计是为了避免长期依赖问题。长时间记忆信息实际上是他们的默认行为,而不是他们努力学习的东西!所有递归神经网络都具有神经网络的重复模块链的形式。在标准RNNs中,该重复模块将具有非常简单的结构。LSTMs也具有这种链状结构,但是其中的重复模块与RNN 完全不同。RNN 中此模块为单一的神经网络层,而在LSTMs中,是四个相互作用的层。

The repeating module in an LSTM contains four interacting layers  
符号解释

在上图中,每一行都承载一个完整的向量,从一个节点的输出到其他节点的输入。粉红色圆圈表示点状运算,如向量加法;而黄色方框表示学习神经网络层。行合并表示串联,而行分叉表示其内容被复制且副本去往不同位置。

4. 深入LSTM

LSTMs的关键是cell state,即贯穿图表顶部的水平线。cell state有点像传送带。它直接沿着整个链运行,只有一些小的线性相互作用。信息很容易不变地沿着它流动。

cell state

LSTM确实具有移除或添加信息到cell state的能力,由称为门的结构调节。门是一种可选地让信息通过的方式。它们由sigmoid神经网络层和逐点乘法运算组成。

gate

sigmoid层输出介于0和1之间的数字,描述每个组件应通过的数量。

LSTM具有三个这样的门,以保护和控制cell state。

1) LSTM的第一步是决定我们要从cell state中丢弃哪些信息,由称为“forget gate layer”的sigmoid层做出选择。“它接收 h(t - 1)和x(t),并为cell state c(t - 1)中的每个数字输出介于0和1之间的数字。输出1表示“完全保留此值”,而0表示“完全删除此值”。在语言模型的例子中,它试图基于前面所有的单词来预测下一个单词。在这样的问题中,细胞状态可能包括本主题的性别,以便可以使用正确的代词。当我们看到一个新的主题时,我们想忘记旧主题的性别。

Step1:  forget gate layer 决定丢弃的信息  

2) 决定在cell state下存储哪些新信息。这包括两个部分。首先,名为“input gate layer”的sigmoid层决定了我们要更新的值。接下来,tanh层创建一个新的候选值向量C~t,它可以添加到状态中。在下一步中,我们将结合这两者来创建状态更新。

决定存储哪些信息

在我们的语言模型的例子中,我们希望将新主题的性别添加到细胞状态中,以替换我们忘记的旧主题。

旧状态C(t-1)更新为新的状态C(t),对之前的信息进行部分的遗忘,再加上部分新信息(更新比例*候选值)

我们用ft乘以旧的状态,忘记了我们之前决定忘记的事情。然后我们加上it∗C~t。这是新的候选值,按我们决定更新每个状态值的多少来缩放。

在语言模型的例子中,这是丢弃旧主题的性别信息并添加新信息的地方。

3)最后,我们需要决定我们要输出什么。此输出将基于cell state,但将是筛选版本。首先,我们运行一个sigmoid层,它决定我们要输出的cell state哪些部分。然后,我们将cell state通过tanh (将值推至- 1和1之间),并将其乘以sigmoid门的输出,以便仅输出我们决定的部分。

对于语言模型示例,由于它只看到了一个主题,因此它可能需要输出与动词相关的信息,以防接下来发生这种情况。例如,它可以输出主语是单数还是复数,这样我们就知道动词接下来应该共轭成什么形式。

对cell state 进行选择,作为输出

https://boweihe.me/2016/08/26/dssm%E4%B8%8Elstm/

你可能感兴趣的:(理解LSTM)