LSTM

ryluo 2020-06-14 01:29:22
循环神经网络

LSTM的理解及学习笔记

LSTM和GRU主要是用来解决循环神经网络中梯度消失和梯度爆炸问题提出来,并且还具有保留长的历史信息的功能。它们都是基于门控的RNN,而门控可以简单的理解为对本来没有门控的输入每个元素乘上了一个0-1的权重,进行有选择性的忘记和记忆,这样就可以在有限的记忆容量(我们可以认为参数的最大容量)下记住更加重要的信息,而忘记不重要的信息,虽然GRU没有和LSTM一样的遗忘门和输入门,但是它的重置门和更新门也可以起到选择性的忘记与记忆的功能。

首先回顾一下普通的RNN的结构,如下图所示(台大李宏毅的PPT中的内容),从图中可以看出,普通的RNN的输入部分有上一时间步的隐藏状态$h$和当前时间步的输入$x$两部分组成,而输出部分由当前时间步的隐藏状态h’和输出y组成,具体与参数及激活函数的关系可以从图中直接看出,对普通的RNN结构就先放这里,用于对LSTM和GRU的结构进行对比的

Naive RNN

下图是LSTM与普通的RNN结构图的对比,直接放眼望去好像LSTM的结构非常的复杂,但是如果我们把$c^{t-1}$和$c^{t-1}$上下摞起来,以及$c^t$和$h_t$也摞起来,这样看起来结构是不是就一样了呢。也就是说LSTM的隐藏状态与普通RNN隐藏状态不同的是它由两部分组成,分别是$c^t$和$h^t$,前者我们也把他称为长期记忆,后者称为短期记忆,这是对LSTM一个直观上的理解。

LSTM



为什么称为短期记忆和长期记忆呢?

那就得看一下LSTM内部的结构了,如下图是LSTM的内部结构图(这里将课程中的图和李宏毅老师的PPT中的图结合起来了),在这里我们主要看上面的两个图,并且强烈建议在看这篇文章的时候出现公式及变量的地方一定要结合图,找到图中的位置。从上面的介绍我们已经知道了$c^{t}$表示的是长期记忆,而$h^{t}$表示的短期记忆。从图中可以看出LSTM的输入部分首先将上一时间步的短期记忆$h^{t-1}$与当前的时间步的输入$x^t$拼起来然后分别乘以一个权重矩阵再经过激活函数得到$z,z^i,z^f,z^o$这四个部分虽然是通过相同的方式得到的但是由于权重矩阵的不同加上神经网络的强大之处,在训练的过程中就会知道各自的任务是什么,所以这四个部分各司其职。

其中$z^f$被称为遗忘门,它是一个0-1之间的向量,并且大小形状与$c^{t-1}$是一样的,因为它们之间要进行对应元素相乘,那么就是说对于上一时刻得到的长期记忆我们选择性的去忘记(也可以理解为就是选择性的记住了某些东西),我们在想一下遗忘门是怎么来的,它是由短期记忆和当前的输入得到的,也就是说对于长期记忆的记忆与遗忘取决于上一时刻的短期记忆和当前的输入,这么听起来好像挺有道理(就是感觉有道理,但是说不出来的那种),这就是遗忘门。

对于输入门$z^i$,其得到的方法与遗忘门是一样的,并且其值也是在0-1之间,输入门没有像遗忘门一样直接作于长期记忆,而是对$z$进行了对应元素的乘积,$z$也是通过上一时刻的隐藏状态$h^{t-1}$和当前的输入$x^t$通过一个权重再激活的来的(注意:这里的激活函数没有使用sigmoid而是使用tanh,意思是他不是作为门控来使用,而是对输入的信息作用,并且是通过权重矩阵学习之后的信息进行压缩)。而输入门是直接作用于$z$,和它对应元素进行相乘,这个也很好理解,就是说我们输入的信息,尽管是通过权重矩阵学习过的信息还是需要进行筛选,才可以为模型做出相应的贡献。

当前时间步的长期记忆$c^t$,结合左边和右边的图我们可以看出当前时间步的长期记忆是当前时刻信息最丰富的部分,因为他结合了上一时间步经过选择性遗忘而筛选的信息与当前时间步经过筛选的输入信息,总的来说就是过去的信息以及当前的信息都有,让他作为下一时间步的长期信息也是有道理的。

当前的短期记忆$h^t$,它是记录短时间内比较重要的信息,所以它先将当前的长期记忆$c^t$通过tanh进行压缩(注意:他这里使用的是tanh激活函数是对信息压缩,而不是sigmoid对信息进行筛选),然后与输出门$z^o$进行对应元素进行对应元素相乘,得到当前的短期记忆。在生成短期记忆的时候使用输出们进行筛选,也是有道理的,输出门是对当前输入信息学习之后的筛选器,用来决定当前的短期记忆当然是可以理解的。

最后来说一下当前时间步的输出$y^t$,既然是当前时间步的输出,那么直接对当前的短期记忆进行学习即可(前面已经对当前短期记忆进行了说明,到这里应该可以理解了)

LSTM
LSTM

建议:先把机器学习课程中的LSTM相关的东西学完,如果对与普通的RNN理解还不是很透彻的一定要弄明白,最快的方法就是看代码学习

循环神经网络基础推荐视频同济子豪兄的B站视频

推荐学习资料(知乎高赞):LSTM知乎高赞文章