AlphaGo
选自量子杂志
机器之心编译出品
编译:孙闰松、Not_God、微胖
围棋游戏程序捕捉到了人类直觉要素,这一进展有望产生深远影响。但是,作者并不认为AlphaGo 本身是一次革命性突破,毋宁说,它在这个极其重要的研发中处于领先地位:打造捕获直觉,学会识别模式系统的能力。计算机科学家已经努力了几十年,却没有取得重大进展。如今,神经网络的成功有望极好地扩大我们使用计算机解决问题的范围。
1997年,IBM 深蓝击败了世界象棋冠军,卡斯帕罗夫。那时,这场胜利被广泛描述为人工智能的里程碑。但是,结果表明,深蓝的技术对象棋有用,没有其他什么意义。计算机科学并未经历一场变革。AlphaGo,这个最近击败史上最强围棋选手的围棋游戏系统,会有不同吗?
我相信答案是肯定的,但是,并不是因为你可能听过的那些解释。许多文章提供专家证据,证明围棋比象棋难,这让这场比赛更加令人印象深刻。或者他们说,我们并不期待计算机会在以后十年里赢得围棋,因此,这是一个更大的突破。一些文章提供了(正确的!)观察,较之象棋,围棋有更多的落子可能性,但是他们并没有解释,较之人类,为什么这会对计算机造成更多的困难?
易言之,这些主张并没有解决核心问题:让AlphaGo赢得胜利的技术进步会有更广泛意义吗?为了回答这个问题,我们必须首先了解在何种方式上,导致AlphaGo的那些技术进步与导致深蓝的技术进步相比,有着质的不同,也更为重要。
国际象棋游戏中,初学棋手会学习对一个象棋棋子形成价值的概念。在一个系统中,一个马或者象相当于三个卒。一个车,活动范围更大,相当于五个卒。皇后,活动范围最大。国王价值无限,丢掉国王等于输了一盘棋。你能使用这些值预估怎么落子。放弃一个象,取对手的车?通常,这是个好主意。放弃马 和象,换取对手的车?这可不是个好主意。
在计算机国际象棋中,这种价值的概念非常关键。绝大多数计算机象棋程序搜索百万或数十亿的落子和对抗手段组合。程序的目标就是找到一系列落子方式,将系统的棋盘位置的值最大化,无论对手的落子顺序如何。
早期国际象棋程序评估棋盘位置,使用的是诸如‘一象抵三卒’的想法。但是,后来的程序使用了更加具体的象棋知识。比如,深蓝,组合了8,000多个不同功能因素,用于评估棋盘位置。深蓝并不只考虑一个车等于五个卒。假如同一方的卒位于车的前面,那么,卒会限制车的活动范围,减损车的价值。然而,如果卒被用作‘杠杆’(levered),意思是,能够通过捕获对手的卒而给车让路,深蓝会认为卒是半透明的( semitransparent),而且不会同样减损车的价值。
类似这样的想法,需要象棋细节方面的知识,这也是深蓝成功的关键。根据深蓝小组撰写的技术论文,在深蓝与卡斯帕罗夫的第二场对弈中,这个半透明的、作为杠杆的卒的概念至关重要。
最终,深蓝研发人员采用了两个主要想法。首先,打造一个功能,吸收许多象棋知识并评估给定棋盘位置。第二,使用巨大计算能力评估许多可能的落子位置,挑选一个,促成可能最好的最终棋盘位置。
如果将这一策略运用到围棋上,会发生什么?
结果表明,尝试过程中,你会碰到一个难题。问题在于想办法评估棋盘位置。顶尖围棋选手大量使用直觉来判断一个特定棋盘落子有多好。比如,他们会就‘良好状态’的棋盘位置做出模糊陈述。而且如何用简单、界定清楚的系统(比如,象棋棋子的价值)来表述这种直觉,并非立即一目了然。不幸的是,用传统套路来解决这个问题,即使经过数十年的尝试,仍然没有找到显而易见的方式来应用搜索策略(就像国际象棋那么成功),围棋系统依然让人失望。情况发生变化是在2006年,那年引入了所谓的蒙特卡洛树搜索算法,这种算法尝试一种新的评估办法,其基础是一种更加聪明的随机模拟游戏的方式。但是,围棋程序仍然落后人类棋手一大截。对棋盘位置的强烈直觉似乎才是成功关键。
AlphaGo 新近并且很重要的消息是,它的开发者已经找出一种储存非常类似直觉的方式。
为了解释它的运作方式,让我描述 一下AlphaGo 系统, AlphaGo 团队在一月份发表的论文描述了这一系统。(因为 AlphaGo 和李世石的比赛,这个系统的细节有所改进,但大概指导原则仍然相同。)
一开始, AlphaGo 分析了优秀人类棋手的 150,000 场比赛,使用人工神经网络去发现这些比赛中的模式。特别的是,它学会了预测人类棋手会在任何一个位置落子的可能性。 AlphaGo 的设计者后来通过反复让其与自己的早期版本对弈,改善和校正了神经网络,系统逐渐提高了获胜的机率。
这个神经网络——被称为策略网络——如何学会预测出好的落子?
概括地说,神经网络是非常复杂的数学模型,有数以百万的参数,通过调整这些参数改变模型的行为。当我说神经网络‘学习’时,意思是,计算机持续对模型参数做出微量调整,试着找到一种方式让它在比赛中得到相应微小进步。在学习的第一阶段,它试着在自我对弈中提高获胜机率。这听上去像一个疯狂的策略——反复进行微量的调整,进而获得一些极其复杂的功能——但是,如果你这样做的时间足够长,并且具备足够的计算能力,网络就会变得非常好。而且,有一件奇怪的事:没有人真正知道它变得很好的原因,因为它的提升是数十亿次自动微量调整的结果。
在这两个训练阶段之后,策略网络的围棋水平相当不错了,和人类业余选手处于相同水平。但是,距离专业水平仍有一段很长的路。在某种意义上,业余水平是一种下围棋的方式,不需要搜寻比赛的未来走法和评估选择棋盘位置价值。为了超越业余水平, AlphaGo 需要一种方式来评估这些位置的价值。
为了克服这个障碍,开发者们的核心想法是,让策略网络与自身对弈,估算一个给定棋盘位置的胜算大校胜率提供了有关棋盘位置价值的粗略估算办法。(实践中, AlphaGo 使用了一种比这种观点稍微复杂一些的变体。)然后, AlphaGo 将这种评估的方法与对许多可能走法的搜索结合起来,使搜索偏向于决策网络认为是很可能赢的走法。然后选择那个给出最高棋盘估值的棋招。
我们可以从中看到, AlphaGo 不是从以大量详尽的围棋知识为基础的评估系统开始的,这与深蓝团队所做的不同。恰好相反,通过分析成千上万场先前的比赛并进行多次自我对弈, AlphaGo 通过数十亿的微小调整,不断做出微小改进,建构出一个策略网络。然后,策略网络反过来帮助 AlphaGo 建立起一个评估系统,捕获非常类似于人类优秀棋手直觉(对不同棋盘位置价值的直觉)的东西。
按照这种方式, AlphaGo 比深蓝更加激进。因为计算发展的最早时期,计算机已经被用于搜索优化已知函数的方式。深度的解决办法仅仅是:搜索旨在优化尽管复杂但其形式主要表达出了既有国际象棋知识的函数。当然,搜索方式是聪明的,但是,与许多二十世纪六十年代的程序并无不同。
AlphaGo 也使用了搜寻和优化的思想,虽然它的搜寻方式稍微更加聪明。但是,新鲜而不同寻常的是,在前一阶段,它使用了一种神经网络,学习帮助捕捉某种好的棋盘位置感的函数。 正是通过结合这两个阶段,AlphaGo才变如此高水准。
这种复制直觉模式识别的能力,兹事体大。它也是一种更广泛趋势的一部分。在一篇早期的论文中,打造AlphaGo 的公司——也就是 Google DeepMind——打造了一个神经网络,它学会了玩雅达利公司的 2,600 个视频游戏中的 49 个经典游戏,许多时候达到了人类专家无法企及的水平。用计算机解决这个问题的保守做法是深蓝style:一位人类程序员分析每场比赛,为比赛计算出详尽的控制策略。
对比之下,深蓝的神经网络简单探索了许多游戏方式。起初,网络和人类初学者很像,玩得非常糟糕。但是,网络偶尔也会有几个神来之笔。它学会了识别游戏中好的模式——易言之,得高分的模式——这种方式就像 AlphaGo 学会好的落子方式一样。而且,当这些发生时,网络会强化这个行为,逐步提高它的游戏水平。
神经网络储存直觉和模式识别的能力正被用于其他场景。在 2015 年, Leon Gatys, Alexander Ecker 和 Matthias Bethge 在 arxiv.org 上贴出了一篇论文,描述了一种神经网络学习艺术风格并随后将这些风格应用于其它图像的方式。这个观点很简单:让网络浏览大量图像,获得识别具有相似风格图像的能力。然后,系统能将这些风格信息运用到新图片上。例如,下面的右手边的图像展示了将梵高风格(中间)应用于埃菲尔铁塔(左边)的过程。
这不是伟大的艺术,但仍然是非凡的例子,它使用了神经网络去捕获直觉并将此应用于别处。
过去几年,神经网络已经被用来在很多领域里,捕获直觉,识别模式。许多使用这些网络的项目,本质上都是可视化的,包括诸如识别艺术风格或开发良好的视频游戏策略等任务。但是,还有一些惊人的例子,在非常不同的领域里(包括音频和自然语言)模拟直觉的网络。
由于这种多才多艺,我并不认为AlphaGo 本身是一次革命性突破,毋宁说,在这一极其重要的研发中处于领先地位:打造捕获直觉,学会识别模式系统的能力。计算机科学家已经努力了几十年,却没有取得重大进展。但是如今,神经网络的成功有望极好地扩大我们使用计算机解决问题的范围。
此时此刻去欢呼并宣称通用人工智能几年后就会出现,是诱人的。毕竟,假设你将思维方式分解为计算机擅长的某类逻辑思维(我们已经知道这一点)和直觉。如果我们将 AlphaGo 和类似系统看作是计算机如今能模拟直觉的证据,那么,看起来所有基础条件都具备了:计算机如今既能表现出逻辑又能表现出直觉。通用人工智能当然就在不远处!
但是,这里其实有个措辞错误:我们将很多精神活动都归为‘直觉’。但仅仅因为神经网络可以刻画某些特定类型的直觉就认为它能够在所有类型的直觉上可行,那就不合适了。在某些我们认为需要直觉的任务上,神经网络可能一点用都没有。
事实上,在一些重要方面,我们对神经网络现有的理解还很欠缺。例如,2014年的一篇论文描述了某些可以欺骗神经网络的‘对手样本’。作者从一个表现很好的神经网络模型开始。看起来这样的神经网络已经具备刻画出模式识别的能力了。但是,他们研究表明,通过对图片进行微小的改变,可以欺骗神经网络。例如,下面的图片中神经网络可以正确识别左边的小狗,但是,如果加上中间图片中微小扰动,得到的右边的那副图片网络就不能正确的识别了。
另一个现有系统的极限是,他们通常需要对很多的人类样本进行学习。例如, AlphaGo 从150,000 场人类比赛中学习。这是相当大的一个数目了!但是,人类是可以从很少的比赛中学习非常多的。类似地,识别和操作图像的网络一般都需要数百万的样本图像,每个图像有着对应的标注信息。所以,重要挑战是让系统从更少的人类提供的数据组中更好地进行学习,并使用更少的辅助信息。
诸如 AlphaGo 这样的系统真的让人兴奋。我们已经学会使用计算机系统重现人类直觉的某些形式。现在,我们也面临许多巨大挑战:拓展计算机能够表示的直觉范围,让系统更加稳定,理解他们工作原理和机制,学习以更好的方式将这些模型和已有的计算机系统组合起来。我们可能很快就可以学会捕捉给出数学证明、写出故事或者的解释的直觉判断了吗?现在正是人工智能最有前途的时刻。