深度学习玩转模仿游戏:通过模仿人类,循环神经网络获得了若干惊人的能力

科技纵览 2020-08-08 14:12:38


“自酿酒酒吧的桶装啤酒。漂亮的暗红色,细腻的泡沫,玻璃杯上残留着挂壁。它散发着树莓和巧克力的香气。虽然有树莓,但颜色并不深。波本威士忌的味道也很妙。我真的不知道该如何形容这种啤酒的味道。我还是喜欢碳化得更充分一点的味道。喝起来还是不错的,如果这种啤酒上市,我不介意买来尝尝。” 

━━━  ━━━

除了啤酒中有强烈的树莓香气外,这段评论还有一个特别之处:它是由计算机程序生成的。计算机程序得到指令,想出了一段对“果蔬啤酒”的评价。生成这段文字的软件利用了强大的人工智能工具循环神经网络,软件甚至未经过识别词语的编程,更谈不上遵从英语语法规则了。然而,通过在BeerAdvocate.com上搜寻酒吧常客们的评论模式,程序学会了如何生成类似的连贯(或不连贯)的评价。

神经网络能学习专有名词,如“银子弹啤酒”,以及啤酒的专业术语,如“挂壁”和“狭口杯”。它能学习拼写和错拼,生成长短适中的评价。最重要的是,神经网络产生的评价是上下文关联的。例如,如果你说 “为我给俄罗斯帝国黑啤写一个5星评价”,软件就会满足你的要求。它知道形容印度淡色艾尔啤酒应该用“有啤酒花香气”,俄罗斯帝国黑啤用“巧克力味的”,美式拉格啤酒则用“寡淡”。神经网络还会学习更加丰富的啤酒描述词语,只是我们无法在杂志中一一展示。

这种特殊的神经网络也可以反向运行,理解评价内容、识别观点(星级评分)和主题(啤酒种类)。越来越多的研究证明了循环网络的语言处理能力,由我们两人之一——李普顿(Lipton,本文作者之一)与他在加州大学圣地亚哥分校的同事沙拉德•维克拉姆(Sharad Vikram)和朱利安•麦考利(Julian McAuley)合作开展的这项工作就是这类研究的一部分。循环网络其他相关的特长包括为图像提供说明性文字、翻译外语,甚至是回复电子邮件。这不免令人好奇计算机最终能否思考。

这是计算机科学家们长久以来追求的目标。自这一领域开创以来,他们一直梦想着开发真正的智能机。阿兰•图灵在1950年的论文《计算机器与智能》中想象通过电传打字机与这样一台计算机进行交谈。在构想图灵测试的过程中,他提出,如果计算机可以惟妙惟肖地模仿人类,骗过人类裁判员,那么就可以合理地认为它是智能的。

图灵论文付印的当年,格言出版社出版了艾萨克•阿西莫夫有关智能类人型机器人的短篇小说集《机械公敌》。阿西莫夫的故事写于“人工智能”这种说法出现之前,描写了精巧的机器人参与对话、驾驶汽车甚至帮助管理社会等场景。

然而,在过去65年的大部分时间里,人工智能的一些成功范例既不像图灵设想的健谈机器人,也不像阿西莫夫的类人型机器人。之后过度狂热期和随之而来的沉寂期交替出现,现代人工智能研究已大体上分成两个阵营。一方是理论家,他们研究与学习算法相关的基本数学和统计问题;另一方是更注重实际应用的研究人员,他们应用机器学习执行各种真实任务,更多地以实验而非数学理论为指导。

直到最近,两个阵营才共同转向简单的预测问题。例如电子邮件是垃圾邮件还是非垃圾邮件?或贷款违约的概率是多少?悲观者可能会说,我们梦想创造类人智能,得到的却是垃圾邮件过滤器。然而,神经网络研究的突破已经彻底改变了计算机视觉和自然语言处理,重燃了公众、研究人员和业界的想象。

现代神经网络通常被称为“深度学习”,这也进一步加剧了理论与实践之间的鸿沟。这是因为,直到最近,机器学习还是以已得到充分理解的理论方法为主,而神经网络研究则更多地依赖实验。

随着高质量数据和计算资源的增长,实验的发展步伐也同样迅速。当然,并不是每个人都对深度学习的成功感到兴奋。这种成功在某种程度上并不令人满意,因为表现最好的方法可能往往最不符合理论认知。但无论如何,循环神经网络的能力是不容置疑的,并且有可能为几代人一直期望或畏惧的深入交互系统创造条件。

━━━  ━━━

你可能会认为研究人工神经网络需要对神经科学有深入的了解。但这种想法错了。大多数的新闻报道夸大了人脑与人工神经网络之间的联系。生物学启发了计算机科学领域的许多基础性工作。但说实话,大多数的深度学习研究人员,包括我们自己,其实都对人脑知之甚少。

实际上,神经网络的工作方式是这样的。神经网络包括大量的人工神经元,即类似于生物神经元的基础模块。中学生物课上学过,神经元是根据从与其相连的其他神经元处接收的信号来发射电信号或抑制某种行为的细胞。在人脑中,神经元沿称为突触的结构彼此相连。通过这种连接,一个神经元的冲动可能会刺激或抑制其他神经元的冲动,从而产生复杂的行为。研究深度学习只需要了解这些脑科学知识就够了。

像生物神经元一样,人工神经网络的模拟神经元亦是协同工作。我们为每对人工神经元的连接分配了一个值来表示连接强度,称为一个权值。如果权值为正,则可认为这是一种兴奋性连接;如果为负,则为抑制性连接。为了确定人工神经元的冲动强度,或者更确切地说是其“激活”,需要计算网络中所有神经元激活的加权和。然后,利用“激活函数”对这个和进行运算,从而得出所需的激活。这个值反过来可以用于计算其他神经元激活的加权和。

所以,你可能会问:应先计算哪些神经元的激活?对于一个错综复杂的网络,这个问题仍不明确。因为每个神经元的激活依赖于所有其他神经元的激活,改变处理顺序会产生完全不同的结果。为了完全规避这个问题并简化计算,我们通常将神经元分层排列,每层中的每个神经元与上层中的神经元相连,从而产生比神经元更多的连接。但是这些连接只是自下而上,这意味着较低层的输出会对上一层产生影响,反之则不然。

因此,我们称之为前馈架构。为了向这种神经网络提供输入,我们只为最低层的神经元指定激活值。例如,每个值可以表示图像中一个像素的亮度。

我们依次根据下一层的输入计算上一层的激活值。从最顶层人工神经元的激活值读取网络的最终输出(比如,输入图像的类型化:描绘一只猫、一条狗或一个人)。输入与输出之间的层被称为“隐藏层”。

通过编写程序,以这种方式根据输入产生输出似乎非常容易——确实如此。难点在于训练神经网络发挥效用,即调整与人工神经元之间的连接对应的(可能数以百万计的)权值。

训练神经网络需要大量与已知的正确输出相对应的输入。还需要找到方法衡量生成的输出偏离所需输出的程度。按照机器学习领域的说法,这就是所谓的“损失函数”。掌握上述信息后,即可随机选取用于网络的训练样例。而后更新权值,以减小损失函数的值。也就是说,反复微调权值,使网络输出逐渐接近真实值。

虽然要确定每个权值的正确更新可能很难,但我们可以利用著名的反向传播算法进行有效的计算,这项技术是大约30年前由大卫•鲁姆哈特(David Rumelhart)、吉奥夫•辛顿(Geoff Hinton)和罗纳德•威廉姆斯(Ronald Williams)开发的。当损失函数具有凸性这一数学特性时,就能保证这一过程找到最优解。遗憾的是,神经网络具有非凸性,无法提供这样的保证;但计算机科学家还是应用这种策略,而且往往会取得成功。

在早期,计算机科学家建立的神经网络只有输入层、一个隐藏层和输出层3层。训练具有多个隐藏层的网络(称为深网)在计算上似乎不可行。这种看法已被推翻,这在一定程度上归因于图形处理器(GPU)性能的提升。目前在短短几小时或几天内训练多隐藏层网络的情况已是司空见惯。 

━━━  ━━━

神经网络经过训练后,最终可以发挥一些实际的作用,例如可以训练它将图像归类或衡量贷款申请者违约的可能性;或者你也可以训练其识别垃圾邮件。可以肯定地说,这些都是令人印象深刻的能力。但受到前馈神经网络记忆缺失的限制,此类网络完全没有记忆。每次预测都需从头开始,每次都像是该网络有史以来唯一的一次预测。但对于许多现实世界的任务,输入可能包含一系列上下文相关的数据,比如说一组连续的视频帧。为了确定视频任意帧的情况,利用由前面各帧提供的信息无疑将有所帮助。同样,若没有上下文环境,则很难了解一句话中单个词的意义。

循环神经网络在两个人工神经元之间加入另一组连接,巧妙地解决了这个问题。通过这些连接,隐藏层中神经元的激活可以在序列的下一个步骤中反馈给自身。简单地说,在每一个步骤,隐藏层由其下一层接收激活并从序列的前一步骤接收来自身的激活。由于这个属性,循环神经网络具备了一种记忆。

让我们一步步地慢慢了解网络处理输入序列的情况。第一个输入(步骤1)影响网络隐藏层的激活,并因此影响网络的输出。接下来,网络处理第二个输入,仍会影响其隐藏层。但在步骤2中,隐藏层还会接收步骤1中相应的隐藏层不断传递的激活。在接下来的步骤中,计算均以这种方式不断进行。因此,由于隐藏层中信号可以返回,第一个输入会影响最后一个输出。

几十年前,计算机科学家们就已知道循环神经网络是功能强大的工具,能胜任任何明确定义的计算程序。但是,这有点像在说C程序设计语言是一个强大的工具,能胜任任何明确定义的计算程序。这是事实,但知道这个工具理论上可以用来编写一些所需程序与确切地了解如何构建工具之间还有很大距离。

设计出循环网络的正确架构并训练其学习所有最佳权值非常困难。如同所有的神经网络一样,在数学上无法保证训练程序会找到一组最佳的权值。更糟的是,确定权值更新的计算在循环网络中很容易变得不稳定。这会拖延学习的过程,当因更新规模过大而导致模型所学到的一切都被清除时,甚至可以毁掉网络。

所幸的是,多年来计算机科学家已经在实践中克服了许多此类困难,循环神经网络被证明是异常强大的。1997年泽普•霍赫赖特(SeppHochreiter)和尤根•施米德胡贝(JürgenSchmidhuber)开发了一种特别的模型,被称为长短期记忆人工神经网络,是迄今为止最成功的模型。它用名为“记忆细胞”的特殊结构取代了简单的人工神经元。对于这种记忆细胞在此不再赘述,其基本思想是使网络具有比简单的人工神经元即刻被遗忘的激活存在时间更长的记忆。与前馈网络的短暂激活或记录在权值设置中的长期知识不同,记忆细胞使网络拥有了一种中期记忆。 

循环网络的一个制胜应用就是语言翻译。在这里,训练数据由句子对组成,每对中一个是源语言,另一个是目标语言。令人称奇的是,句子的长度或语法结构不一定相同。

在伊利娅•苏特斯科娃(Ilya Sutskever)、奥里奥尔•尼亚尔斯(OriolVinyals)和阔克•V•勒(Quoc V. Le)等研究人员开发的这样一种方法中,源句首先作为输入进行传递,每次一个词。而后,循环网络生成一个翻译,也是每次一个词。这一程序虽然缺乏这两种语言的硬编码知识,但翻译精度足以与许多最先进的机器翻译程序相匹敌。其他显示出此类网络能力的骄人案例包括识别以及生成手写笔迹。

最近我们在自己进行的研究中发现,循环神经网络可以识别多种身体症状。我们与南加州大学的戴维•卡勒(David Kale)和洛杉矶儿童医院的兰德尔•韦策尔(RandallWetzell)合作,设计了一种能够对医院儿科重症监护病房中的一系列观察结果进行处理并作出诊断的循环神经网络。这些结果包含13项频繁但采样不规则的临床测试,包括心率、血压、血糖水平和呼吸功能。我们的目标是在128种常见诊断中确定每个患者所适用的诊断结果。

网络经过训练后,我们利用一组新的患者数据来评估这一模型。测试证明网络能够精确地识别不同的身体状况,如脑癌、哮喘持续状态(哮喘发作)和糖尿病酮症酸中毒(糖尿病的严重并发症,患者体内产生过量血酸)。令人惊奇的是,它还可以精确地识别脊柱侧凸(脊柱的异常弯曲),这可能是因为脊柱侧凸常会引发呼吸道症状。 

━━━  ━━━

医学应用的良好效果表明,循环神经网络有能力捕获序列数据中有意义的信号。但是对于其他应用,例如生成对啤酒的评价、图像字幕或句子翻译,则很难作出评估。在这些情况下很难客观地说良好的性能有哪些表现,原因是正确答案所依据的事实可能只是许多合理解释中的一个。

计算机科学家们针对这些情况制定了各种指标,主要是为了对翻译系统进行评估。但这些指标不像那些只能用于直接预测的简单测量指标(如精度)那么令人满意。虽然在许多情况下,衡量成功与否的真正标准是人类观察者是否会将网络输出误认为人为生成的文本。最令人印象深刻的图像字幕研究论文通常都提供了令人瞠目的神经网络功能实例。在这种情况下,所谓的成功实际上就是有人会说:“计算机绝不可能写得出来!”

从这个意义上说,计算机科学界是通过一种图灵测试来评价循环神经网络的。我们试图训练计算机模仿人类在面临同样任务时的反应,教会计算机做出智能化的行为。然后我们根据观察裁判员是否能够区分机器输出与人类思想来对具有思维能力的机器进行评估。

走到这一步虽然令人兴奋,但这种方法可能有一些根本的局限性。例如,目前还不清楚这类系统如何能够超越提供训练数据的人类的能力。训练机器通过模仿进行学习所产生的思维能力可能永远无法超过被模仿对象的集体智慧。

强化学习可能是一种比较有希望的方法。这是说,计算机只能在某种行为信号的引导下寻找其可能采取的行动。最近,谷歌DeepMind的研究人员将强化学习与前馈神经网络相结合,创建了可在31种不同视频游戏中击败人类玩家的系统。该系统从未模仿过人类玩家,而是反复试验和摸索,将其在视频游戏中的得分作为行为信号,利用这些信号学会了玩游戏。

我们预期,随着计算机变得更加强大,基于模仿的学习方法逐渐接近其极限,强化学习的作用将会日渐突出。一些开创性的工作已经将循环神经网络与强化学习结合了起来。

随着这种交叉方法的发展,计算机可能不仅会模仿人类,还有可能超越人类。

 作者:Zachary C.Lipton,Charles Elkan

科技纵览微信公众号会在2017年12月31日完成迁号,整体搬迁到悦智网微信公众平台,请您点击下方链接,关注“悦智网”,继续阅享优质内容。

Copyright © 上海网络音乐联盟@2017