LSTM——起源、思想、结构 与“门”

摘要:LSTM(Long-Short Term Memory Neural Network,长短期记忆网络)是Transformer出现之前,理论和实践中表现最好的序列建模工具之一,催生了”BiLSTM+CRF”等应用非常广泛的神经网络模型结构。本文作者基于自己的理解,虚构了从把RNN改造为LSTM的过程,从而比较深入地介绍了LSTM的基本思想、结构和特色。

1引言

1959年的建国十周年阅兵式中,首批国产坦克闪亮登场——这就是国内军迷常说的“59式坦克”。在对越自卫反击战中,大家发现59式有一些缺点,因此对这种坦克进行改进、推出了各式各样的”59改”,如图1-1。由于对原始版本的改动比较大 ,大家戏称为“魔改”。

图 1-1 59改——货真价实推土机

在各行各业里,魔改无处不在。比如在机器学习领域,大家最常做的事情,就是针对某些问题 ,对某个模型进行修改,进而得到一个更好的模型。为循环神经网络(Recurrent Reural Network, RNN)添加”门”,就是一个非常经典的模型改进工作。

2RNN的基本结构和弱点

RNN的详细介绍可以参考

李鹏宇:循环神经网络的结构和训练​zhuanlan.zhihu.com重新上传取消图标

2.1RNN的基本结构

我们可以这样简单的理解CNN、RNN等各种奇怪的神经网络:人们基于自己对研究对象的先验知识,对全连接网络进行一定的改造,就出现了可以处理类似研究对象的神经网络结构。德国计算机科学家Jürgen Schmidhuber和他的学生认为,一些样本数据中存在空间或时间上的相关性,神经网络应在建模的时候,应当考虑这种相关性。在这个思想的基础上,Schmidhuber等人对经典神经元进行了改造,使其具有时间(实际上是顺序)维度、可以考虑历史信息。RNN神经元的基本结构如图2-1。RNN用一个时间维度上的递归结构,把历史信息引入当前时间步的计算中,进而对一个序列进行刻画。

图 2-1 RNN神经元的基本结构

如图2-2,是对RNN结构更加概括的表示形式。后面,我们会在这个结构的基础上,做一点点的改动,从而引出LSTM。

图 2-2 RNN结构的另一种表示形式

2.2RNN的弱点

RNN的主要弱点是,善于进行短期记忆,不擅长进行长期记忆。由于激活函数(输出值取值范围[0,1])的存在,信息和残差在RNN神经元中传递时,会逐时间步损耗(简单来说就是绝对数值越来越小)。这个特点,削弱了RNN神经元保留距离当前时间步较远信息的能力,或者说,弱弱了RNN刻画长序列的能力。假设我们要从“贪污和浪费是极大的犯罪”抽取近义词,当模型从左到右、处理到”犯罪”的时候,“贪污”的语义已经被忘记,那么“犯罪-贪污”这对近义词就无法召回了。当然,实际发生的,是神经元“当前状态”,即语义向量里,所包含”贪污”越来越弱。看起来像是一个加权可以解决的问题。

为此 ,学者们又开始想办法对RNN尽心改造升级,以提升RNN在长序列建模中的效果。

3RNN的升级版——LSTM

所有机器学习模型的基本思想,就是特定的模型结构可以容纳和表示特定的先验知识,以处理特定类型的数据。对RNN的改造是这种思想的经典应用。

为了让RNN具有长期记忆,Schmidhuber和他的学生又为RNN神经元配置了一个看起来有点复杂的机制,即“细胞状态”——推出了长短时记忆网络(Long-Short Term Neural Network, LSTM)。

3.1LSTM的基本思想

RNN需要一定的结构来支撑长期记忆能力。所有机器学习模型的思想也是类似的:一定的结构可以完成一定的工作。

3.2LSTM的结构

细胞状态的结构,导致其存储的历史信息不易改变,因此具有较好的记忆力、支持LSTM较好地刻画长序列。细胞状态的实现形式,就是我们常听的”门”。经典LSTM结构中有3个“门”:(1)遗忘门,用来帮助RNN选择性遗忘某些历史信息;(2)记忆门,用来加强对某些历史信息的记忆;(3)输出门,负责对长短期记忆信息进行综合考虑,生成输出信号。本章3.2.3小节会说明,“遗忘门”和“记忆门”的名字没起好、容易引起误会,因此费了点口舌重新解释了各个“门”的含义。

为了阐释LSTM结构与思想的对应关系,这里会展示对RNN的改造过程。

3.2.1为RNN添加长期记忆

经典RNN的输入,是当前时间步的输入,和上一时间步的隐藏状态取值——二者拼接后形成的向量。这个向量主要包含的是近期的记忆和当前的观测数据,因此被称为短期记忆。这个基础上,把对序列的长期记忆引入RNN的输入数据中,如图3-1,我们就得到了一种可以兼顾长期记忆和短期记忆的神经元。

图 3-1 为RNN提供历史长期记忆

具体怎么做的呢?

3.2.2细胞状态——LSTM的关键结构

在图3-1的基础上,添加历史长期记忆的构造细节,就得到了一个更厉害的神经元结构,如图3-2,它可以综合考虑长期记忆和短期记忆。需要注意:(1)LSTM里使用“细胞状态”(cell state)来刻画神经元的记忆中,不太容易衰减的部分,并围绕细胞状态构造长期记忆;(2)这里构造短期记忆的方式,与RNN有所不同(为避免干扰,之后再展示细节)。

我们以细胞状态向量的形式,来存储神经元对过往序列的宏观理解和记忆——然后把上一个时间步的细胞状态、当前时间步的输入、上一时步的隐藏状态综合起来,构造出神经元的历史长期记忆。紫色八角形所代表的,是构造长期记忆的模块结构 ;绿色八角形所代表的,是用于构造短期记忆的模块结构;棕色八角形所代表的,是用于综合长期记忆和短期记忆、计算当前时间步输出等的模块结构 。

图 3-2 LSTM的总体结构

3.2.3长期记忆的构造细节与门

如图3-3,是LSTM的长期记忆模块,负责基于历史细胞状态和“遗忘门”的情况,计算得到主要内容为长期记忆的向量。

注意,这里的“遗忘门”(forget gate)是一个新名词。“门”(gate)的意思很直白:门开大了,可通过的信息就多;门开小了,可通过的信息就少。另外,不要被它的名字忽悠了,认为这个遗忘门是用来衰减信息的——LSTM的创造者器“遗忘门”这个名字,只是用来和后面我们会提到的另一个“门”相区分。其实“遗忘门”也可以叫“门1”或者“长期记忆加权模块”(“遗忘”就是选择性记忆,和后来出现的注意力机制有类似的之处)。

长期记忆的符号形式为:

其中:

(1)⊙表示点积;

(2)

,即当前时间步输入和上一时间步隐藏状态的拼接。

公式看起来清爽很多是吧。思想被浓缩为公式形式后,“体积”大大缩小,成了类似酸梅粉的状态。要想理解思想,就需要资料或老师的辅助,把酸梅粉复原为酸梅汤。

长期记忆模块的结构特点是,只经过遗忘门的一次处理,因此衰减较少、得以保留较多的历史信息——这是LSTM拥有较强的长依赖刻画能力的秘诀。

图 3-3 长期记忆模块

3.2.4短期记忆的构造细节

如图3-4,是LSTM的短期记忆模块,负责基于当前输入、历史隐藏状态,以及“记忆门”的情况,计算得到主要内容为短期记忆的向量。相比RNN,这里增加了一个“记忆门”,用来控制对原始短期记忆进行“加工提纯”(一个线性变换,将原始记忆信息向量投射到新的空间里,以便下游模块更容易理解)。

短期记忆的计算方式为:

式中,

是短期记忆的原始数据;

是门控信号。

图 3 4 短期记忆模块

3.2.5综合长短期记——输出模块

如图3-5,是LSTM的输出模块,负责综合考虑长期记忆和短期记忆,得到当前细胞状态,并基于输出门的情况,计算隐藏状态和输出值。在这个模块中,我们构造了第3个门控信号,用来对细胞状态中蕴含的信息进行加权。

当前细胞状态的计算方式为:

隐藏状态是:

神经元的输出值等于:

图 3 5 LSTM的输出模块

到这里,LSTM神经元的结构就介绍完毕了。

4结语

知友https://www.zhihu.com/people/tang-xiao-yao-60认为,有必要在博客后添加参考文献——我结合自己阅读和撰写论文、博客的经历和体会,发现这个建议非常好,值得采纳。

在整理LSTM的过程中,我发现自己的小脑瓜无法一下子理解模型的结构,因此转换了学习策略。LSTM结构的复杂是多个方面的:部件多;每个部件有不同的内部构造;部件之间有特定的配合关系;等等。这就导致了,学习过程对记忆力有相当的要求——呵呵,我可不是身体流,采用的是“画图-修改”这样的策略:把已经掌握的内容存储在不消耗脑力的介质,如计算机里,然后一点点修正、直到没有明显错误为止。

和我国坦克的进化过程类似,LSTM也是从原型RNN一点点改变而来的。我们的学习LSTM的时候,可以尝试模拟这个改变过程,从而深入地了解模型背后的思想。

在给老婆讲RNN的过程中,我意识到神经网络其实是一种集成模型,也因此获得了比单体模型更强的学习能力/拟合能力。LSTM在这种集成模型里加上了类似注意力机制模块的3个“门”,提升了模型对输入序列在特征之间、时间维度上的依赖关系的刻画能力,进而得到了非常好的序列建模效果。

参考文献

[1]

59坦克永不消亡,59岁高龄的59坦克都被保利魔改成什么样了_手机搜狐网​m.sohu.com

[2]

李鹏宇:循环神经网络的结构和训练​zhuanlan.zhihu.com图标

[3]

陈诚:人人都能看懂的LSTM​zhuanlan.zhihu.com

注意:本文为李鹏宇(知乎个人主页https://www.zhihu.com/people/py-li-34)原创作品,受到著作权相关法规的保护。如需引用、转载,请注明来源信息:(1)作者名,即“李鹏宇”;(2)原始网页链接,即当前页面地址。如有疑问,可发邮件至我的邮箱:[email protected]

猜你喜欢

转载自blog.csdn.net/ch206265/article/details/108384435