他让人工智能有了“长短期记忆”
德国计算机科学家Jürgen Schmidhuber。来源:维基百科
他不是第一个赋予神经网络“记忆”的人,但他发明的长短期记忆网络(LSTM),使得神经网络有了较长而切实有用的记忆,LSTM早就被Google、苹果、Amazon、Facebook……,用于实现语音识别和翻译等等功能,如今,LSTM已经成为最具商业化的AI成就之一……
“长短期记忆”-LSTM之父
于尔根·施密德胡伯(Jürgen Schmidhuber,1963年1月17日—)是德国计算机科学家,他在德国慕尼黑工业大学完成了本科学业。2004年至2009年,他在瑞士卢加诺的瑞士意大利语区大学担任人工智能教授。2021年10月1日,施密德胡伯正式加入阿卜杜拉国王科技大学,担任人工智能研究院院长。
1991年开始,施密德胡伯指导他一位学生塞普·霍赫赖特的博士论文,研究了传统记忆型循环神经网络(RNN)存在的一些问题,这项研究导致他们在1997年,共同发表了一篇关于一种新型循环神经网络的论文[1],他们将此类型称之为长短期记忆网络(LSTM)。
长短期记忆网络当时并没有很受到业界的重视,有关LSTM的第一篇论文被会议拒绝,被麻省理工学院退稿。不过在随后的多年中,长短期记忆网络被人们广泛采用,因为它解决了当时RNN循环神经网络的几个短板。
LSTM这种神经网络架构,后来成为2010年代研究和商业应用中各种自然语言处理任务的主导技术,尽管其主导地位后来又被具更强大功能的Transformer所取代,但仍然在AI技术中发挥着重要作用。施密德胡伯除了这个主要贡献之外,还在GPU上实现了卷积神经网络(CNN)的显著加速,使其比CPU上的等效实现快了60倍。他也在元学习、生成对抗网络等方面作出贡献[2]。
图1:施密德胡伯和LSTM
2018年,谷歌大脑研究科学家David Ha与施密德胡伯一起提出“世界模型”,这种可以让人工智能在“梦境”中对外部环境的未来状态进行预测的新方法,再次吸引了人们的注意。
虽然施密德胡伯对AI作出卓越贡献,但比起通常人们心目中的“深度神经网络三巨头”,也是2018年图灵奖三位得主:辛顿、杨立昆、本吉奥来说,他的知名度差很多,好像不怎么受人待见。有业界人士认为,是施密德胡伯自己的对抗性格导致他的重大成就被低估,而施密德胡伯本人呢,则一直对很多事都愤愤不平,认为他和其他研究人员在深度学习领域的贡献没有得到充分认可。施密德胡伯与前述三位图灵奖得主都不对劲,在2015年还写了一篇“严厉而尖刻”的文章,称他们三人大量引用对方文章,“未能赞扬该领域的先驱者”等等。之后,杨立昆否认这一指责而使双方产生了更多的争论。
不过,施密德胡伯也许有些性格上的缺点,但无论如何,他仍然算是一名人工智能的先驱,被称为LSTM之父。
传统RNN循环神经网络
长短期记忆神经网络(LSTM)是一类改进了的循环神经网络(Recurrent Neural Network或RNN)。因此,我们首先简单介绍改进之前的RNN,或称它们为“传统的”循环神经网络。
人类有记忆,神经网络当然也需要记忆。不过,我们通常所指的前馈神经网络难以模拟记忆功能。前馈神经网络(图2a)是应用最广泛、发展最迅速的人工神经网络结构,在深度学习时代的各个应用领域,都发挥了重要作用。
2001年,本吉奥等人将概率统计方法引入神经网络,提出了第一个神经网络的语言模型。该模型使用前馈神经网络进行语言建模,用n个单词的向量作为输入,通过隐藏层可以预测下一个单词可能的概率分布。这一工作为神经网络在自然语言处理(NLP)领域的应用奠定了基础。
图2:前馈神经网络和循环神经网络的信息流
自然语言处理(NLP)旨在让计算机能够理解和生成人类语言。语言是一种时间序列数据,是按照时间先后排列成的一个集合。人工神经网络在处理如语言这类时间序列时,一个主要作用,是要了解每个输入项(词汇)的后期影响和预测未来可能出现的(词汇)。
循环神经网络(RNN)就是对人类记忆能力进行最简单模拟的神经网络,见图2b。
随着深度学习的发展,RNN开始在NLP领域崭露头角。从图2可见,前馈网络中各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层,各层间没有反馈。也就是说,前馈网络的信息是从输入到输出一直“向前走”。而RNN网络不同,它与前馈网络的区别是引入了循环结构,它产生输出,复制输出并将其循环回网络。这种反馈的方式使RNN模型有了内部记忆,使它能够更方便地处理数据序列中前后项之间的关系。图2a和图2b说明了前馈神经网络和RNN之间的信息流的差异。
在前馈神经网络中,信息流从来不会触及一个节点两次,说明他们对以前收到的输入是没有记忆的,因此也不容易预测接下来会发生什么。就是说,前馈网络只考虑当前的输入,因此没有时间顺序的概念,而循环神经网络的状态,不仅受输入状态的影响,还受前一时刻状态的影响。因此,循环神经网络具有一定的记忆能力,会对前面的信息进行记忆并应用于当前输出的计算中。它们是具有内部存储器的算法,因而能在连续数据中产生预测结果。
以下例子可以解释RNN的记忆概念:假设你有一个前馈神经网络,你给它逐字输入一句话“蛋糕糖很甜”,当它处理了前面3个字之后,它已经把它们忘记了,因此,在处理“很”字时,它很难预测到接下来出现的是“甜”字,而有记忆的RNN则极有可能作出准确的预测。
为了更好地解释RNN是如何工作的,我们将RNN画成如图3所示(输入输出)从下向上的样子。并且,将RNN的工作过程按时间顺序展开成图3(等号右边)的序列。
展开的RNN序列中,信息逐步地从一个时间步传递到下一个时间步。因此,RNN也可以被看作是一个网络序列,例如图3中等号之后的5个神经网络,按时间顺序串在一起。
图3:RNN网络按其输入展开成时间序列
由图3可见,RNN在每个时间点都有两个输入,现在的和上一次的。即使是这“一次记忆”,也让RNN可做其他算法无法做的“预测”,例如看见“糖”和“很”两个字,基本可以预测下一个字是“甜”!
有了图3的展开也容易理解:RNN网络可以和前馈网络类似地利用“深度学习”及通过梯度下降和反向传播来调整权重参数,对逐个网络层进行训练。只是,这儿的所有概念都是相对于“时间步”而言的。
RNN的短板
从以上对传统RNN的描述,也不难看出它的弱点:记忆延续的时间太短了!例如上述例子中,只能记住上一步的。这个缺点,用AI的术语来说,叫做“长期依赖问题”。就是说,传统循环神经网络很难处理长距离的依赖关系,因为它们只具有“短期记忆”。
比如,给RNN输入一段较长的话:“去年我到重庆,学会了做川菜,特别喜欢吃重庆的辣子鸡和水煮牛,此外,我还在那儿学会了中文,跳中国舞唱国语歌,在那儿生活了半年,高兴极了,因此我今天在美国餐馆吃到这个菜,一点都不觉得【__】。”,很难预测【__】里面的词是什么?我们(人)一看就知道应该是“辣”!但RNN难以预测,因为相关的信息隔得太远了。
换言之,RNN难以分析输入数据与长时间步以后的信息关联,也无法靠“学习”来增强预测的能力。在理论上,通过调整参数,RNN是可以学习到时间久远的信息的。但是,实践中的结论是,RNN无法学习到久远之前的信息,长期记忆的学习过程对RNN失效。
为什么学都学不会呢?因为序列过长时,循环神经网络会出现“梯度消失”或者“梯度爆炸”的问题。对此我们简单地理解一下。
循环神经网络使用与前馈网络同样的方法进行“学习”,以此来调节网络的权重参数w。机器学习的过程中,用反向传播来计算目标函数对w的梯度。
简单而言,信息每传递一个时间步,信息的状态成为原来的W倍。那么,传递了n个时间步之后,信息状态是原来的Wn倍。一般来说,abs(W)<1,因此,当n很大时,Wn是非常小的一个数。这容易理解也基本符合人脑的事实。因为信息对后续状态的影响总是越来越小,最后几乎被遗忘。但人脑不同的是,同样的信息的反复刺激(学习)可以起作用。但RNN训练失效,因为非常小的Wn使得梯度值太小并且模型停止学习。这叫做“梯度消失”。
当算法赋予权重非常重要的值时,也会产生“梯度爆炸”,但这种情况较少。总的来说,RNN的梯度消失比梯度爆炸更难以解决。
长短期记忆LSTM
解决长期依赖问题有很多方法,其中霍赫赖特和施密德胡伯提出的长短时记忆网络(LSTM)[3]是比较常用的一个。
其实,长短时记忆网络的思路挺简单的。也就仍然是类比人类的记忆方式吧,我们经常听说有些人的长期记忆好,有些人短期记忆好,就是说,从生物学的角度看,人脑有长期和短期两种记忆类型。如前所述,传统RNN已经有了短期记忆的功能,那么,我们就再给他增加一个长期记忆的功能,问题不就解决了吗?
那我们就首先重温一下传统RNN的短期记忆功能:将图3中RNN展开后的网络结构画详细一点,显示于图4a中。传统循环神经网络的隐藏层只有一个状态h,在网络的每个时间步直接将它存起来,然后输入到下一个时间步,这就是短期记忆。
现在,LSTM的想法是再增加一个长期记忆状态c,并且,用一定的方式来控制c,让它保存较长时期的记忆。新增加的状态c,称为细胞单元(cell state)或记忆单元,见图4b。
图4:传统RNN与LSTM的结构比较
LSTM网络中,不仅引入了一个记忆单元c,还引进了3个门电路来控制它,如图4b。图4b的左图是3个门电路开关与记忆单元关系的逻辑示意图,右图则展示了LSTM更为详细的结构。
LSTM的第一个门叫做“遗忘门”:人脑除了有长期记忆之外,也有遗忘的功能。人并不需要记住所有经历过的,而是只保留重要的信息,这样才能减轻大脑的压力。有记忆就有遗忘,遗忘是记忆中的特殊功能。遗忘门的作用就是决定我们要从原来的记忆单元Ct−1中,丢弃(忘记)什么信息,保留什么信息。遗忘门通过Sigmoid激活函数,输出一个在0到1之间的数值给记忆单元状态Ct−1。1表示全保留,0表示全忘记,也有0、1间的中间值。
第二个是输入门,它决定是否将当前的即时输入信息,作为长久记忆送到Ct中。最后是输出门,它决定是否将当前Ct中的信息,输出到下一级网络。
因此,从传统的RNN到LSTM,保持了类似的循环结构,不过每一个“时间步”神经网络的结构元件从1个增加到了4个,包括一个记忆单元和3个控制门。
LSTM使RNN能够长时间记住他们的输入,解决了梯度消失的问题。这是因为LSTM将他们的信息包含在了内存(记忆单元C)中,这很像计算机的内存,因为LSTM可以从内存读取、写入和删除信息,三个控制门可以控制这些操作,AI的网络比普通计算机优越的是,它还具有学习的能力。
图5:门控循环单元(GRU)
图4b中显示的,是最典型的LSTM结构,实际应用中有很多改进,因而具有多种LSTM的变种。
例如2014年由Kyunghyun Cho 等人提出的门控循环单元[4](Gated Recurrent Unit,缩写为GRU),如图5所示。GRU将遗忘门和输入门结合起来,成为“更新门”。同时把记忆单元状态和隐藏状态合并,研究发现,GRU在复音音乐建模、语音信号建模和自然语言处理等某些任务上的表现与LSTM 相似,但这样简化之后,参数比LSTM少,因此比标准LSTM更简单,也更受欢迎。
参考文献:(上下滑动可浏览)
亲爱的读者们,不星标《知识分子》公众号,会错过每日科学新知!星标《知识分子》,紧跟前沿科学,一起探索科学的奥秘吧!
微信扫码关注该文公众号作者