博主讲的非常清晰,一看就懂的那种,本文仅贴LSTM讲解部分,想从头看的直接点击链接看原文。原文地址:https://zhuanlan.zhihu.com/p/104475016
3. 长短时间记忆网络(LSTM)
3.1 LSTM与RNN的关系
长短期记忆(Long Short Term Memory,LSTM)网络是一种特殊的RNN模型,其特殊的结构设计使得它可以避免长期依赖问题,记住很早时刻的信息是LSTM的默认行为,而不需要专门为此付出很大代价。
普通的RNN模型中,其重复神经网络模块的链式模型如下图所示,这个重复的模块只有一个非常简单的结构,一个单一的神经网络层(例如tanh层),这样就会导致信息的处理能力比较低。
而LSTM在此基础上将这个结构改进了,不再是单一的神经网络层,而是4个,并且以一种特殊的方式进行交互。
粗看起来,这个结构有点复杂,不过不用担心,接下来我们会慢慢解释。在解释这个神经网络层时我们先来认识一些基本的模块表示方法。图中的模块分为以下几种:
- 黄色方块:表示一个神经网络层(Neural Network Layer);
- 粉色圆圈:表示按位操作或逐点操作(pointwise operation),例如向量加和、向量乘积等;
- 单箭头:表示信号传递(向量传递);
- 合流箭头:表示两个信号的连接(向量拼接);
- 分流箭头:表示信号被复制后传递到2个不同的地方。
下面我们将分别介绍这些模块如何在LSTM中作用。
3.2 LSTM的基本思想
LSTM的关键是细胞状态(直译:cell state),表示为 ,用来保存当前LSTM的状态信息并传递到下一时刻的LSTM中,也就是RNN中那根“自循环”的箭头。当前的LSTM接收来自上一个时刻的细胞状态 ,并与当前LSTM接收的信号输入 共同作用产生当前LSTM的细胞状态 ,具体的作用方式下面将详细介绍。
在LSTM中,采用专门设计的“门”来引入或者去除细胞状态 中的信息。门是一种让信息选择性通过的方法。有的门跟信号处理中的滤波器有点类似,允许信号部分通过或者通过时被门加工了;有的门也跟数字电路中的逻辑门类似,允许信号通过或者不通过。这里所采用的门包含一个 神经网络层和一个按位的乘法操作,如下图所示:
其中黄色方块表示 神经网络层,粉色圆圈表示按位乘法操作。 神经网络层可以将输入信号转换为 到 之间的数值,用来描述有多少量的输入信号可以通过。 表示“不允许任何量通过”, 表示“允许所有量通过”。 神经网络层起到类似下图的 函数所示的作用:
其中,横轴表示输入信号,纵轴表示经过sigmod函数以后的输出信号。
LSTM主要包括三个不同的门结构:遗忘门、记忆门和输出门。这三个门用来控制LSTM的信息保留和传递,最终反映到细胞状态 和输出信号 。如下图所示:
图中标示了LSTM中各个门的构成情况和相互之间的关系,其中:
- 遗忘门由一个 神经网络层和一个按位乘操作构成;
- 记忆门由输入门(input gate)与tanh神经网络层和一个按位乘操作构成;
- 输出门(output gate)与 函数(注意:这里不是 神经网络层)以及按位乘操作共同作用将细胞状态和输入信号传递到输出端。
3.3 遗忘门
顾名思义,遗忘门的作用就是用来“忘记”信息的。在LSTM的使用过程中,有一些信息不是必要的,因此遗忘门的作用就是用来选择这些信息并“忘记”它们。遗忘门决定了细胞状态 中的哪些信息将被遗忘。那么遗忘门的工作原理是什么呢?看下面这张图。
左边高亮的结构就是遗忘门了,包含一个 神经网络层(黄色方框,神经网络参数为 ),接收 时刻的输入信号 和 时刻LSTM的上一个输出信号 ,这两个信号进行拼接以后共同输入到 神经网络层中,然后输出信号 , 是一个 到 之间的数值,并与 相乘来决定 中的哪些信息将被保留,哪些信息将被舍弃。可能看到这里有的初学者还是不知道具体是什么意思,我们用一个简单的例子来说明。
假设 , , , 那么遗忘门的输入信号就是 和 的组合,即 , 然后通过 神经网络层输出每一个元素都处于 到 之间的向量 ,注意,此时 是一个与 维数相同的向量,此处为3维。如果看到这里还没有看懂的读者,可能会有这样的疑问:输入信号明明是6维的向量,为什么 就变成了3维呢?这里可能是将 神经网络层当成了 激活函数了,两者不是一个东西,初学者在这里很容易混淆。下文所提及的 神经网络层和 神经网络层而是类似的道理,他们并不是简单的 激活函数和 激活函数,在学习时要注意区分。
3.4 记忆门
记忆门的作用与遗忘门相反,它将决定新输入的信息 和 中哪些信息将被保留。
如图所示,记忆门包含2个部分。第一个是包含 神经网络层(输入门,神经网络网络参数为 )和一个 神经网络层(神经网络参数为 )。
- 神经网络层的作用很明显,跟遗忘门一样,它接收 和 作为输入,然后输出一个 到 之间的数值 来决定哪些信息需要被更新;
- Tanh神经网络层的作用是将输入的 和 整合,然后通过一个 神经网络层来创建一个新的状态候选向量 , 的值范围在 到 之间。
记忆门的输出由上述两个神经网络层的输出决定, 与 相乘来选择哪些信息将被新加入到 时刻的细胞状态 中。
3.5 更新细胞状态
有了遗忘门和记忆门,我们就可以更新细胞状态 了。
这里将遗忘门的输出 与上一时刻的细胞状态 相乘来选择遗忘和保留一些信息,将记忆门的输出与从遗忘门选择后的信息加和得到新的细胞状态 。这就表示 时刻的细胞状态 已经包含了此时需要丢弃的 时刻传递的信息和 时刻从输入信号获取的需要新加入的信息 。 将继续传递到 时刻的LSTM网络中,作为新的细胞状态传递下去。
3.6 输出门
前面已经讲了LSTM如何来更新细胞状态 , 那么在 时刻我们输入信号 以后,对应的输出信号该如何计算呢?
如上面左图所示,输出门就是将 时刻传递过来并经过了前面遗忘门与记忆门选择后的细胞状态 , 与 时刻的输出信号 和 时刻的输入信号 整合到一起作为当前时刻的输出信号。整合的过程如上图所示, 和 经过一个 神经网络层(神经网络参数为 )输出一个 到 之间的数值 。 经过一个 函数(注意:这里不是 神经网络层)到一个在 到 之间的数值,并与 相乘得到输出信号 ,同时 也作为下一个时刻的输入信号传递到下一阶段。
其中, 函数是激活函数的一种,函数图像为:
至此,基本的LSTM网络模型就介绍完了。如果对LSTM模型还没有理解到的,可以看一下这个视频,作者是一个外国小哥,英文讲解的,有动图,方便理解。