|
作者:木遥
一、
很多人都注意到,AlphaGo 的棋风有个有意思的特点:它很少下出「好棋」,也就是凶狠的杀招,并且还时不时似乎下出缓手。它局面从未大幅领先过,永远只赢一点点。
为什么呢?
要 训练一个神经网络,需要定义一个反馈函数,即告诉这个神经网络怎样的决策是好的。在 AlphaGo 的设计中有个重要的细节:训练 AlphaGo 的神经网络时所采用的反馈函数只依赖于输赢,而同输赢的幅度无关。换言之,对 AlphaGo 而言,赢一目的棋和赢十目的棋一样好,它追求的只是单纯的胜负而已。
但 单纯追求胜率实际上就意味着放弃追求大胜。因为在多元优化问题中靠近边缘的地方,不同的优化目标之间几乎总是彼此矛盾的。比方说,如果一个局面需要考虑三 手可能的棋,第一手可以赢十目,有 70% 的胜率,第二手可以赢一目,有 80% 的胜率。第三手可以赢二目,有 90% 的胜率。首先第二手棋显然全面劣于第三手棋,不应该列入考虑。而值得比较的第一和第三手棋之间,胜率高的选择一定是胜利幅度较低的那一个。——很显然,这 就是典型的帕雷托优化问题。第二手棋不是帕雷托最优的,或者说不够接近优化的边缘。而在边缘处的第一手和第三手,两个指标的优劣一定彼此相反。
(这 当然不是说,围棋中追求胜率和追求领先幅度是两件矛盾的事。事实上,在绝大多数情况下,它们的指向都是相同的,一手导致领先幅度大幅下降的棋一般来说也会 导致胜率大幅下降,但它根本就不会被列入权衡,也就不会被注意到。值得权衡的选择之间一定是彼此两难的,并且对手愈强,这两个优化目标之间的分歧就越 大。)
因此,AlphaGo 以单纯胜负作为反馈函数的结果,就是 AlphaGo 总是选择那些相对而言更保证胜率而胜出幅度较小的棋。只赢一点点就够了。
为什么人类棋手(至少绝大多数)不这么下棋呢?
因 为这和人的思维方式不符。AlphaGo 可以这么做的前提是极端精细的计算能力,从而得以控制微小而稳定的盘面优势。像是贴着水面飞行的鸟,最危险但也最省力。但人无法永远做出精确的计算,所以 需要一次次努力扩大领先的幅度以维持一个安全的距离,防止一着不慎胜负翻盘。所以 AlphaGo 会显得遇强则强,但也很少下出「好看」的棋。甚至可能因为过于追求全局取胜几率,下出在人类的视角看来局部并非最优的招式。反过来,通过一番搏杀来取得局 部胜利在人类看来总是一件好事,而在 AlphaGo 看来,这也许只是毫无必要地增加不确定性而已。
于 是我忍不住设想,如果 AlphaGo 在训练时采用不同的反馈函数会是什么结果。不妨假设存在一个 BetaGo,一切都和 AlphaGo 设定相同,只是反馈函数定义为盘面领先的目数。(换言之,从一个正负之间的阶梯函数变成线性函数。)可以猜测 BetaGo 的「棋风」应该比 AlphaGo 凶狠许多,更追求杀着,更希望大赢。如果让 BetaGo 和 AlphaGo 反复对战,AlphaGo 赢的次数会更多,但平均而言 BetaGo 赢的幅度会更大。
(或者更极端一点,干脆采用盘面领先程度的平方乃至指数函数作为反馈,那会培养出什么暴躁疯狂的算法呢?)
AlphaGo 采用目前的设计是很好理解的,因为首先追求的目标还是证明 AI 能够战胜人脑。但是从目前的情况来看,AlphaGo 似乎已经遥遥领先,那即使 BetaGo 胜率稍差,假以时日应该也可以超过人类。而它的棋应该会好看很多。
好可惜和李世乭对战的不是 BetaGo 啊⋯⋯
二、
AlphaGo 是否会打劫终于不成为争议了。
但它其实根本就不是一件应当被争议的事。打劫只是围棋中「不得全局同形再现」这一条规则的推论,而这条规则对 AI 来说实现起来再简单不过:只要在搜索决策树的时候,跳过所有已经出现过的局面就好了。
这 当然不是说,AlphaGo 的实现细节中一定没有任何针对劫的专门逻辑存在。一些特定的优化也许是有意义的。但是以为 AlphaGo 和人一样,有必要去辨认劫的特性,选择和保存劫材,在多个劫同时存在的局面下做复杂的战略决策,只不过是把人的思维方式错误地套用在遵循完全不同逻辑的神 经网络上而已。神经网络自我学习的特性保证了只要让它遵循围棋的基本规则,它完全可以「显得」像是懂得复杂的围棋概念,但这绝不意味着它真的「在乎」这些 概念。AlphaGo 的主要作者中的两位 Chris Maddison 和 Aja Huang 在他们 2015 年发表过的一篇论文 Move Evaluation in Go Using Deep Convolutional Neural Networks 中写过这样一段话(原文为英文,以下是我的翻译):
很明显,神经网络内在地理解了围棋的许多深奥的层面,包括好形,布局,定式,手筋,劫争,实地,虚空。令人惊异的是这样一个单独、统一、直接的架构就能把围棋的元素掌握到这个程度,而不需要任何明确的先导。
归根结底,劫是一个完全人为构造的概念。人们用它来描述自己的战略,建构自己的思考模式,就像别的围棋术语一样。但它只是刻画,并非本质。如果 AlphaGo 有意识,它也许会在面对人类的询问时说:噢,原来你把我走的这一步叫做打劫啊。
但这是人类的缺陷么?我们是否是在把一个本来应该用纯粹的计算解决的问题毫无必要地归纳于概念,然后又让自己的思维囿于这些概念而作茧自缚呢?
恰 恰相反。能够迅速建立起高级抽象的概念,然后用它来简化和指引决策,这是人类在千百万年间进化出的伟大能力,今天的人工智能还远远不能望其项背。借助这些 抽象观念,人们得以把全局问题分解为一系列局部的可以简明描述和推理的子问题,做出也许未必在数值上严格最优但是相当接近最优的判断,从而取代人工智能需 要耗费海量计算才能作出的决策。更重要的是,这些抽象观念可以让一个人从极少数样本中辨认本质,总结经验,汲取教训,获得成长。一个棋手从观摩一盘棋中得 到的教益,可以多于 AlphaGo 千万盘自我对局。AlphaGo 的神经网络自我反馈训练虽然有效,但是盲目。而人们知道自己要学的是什么。
这是人类智能最耀眼的优势之一。
这引出了下面进一步的问题:这两种思维方式是否有可能对接?能不能让 AlphaGo 把自己的决策过程翻译为人类可以理解的概念和语言呢?
这 件事在应用上的潜力显而易见(用人工智能来辅助教学,当然不限于围棋),但更重要的是它在理论上的挑战。AlphaGo 的决策过程是个黑箱,我们能够提炼出它用来提取棋局特征的元素,但无法直接理解它们意味着什么。我们不知道它们如何对应于人所熟悉的概念,或者在那里是否 存在人们尚未总结出的新知识。我们当然可以看到它最终的结论,例如一步棋是好是坏,可是仅有结论并没有太多用处。
但 这里仍然有做文章的余地。AlphaGo 可以看做是一个记录了自己每一次神经脉冲细节的人工大脑,而机器学习的原理也可以应用在这些海量的记录数据本身之上。不难设想,也许可以训练出另一个神经 网络来识别出这些数据中对应于人类高级概念的特征,从而设法把 AlphaGo 的决策过程拆解和翻译为人类熟悉的观念模块。如果可以实现这一点,人类就可以更直观地理解 AlphaGo。
我不知道这能否实现,但我希望可以。那将是一个重大的飞跃。
到那时,我们也许就可以看到人类棋手和 AlphaGo 在真正的意义上「复盘」了。
***********************************************************************
扩展阅读:
击破人类智能的极限 ——— 战木遥
http://www.aswetalk.net/bbs/home.php?mod=space&uid=663&do=blog&id=64979
木遥的看法,我完全不同意,庸人的看法,就像其 对川普的看法一样。
GMT+8, 2024-11-26 02:20 , Processed in 0.026973 second(s), 17 queries , Gzip On.
Powered by Discuz! X3.2
© 2001-2013 Comsenz Inc.