文/ 沈庞
你在网上找朋友下棋,却发现他早已今非昔比,棋力大涨。后来,你得知原来他在用下棋软件陪你玩,于是,你大叫:这不公平。
可没有一种比赛是绝对公平的,棋盘两边的实力强弱本身就是相对的不公,而比赛的美学就在于挑战。所以工程师和科学家们集合智慧,造出了走棋的机器向棋界的强者们挑战。
1.终于轮到了围棋
故事可以追溯到1949年的纽约,那时计算机问世还不到4年。计算机技术的先驱者Arthur Samuel(IEEE1987年先驱奖)在IBM第一批商用计算机IBM701上编写出世界上第一款走国际跳棋(Checkers)的程序。这款闻所未闻的智能程序虽然下棋水平不那么高明,但它一经向记者们展示,就让IBM的股票一夜暴涨了15个点。这个程序也被认为能够“学习”,并让人们首次接触了“人工智能”的概念。
之后,Samuel招募了许多有志于机器学习的程序员们来改进程序,不断的提升终于让它在1962年击败了人类玩家。新闻记者们立即刊出头条大标题“机器在下跳棋上已经超越了人类”。但要真正实现这句话,却得等到1994年8月,加拿大Jonathan Schaeffer教授率团队编写的跳棋程序“Chinook”。
相比Samuel仅提出的冲击性概念,“Chinook”挑战职业棋手的道路却实实在在的给人们带来刺激。1990年8月,Chinook的第一个版本一路过关斩将,赢得了美国全国锦标赛的资格。不久,它又获得了世界第二的好成绩。可在1992年,Chinook的第一次挑战冠军以失败告终。因为它面对的是40年职业生涯中只有9负,人称“恐怖选手”的数学家Marion Tinsley。观众们欢呼着“人类赢了”,虽然他们不明白棋盘上到底发生了什么。事后业内的评论认为:相比Chinook犯失误,Tinsley倒是表现的像是保守的程序。这暗合了Tinsley赛前自豪的宣言,“Chinook是由人的手编写,我却由上帝之手编写”。
然而,第二年美国跳棋联合会和英国国际跳棋协会迫于一些伦理压力决定不批准Chinook的比赛。但Tinsley却对机器表示了明确的支持,他把头衔禅让了出去,以个人身份再次接受Chinook的挑战,由计算机协会组织,颇有独孤求败的味道。Schaeffer教授团队也铆足了劲,升级Chinook的硬件并进行更多的输入训练,以备1994年。之后的比赛以平局告终,这似乎没有造成什么波澜,Tinsley教授安度晚年。但紧接着就是Chinook保持了类似Tinsley的不败战绩。
从1962到1994,30年的时间好比让程序从一个刚学会下棋规则的孩子成长为职业跳棋高手。这30年里究竟发生了什么?答案是摩尔定律。
摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的。其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。这一定律揭示了信息技术进步的速度。
Samuel那个年代连微型计算机都尚未发明,但在1994年,第四代计算机已经相对普及。更快更多的运算硬件,允许更先进的编程算法。于是,继Chinook称霸跳棋后,其他棋类程序也不甘落后。比如,Michael Buro编写的黑白棋程序Logistello,在1997年以6:0击败了人类世界冠军北野武村上。但最具有标志性的莫过于1997年“深蓝”4:2战胜卡斯帕罗夫。许峰雄博士从卡内基梅隆大学开启该项目,组建Deep Thought团队,1989年毕业后受雇于IBM继续研究。事实上,深蓝与Chinook的情况相似,在它战胜世界冠军之前,都先输了好几次约战,最终的改进版终于略胜了一筹。
尽管有人认为那场人机对战并不公平,比赛中有疲劳和人为干预的因素,但计算机选手的强大已经成了不争的事实。今天,终于轮到围棋了。
2.机器和人的挑战
Chinook诞生的时候,有评论对此不以为然。在不少人眼里,国际跳棋的变化不多,规则也不复杂,以至于较为流行,人类高手在对战时会经常打成平局。但即便如此,这个竞技项目也需要你拥有准确的判断和直觉,10*10的棋盘大小需用超过40步以上的准确落子来获取胜利。而对计算机来说,它的计算量也得到达棋盘上千亿个可能的位置,所以1992年的Chinook只能够运算出每一步之后的17个动作变化。国际象棋的复杂度显然要高出跳棋不少,棋子各自的特点和规则增加了其需要运算的局面。所以97年的“深蓝”拥有30个并行处理器,共同处理数据,同时还存有70万份大师对战的棋局数据。 但无论是哪一种棋类,至今都无法超越围棋的运算量。
也许你要问,运算量和下棋有什么关系?简单来说,程序员给计算机编程下棋并非因为已经理解了人类大脑如何下棋。他们可以纯粹依靠计算机的运算速度演算所有的局面情况。这个方法被称为"博弈树"(Game Tree)。想象你在棋盘上落子,每落下一子,它就代表了下一个决策的分叉点,就像一棵正在生长的树木那样,会派生出许多可能的局面。于是,计算机会去对任何一点的未来变化做出运算。理论上,只要计算机的运算能力足够强,就可以按照规则穷尽所有的局面,排除不合法的局面(被称为“剪枝”程序)。再用同时运行的按规则计分程序评价每个局面分数的高低,并选择最高分的决策。
然而,19*19的围棋棋盘和最简的落子规则却衍生出无穷无尽的变化。理论上,排除不合法的落子位置,如没有“气”的位置,每一步的行动可能局面是3361种,是个171位的数。即便人类有记载的棋谱总数至今不过几千万盘(8位数)。这样的复杂度能够通过机器全部运算得到吗?即使程序可以通过数据库把棋谱全部收录,但它能够应对所有的棋局变化吗?所以,人们普遍认为机器不可能在围棋上胜过人类。
人类竞技的精神就在于挑战,哪怕挑战的是不可能。
实际早在人机大战刚刚兴起的90年代,中山大学的陈志行教授就已开发出“手谈”软件进行人机对弈,在计算机围棋界也屡获佳奖。早期的围棋软件延续了其他棋类程序的思路, 通过棋盘的运算和数据库里的棋谱数据输入积累来提高机器程序的运算能力。直到蒙特卡洛算法(Monte Carlo Method)的普及,大大优化了整个树方法的运算效率。这个统计学方法广泛应用于各个领域,通过随机重复的模拟动作,来获得该动作产生的效果概率分布。应用在游戏上就可以训练机器对树上的各节点进行筛选和调整。
尤其在2005年,通用棋类游戏(General Game Playing,GGP)项目由斯坦福大学发起,其目的是建立一个人工智能平台,让游戏AI具有通用性,而不只针对单一项目。之后这个项目的成果被美国人工智能协会(AAAI)纳入,成为一年一度的计算机大赛。比赛会使用一个统一的服务器,其上用游戏描述语言来制定规则(GDL),参赛AI之间相互比拼。自举办以来,蒙特卡洛算法和其他各类算法的配合几乎是获得冠军的秘诀。
到近几年,一度沉寂的神经网络算法开始复兴。这个算法在一定程度上模拟了生物神经分层的构架,不仅能够不断调整优化各项行动的逻辑权重,还能够进行结果的反馈,把结果重新作为输入进行训练。谷歌的DeepMind团队把这项算法附加在博弈树上,就有点像棋手进行复盘一样,反复加强之后可以对落子的位置形成一定的优先级筛选。应用性质上是和蒙特卡洛一样的搜索和剪枝策略。经过了3千万局的训练,最终达到了极高的职业水准。
也许有人会问:这不还是硬算吗?问题并非如此,看似依然需要大量运算,却和先前有着极大的区别。当机器进行反复的训练后,它们对某些情况下的落子位置概率会变得很低。换句话说,它们可以跳过这些位置的运算,而非全部再计算一通。这些算法的进步实际更加符合人类的思考和学习方式。我们人类并不是掌握了全部的信息和预测之后才能做出决策的,我们只能尽力追求在自己的能力范围内“满意”的答案,而不是非要找到那个最优的答案。这便是Herbent Simon提出的有限理性理论(Bounded Rationality)。对于一位棋手而言也是如此,无论他的棋力多么高超也不够算计到所有的局面,所以一定是做出他最满意的那个决策。既然如此,如果机器真的能模拟人类智能,那么它也不需要做到所有的运算,只需要模仿人类尽可能的优化自身。而相比人类,计算机的学习却可以“不知疲倦”的反复训练。
所以,即便借助计算机,我们也可能无法穷尽围棋的答案,但借助人工智能,我们永远可以挑战自己。
3.Game over?
或许天才棋手也敌不过人工智能的棋局。我们应该想到,他并非输给机器,而是依然输给了人,输给了那些机器背后的智慧结晶。这个说法可能略显悲壮,那么,更好的建议是“不用担心”。
当1997年深蓝多次击败顶级象棋棋手之后,人们都以为这个游戏终结了。但他们错了。在那场比赛之后,卡斯帕罗夫率先提出了“人加机器”(Man-plus-Machine)的概念,即在比赛中使用人工智能增强国际象棋手的水平,而不是让双方相互对抗。这种比赛在之后被称为自由式国际象棋赛,它们和混合武术比赛相似,选手们可以使用任何技巧对弈。你可以独自参赛;或者带一台人工智能照着它的路子下棋;亦或偶尔否决人工智能的选择,就像我们开车时用GPS的感觉。在2014年的自由式国际象棋对抗锦标赛上,纯粹使用人工智能的选手赢得了42场比赛,而人机一起参加的选手赢得了53场。当今世界上最优秀的国际象棋选手队伍Intagrand就是由人类和象棋程序一起组成的。
更让人意外的是,国际象棋的人工智能并未削弱这项游戏的魅力,与卡斯帕罗夫时期相比,拥有国际象棋大师排名的人数至少翻了一倍,而曾经通过机器训练,目前位列第一的Magnus Carlsen还是有史以来评分最高的象棋大师。我们不妨更进一步思考,既然人工智能可以帮助人类成为更优秀的选手,那么它也能帮助我们成为更优秀的其他职业人士。
比赛自会有输赢,有胜败。最重要的是,人类通过比赛挑战强者,而挑战永无止境。
(声明:本文仅代表作者观点,不代表新浪网立场。)