我对围棋一窍不通,过去也对AI-Game没有特别研究,拜近日来阿尔法狗(AlphaGo)重创人类在围棋上领先的地位之赐,特别把这篇《自然》上的论文(〈Mastering the game of Go with deep neuralnetworks and tree search〉)拿来看了一下。
这是一篇非常有趣的论文,摘录心得如下:
1.阿尔法狗(AlphaGo)决策过程跟过去的棋类程序不大一样。它里面每一个stage单独的方法都是不是新的创见,只是它组合这些方法的框架很特别。它的学习结果,(不管是深度神经网络或是增强式学习)都只是中间产物,最后用来帮助搜寻最好的棋步。
2. 它的学习分三个阶段,第一个阶段天下棋手为我师,它主要希望建构一个13层的深度神经网络来学围棋专家的棋步,也就是根据这个盘面预测过去历史资料中大家会怎么下。第一阶段训练出来的SL系统就可以下棋,但是结果不是很好,因为其实就只是个模仿专家的系统。
3。而第二阶段超越过去的自己是一个增强式学习的系统,藉由跟过去的自己对战来增进第一阶段学到的棋步,而且需要跟过去不同版本的对手对战避免overfitting。在这个增强式学习的阶段,才首度把胜负当成reward来训练模型。第二阶段训练出来的棋步已经有85%的机会赢过过去已知最强的围棋程序(段数约二段)。
4. 第三阶段我戏称为「机率算尽太聪明」。其宗旨在预估每个盘面的价值。所谓盘面的价值,就是从这个盘面开始,假设对手能够穷举所有可能的下法找到最佳解,AlphaGo的获胜机率有多高。当然我们无法知道无懈可击的对手会怎么下,所以退而求其次,AlphaGo模拟跟自己下的过程决定每个盘面的胜率有多少,然后用有限的盘面与胜率当成训练数据再去训练一个深度神经网络估计所有盘面的价值。在这个阶段还有一个招数,也就是这些当成训练资料不能用第一阶段数据库搜集的棋局盘面,因为同一局的盘面有高的相关性以及一样的奖励,会造成学习中的记忆效应,而是要用「与自己下棋」中每一局单独抽取的独立盘面来训练。
前三个阶段都是阿尔法狗(AlphaGo)的训练过程,这些都是offline可以做的。训练好的阿尔法狗(AlphaGo)已经可以赢过一般的对手。
5. 虽然训练好的第三阶段阿尔法狗(AlphaGo)可以仗剑大杀四方,但是还不足以赢过高段的对手。因为实战中的盘面有很大的机率是在训练中没有看过(围棋的盘面总数高达250的150次方之多),对于它们价值的预测其实不一定准。真正在实战中,AlphaGo采取「灵机应变,无招胜有招」的战术,不坚持使用之前学习到的棋步,反而利用过去学到的棋步结合了蒙地卡罗树状搜寻(MCTS)的方法找出最好棋步。也就是在实战中对现在盘面进行模拟下棋(再度假设对手就是自己),在模拟的过程中把所有经历的盘面重新计算它们的价值,在有限的思考时间内尽量进行模拟,最后选择模拟过程中最稳定的棋步(不是价值最高的棋步)。在这个过程中需要快速的运算,越多的仿真就会让盘面价值的计算越准,阿尔法狗(AlphaGo)利用平行化计算加上GPU达成高速运算的目的。
6. 算法总结:阿尔法狗(AlphaGo)第一阶段的训练过程就像是把一个人关在房间里,不告诉他围棋是什么,也不告诉他围棋的规则,甚至连围棋最后怎么算胜负都不跟他说,只拿一大堆过去专家下棋的棋谱给他看。然后等它看完棋谱后,第二阶段就让他自己跟自己下棋,从中学习更好的下法,最后第三阶段它只要看到某个盘面就知道这个盘面的胜率,虽然从头到尾它还是不知道围棋的规则。
真正在下棋的时候,阿尔法狗(AlphaGo)还是沈浸在自己的世界里。每当对手下完一步,它就开始模拟接下来可能的数步(模拟的时候就是假设对手是自己,所以对手是谁对AlphaGo而言完全不重要,他也完全不去预测对手会怎么下),在模拟的过程中,它就重新对于未来可能面对棋局来估算胜率,最后选择最稳定最有可能获胜的棋步。它的风格就像是金庸笔下的独孤九剑,不拘于定式,而是当下根据对手的招式才决定最佳的进击策略。
7.阿尔法狗(AlphaGo)并没有针对对手的棋步训练系统,我不确定在他使用的数据里面有没有李世石的棋谱,不过就算是有,所占的比例也应该微乎其微。「自我学习」(与自己对战)才是AlphaGo的主轴。
8. 看起来AlphaGo所使用的所有招数跟方法是缺一不可,论文里面还有一些决策(decision)的细节并没有讲清楚,但是相信是尝试错误后决定的。
后记:阿尔法狗(AlphaGo)的唯一目的是最后的胜利,所以在过程中它并不在乎下某一子的短期利益(会赢多少地盘),它甚至对于这些短期损益完全没有认知,在训练的过程中也不在乎赢几目。在与人类对决的时候,我们看到棋评会指出它犯了一个失误」,或是它不喜欢某种策略如打劫。其实如果了解AlphaGo的决策模式,就会知道他其实没有策略以及失误的概念,对它而言,棋类等游戏就是对于每个盘面精确且快速的估算其通往胜利的机率。
因为阿尔法狗(AlphaGo)在下棋的过程中会看到越来越多的盘面,所以它只会愈来愈进步。未来如果人类想从与其对奕中取得胜利,必须要能够走出前所未见的局面,降低它对于盘面估测的准确度才会有机会。这也不是完全不可能,因为围棋的复杂度太高。其实要更理解AlphaGo,必须要去研究它present每一个盘面所用的features,我因为不懂围棋,所以没有办法评论。但是理论上如果它遗漏了某个重要的特征,表示它无法利用这个信息判断盘面的价值,人类可以利用这个信息去进攻,尽量去创造某个比较不容易被已有的feature来表达的盘面。
公子义【微信号gongzi348】80后,90后心理研究专家,4年心理学,9年大数据研究者,专注于移动互联网,大数据究狂热爱好者,热爱写作。原创文章,未经许可,严禁转载,违者追究法律责任。