Total Pageviews

Saturday 12 March 2016

为什么AlphaGo会遇强则强

某些人猜测AlphaGo会遇强则强,认为AlphaGo会模仿对手的棋风下棋,如果遇到樊麾二段,就会下出樊那样的水平较低的棋,而如果遇到好战的李世乭九段,则会变成一头嗜血的怪兽。
事实上,AlphaGo的确会遇强则强,遇到李世乭可能赢二目半,遇到业余6段可能也就赢二目半。但这并非是因其会模仿对手的棋风。因为 AlphaGo是通过海量人类对局数据库来训练对棋型的感觉,再从模仿人类选点中筛选胜率最高的一招棋的,因此它不会去专门去模仿特定对手的所谓棋风。但 由于AlphaGo筛选选点的唯一考虑因素是胜率最大,而非最凶狠走法和局部最佳的下法,也就是能赢就行,不求大胜比如说选点A有99%的概率赢半目,选 点B有98%的概率赢20目半,那AlphaGo就会选择A,而且为计算获胜概率,它要假定你是最强对手,假定你会算到它能算到的各种变化,所 以面对弱手,AlphaGo也会淘汰掉会因强手才能下出的强烈反击从而招致自己胜率下降的棋。这导致AlphaGo遇到弱敌也会走出看似很缓的棋,似乎它遇弱则弱。
在与樊麾的第2局棋中,执黑的AlphaGo第135手没有选择扳杀白右上角的走法,而是选择跳,放活白角,这一手被中国职业棋手广为诟病,认为 AlphaGo计算力太差,连这么简单的死活都没算出来,其实这是没有理解AlphaGo的选点标准,它肯定是算出杀棋的胜率不如放活的胜率高,所以选择 了稳赢的放活。
因此,在局面领先的情况下,AlphaGo常会走出人类棋手所认为的缓手,从而缩小了领先优势,其实这正是AlphaGo的强大之处,它通过选择胜 率更高的退让走法,虽然损目但提高了胜率,从而将其优势转化为不可动摇的胜势。而很多人类棋手反而会在优势局面下贪吃争胜,从而走出过分的招法导致逆转。
必须指出的是,AlphaGo并非一味退让,只有当损目的走法胜率更高时它才会选择退让,否则它永远会走在最大的地方。3月9日对李世乭九段完胜的第一局,就非常完美地体现出了AlphaGo的这个特点。
AlphaGo的棋让人想起了李昌镐九段全盛时期的招法,经常走一些看似缓手的自补,其实这正是李昌镐和AlphaGo的英雄所见略同啊,已走下神坛的李昌镐,看到AlphaGo想必会别有一番滋味在心头。
写于2016年3月9日夜
首先 围棋 和 象棋包括国际象棋的致胜目标 是完全不一样的。
象棋和国际象棋的目标是杀掉对方的王。对程序而言最傻的办法通过穷举法配合象棋的逻辑就可以不出错,因为目标是一个绝对量。
围棋的目标对于程序来讲是一个非常虚的概念,围棋的获胜方是要比输家占更大的地盘,是一个相对量。我哪怕比你多半目我就赢了。
所以对于围棋而言,对局的变化是在不断变化的。布局和定式对于中前期非常重要,只要布局和定式前期OK,就能赢。而这个时候,由于围棋的下子点足够 多,计算量太大,电脑根本不可能靠穷举来下。而一旦进入中后期,随着棋盘上面的可下的位置的减少,所以可以通过计算来解决这个问题。
所以阿尔法狗这两天下的棋你可以看到,一旦中后期人类犯错 和 中后期 人类不占优的话,以人类的计算力根本不可能干掉他。因为他的计算力比人类强大太多了。
要想赢阿尔法,必须找布局和定式非常强的人类来跟他玩,一定要在前中期解决战斗。而这两点,李世石在他那个层面的选手里面属于较弱的。李世石擅长的是僵尸流,也就是后期找漏,现在碰上一个比他还强力的僵尸流,就没法打了。
以上只是我个人的一个简单的判断。另外这两局也没看到阿发狗打劫的能力。所以这块不好讲。如果打劫阿法狗也能玩的毫无破绽。那就只有在布局阶段干死阿尔法。但是这点很难,因为通过这两天看到的情况,在人类选手布局阶段,他就上来死缠烂打进行肉搏了,所以局很难做。
已经很久没有关注过围棋了,李世石虽然目前在在役选手里面战绩最好。但是从围棋的历史上来看,他的僵尸流并没有对围棋做出太大的贡献。因为他的能力 是强于计算。远点的吴清源就不说了,真正的大魔王。拥有开山立派的能力,近的藤泽秀行、包括年轻时候的聂卫平这方面能力都不弱。而近二十年来由于韩风日 盛,在曹薰铉极其弟子的带动下,围棋在布局定式上变的毫无进步,大家都在比计算,有想法又能计算的太少了。原来还有一个不错的日本棋手赵治勋,也老了。
于是整个围棋运动陷入一个非常尴尬的境地。就是所有在役选手都没有勇气或能力去研究新的布局和定式了,而大家都在拼计算。因为大家觉的虽然研究出一 个新的布局和定式能够大比分赢对方,但是也有可能大比分落败。在名誉和奖金面前,稳稳妥妥的赢就好,哪怕是赢半目。所以全在拼计算。
这是对围棋运动颠覆性的一局,这一代的棋手和观众将见证一些奇迹,以及更多的衰败。
人类下棋,讲究的是每一步赚了几目,亏了几目,然后积少成多最后目数压倒对手;而AlphaGo下棋,讲究的是每一步增加了多少获胜概率还是减少了多少获胜概率,然后越接近终局越趋近于0或1。
所以棋盘两端的对手,是在同一个规则下玩两个完全不同的游戏。双方在自己的理论体系里都做到了最好,然后李世石脆败。这直接就会导致整个棋理体系的崩溃。
也许李世石后面能赢一局,或者柯洁哪天能赢一局,但是这不重要了,因为末日审判已经降临。
计算机战胜人类并不可怕。国际象棋现在的情况是计算机下一步,人类看不懂,然后几步后恍然大悟,学会了并加入开局库。这对棋手来说完全是可以接受 的,国际象棋运动依旧可以发展。而围棋不同,当计算机下出一手手的缓手恶手错手最后还赢棋的时候,人类是没有办法学习的,因为双方玩的不是同一个游戏!最 可怕之处在于,人类的计算能力并没有办法做到像电脑那样下围棋,只能拘泥于自己的棋理思路,而这个思路已经被宣判了末日。
所以我觉得长期来看,人机对弈可能在局部推翻一些定式,改善人类的下法,但是人类依然不得不在一个错误的棋理体系下继续龟速前行。明知是错的,但是没有能力改变。
人们一直觉得围棋太复杂,计算机无法驾驭,结果忽然发现自己才是那个无法驾驭它的。这才是对整个围棋界最致命的打击。
对阵AlphaGo策略无责任分析及猜想
鉴于ai威胁论已经把不少人忽悠成脑残了,本帖就不再讨论什么ai威胁论,但从前2盘的棋局剖析一下阿法狗的算法策略和对策。
从前面的对局来看,阿法狗的棋路表现出三个特点:
1、开局非常主动,在中盘之前就确立了优势;
2、中盘之后的节奏跟人不同,会经常脱先走出些看似缓手的棋,让专业棋士大呼奇怪;
3、跟人局部争夺优势不明显,没有什么神之一手纠缠半天屠人大龙的情况。
这三个特点其实都是算法策略造成的,专业棋士不是计算机科班出身,对此感到不解一点都不奇怪。我们从第二点开始分析,因为这是阿法狗跟人最明显的不 同,也是理解阿法狗策略的切入点。算法最底层的原理都是非常简洁的,在围棋上就是怎么判断下一步棋形成的局面的优劣。据说阿法狗判断局面有48个特征值, 这些特征值代表什么没有公开,但是应该离不开概率跟期望。如果下一步棋有2种下法,棋路1是有50%的概率赢10目,有50%的概率输4目,总期望是赢3 目,棋路2是有75%的几率赢1目,25%的几率不赢不输,总期望是赢0.75目,那么人一般会选择棋路1,因为显而易见效益更大。但是换成阿法狗,它则 可能选择棋路2,特别是它一直处在优势的情况下,这是一种保守策略,保胜而不保大胜,这也可能是它底层算法的标准。人和机器策略的不同凸显了两者的本质: 人是生命一步步进化而来的,而生命所处的环境是会有突发情况发生威胁生存。对于生物来说,在环境较为稳定,预期收益可见的情况下,是会冒一点风险去换取更 大的利益,作为对抗未来不确定因素的本钱,换通俗一点的话说,就是趁着年轻多卖点苦力,存多点钱养老。机器却不是适应外部威胁逐渐进化出现,而是被人设计 出来的,它只会推算当前确定的风险,而不会考虑不确定的因素,这超出了它的算法适用范围。在围棋上的表现,人在看到利益可观的情况下,会冒一点风险去进 攻,尽早的争取利益,拉开双方的差距,以免后面自己下出恶手的情况下没有缓冲。机器则认为我应该选择风险最小而利益为正的下法,只要在可计算的范围内不丢 分,我以后也不会丢分,说白了,机器是不会质疑自己的计算结果,完全相信自己的逻辑。
回到第一个特点,为什么开局ai会主动进攻呢?开局的时候棋盘上的棋子最少,灵活性也是最大的,下一步棋对当前其他棋子的关联也最少,这时候输赢的 期望价值就更大。表现出的结果就是,ai在前中期就早早的通过主动进攻取得了优势。而相对于李师师,从第一盘的时候可以看出来,他对于ai的棋力没什么 底,一直只是试探性的走,没有在开局的时候试图强力压制ai,而是希望摸透ai的棋力之后通过中盘的博弈取得优势。李师师的下法也不是错,问题是他的思路 是对人的思路,不是对机器的思路。人是会贪婪会犯错会疲劳会情绪起伏的,在中盘局面比较混乱的情况下更可能出现恶手。而ai则没有这些考虑,它不会贪婪不 会疲劳不会情绪起伏,而只要算法没错,除了坏内存坏硬盘甚至坏cpu之外,它也不会出错,而指望ai在几个小时内出硬件毛病,还不如指望代ai下棋的人手 抖落错子。
第三个特点,是人跟ai有相同的地方,这个相同不是指算法或者棋力上,而是在局部范围内,人脑的算力是足够的,而ai的算力是溢出的,两者的交换结 果没多大的不同。套那句话,一个学霸考试得了100分,另外一个学酥得了99分,学霸说:我得100分是因为卷面只有100分,你得99分是因为你的实力 就是99分。这里的学霸就是ai,学酥就是人。但是,人是可以通过努力一样拿到100分的,而因为卷面只有100分,学霸不可能到哪怕101分。
综上,这里提出楼主脑洞的不负责任策略:人机对弈,人类应该大力提高开局的战斗力,提高布局的水平,主动进攻试图破坏ai的布局,不让ai进入自己 的节奏,关键是在开盘取得优势,不要指望通过中盘设陷阱卖破绽来引诱ai,因为一个不小心卖破绽就变成卖身了。做个类比的话,应该有不少人打过lol的人 机,早期人机有个套路就是开局5人抱团拿一血二血三血,早早确立优势。正常情况下很多玩家打人机靠对线是经常被ai完美连招殴打的(说来鬼佬打ai好像不 懂这个套路,在外服经常看到有鬼佬对线被ai虐得生活不能自理)。
最后,上面的策略并不能保证人一定能赢ai,毕竟5人抱团拿一二三血的lol经常都看到后面玩家被ai殴打的情况,毕竟算力差距在那里摆着,而且人状态有起伏,计算也会出错,这里只提供一个思路。
最后的最后,说说楼主的2个最终策略,不过这已经有点像耍赖的阴谋诡计了,大家呵呵就好:
1、扩大棋盘。这里的扩大棋盘不是指望加大ai运算负担而宕机,而是靠扩大棋盘导致计算时间不足,要在有效时间内出结果只能减少推算的广度和深度,当棋盘 足够大,有限时间内只够推算一两步的程度,人跟ai就没多大区别了。19×19不够,就361×361,还不够就130321×130321,一直扩大下 去就好。当然这个方法不能保证稳赢。
2、缩小棋盘。让ai的算力溢出,再多也没用。棋盘越小计算量越小,人脑也可以通盘计算。学过围棋的人都知道入门的时候是从小棋盘下起的,好让人把握棋 局,把19×19缩到13×13,11×11,9×9……人脑的算力是足够了,不过缺点就是棋盘越小黑棋先手的优势越被无限放大,到最后白棋可能一目都站 不住。这样的话就变成交替先手胜,55开的局面,当然也没有什么观赏性,围棋也算是完蛋了。