人工智能的记忆

撰文丨张天蓉

他不是第一个赋予神经网络“记忆”的人,但他发明的长短期记忆网络(LSTM),使得神经网络有了较长而切实有用的记忆,LSTM早就被Google、苹果、Amazon、Facebook……,用于实现语音识别和翻译等等功能,如今,LSTM已经成为最具商业化的AI成就之一……

“长短期记忆”-LSTM之父

于尔根·施密德胡伯(JürgenSchmidhuber,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年,谷歌大脑研究科学家DavidHa与施密德胡伯一起提出“世界模型”,这种可以让人工智能在“梦境”中对外部环境的未来状态进行预测的新方法,人工智能的记忆再次吸引了人们的注意。

虽然施密德胡伯对AI作出卓越贡献,但比起通常人们心目中的“深度神经网络三巨头”,也是2018年图灵奖三位得主:辛顿、杨立昆、本吉奥来说,他的知名度差很多,好像不怎么受人待见。有业界人士认为,是施密德胡伯自己的对抗性格导致他的重大成就被低估,而施密德胡伯本人呢,则一直对很多事都愤愤不平,认为他和其他研究人员在深度学习领域的贡献没有得到充分认可。施密德胡伯与前述三位图灵奖得主都不对劲,在2015年还写了一篇“严厉而尖刻”的文章,称他们三人大量引用对方文章,“未能赞扬该领域的先驱者”等等。之后,杨立昆否认这一指责而使双方产生了更多的争论。

不过,施密德胡伯也许有些性格上的缺点,但无论如何,他仍然算是一名人工智能的先驱,被称为LSTM之父。

传统RNN循环神经网络

长短期记忆神经网络(LSTM)是一类改进了的循环神经网络(RecurrentNeuralNetwork或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)来源:知识分子

免责声明:本网站部分内容由用户自行上传,若侵犯了您的权益,请联系我们处理,谢谢!联系QQ:2760375052

分享:

扫一扫在手机阅读、分享本文

昀璁

这家伙太懒。。。

  • 暂无未发布任何投稿。

最近发表