【AI100问(53)】AlphaGo Zero是如何自学成才的?
继AlphaGo之后,DeepMind公司又推出了AlphaGo Zero。和他的前辈不同,AlphaGo Zero完全抛弃了人类棋谱数据,只需给出走棋规则,就可以从零开始,“自学成才”。这是如何实现的呢?
总结起来,AlphaGo用到了如下人类数据或知识:
1. 人类棋手的16万盘棋谱。AlphaGo利用这些棋谱训练策略网络,用以对走棋步骤进行初筛;这些棋谱也用来训练估值网络,用来对棋盘做简单的价值评估;
2. 人为定义的特征。AlphaGo的策略网络和估值网络的输入均为48个特征,其中包括有多少口气、是否征子、是否打劫等,这些特征都是基于人的走棋经验提取的;
3. 人为定义的策略。在特殊情况下,走子方可以选择pass,即放弃走子。在AlphaGo中这一选择通过人为设计的程序来确定。
AlphaGo Zero 把这些数据和知识全部弃之不用。首先,策略网络和估值网络只用了17个简单特征,其中一个特征是走字方(黑棋或白棋),余下的特征是黑白棋各自对应的前8步棋局状态,共16个特征。这些特征不依赖人类知识,可以从棋局中简单获得。另外,系统是否需要Pass不是由人为设计的程序来判断,而是由系统通过学习自动进行决策。
AlphaGo Zero最重要的改进是策略网络和值网络的学习完全摒弃了人类棋谱数据,采用深度强化学习的方法,通过自我对弈逐步提高下棋水平。经过3天的学习,AlphaGo Zero就可以打败战胜李世石的AlphaGo;经过40天学习后,可以打败曾经战胜柯洁的AlphaGo Master。
AlphaGo Zero的学习过程由自我对弈和网络训练两部分组成,如图1所示。
图1:AlphaGo Zero的自我学习过程:(a)自我对弈生成一个棋局序列,在每一步走棋时,利用当前的策略网络和值网络进行蒙特卡洛双树搜索;(b)基于对弈结果,更新走棋过程中每一步棋局所对应的值网络,使其输出与对弈结果更接近;同时更新策略网络,使其输出与蒙特卡洛树搜索的结果更加一致。
自我对弈:从第一步棋开始,每一步走棋都进行一次蒙特卡洛树搜索,并利用当前的策略网络和估值网络来指导蒙特卡洛树搜索过程。基于这一走棋方式,黑白双方进行对弈,直到决出胜负。
网络训练:利用前一步自我对弈过程的数据,对估值网络进行更新,使得网络的输出更符合对弈的结果(例如,如果获胜,则对弈过程中的所有己方棋局对应的值网络输出增大);同时更新策略网络,使其输出与蒙特卡洛树搜索的结果更加一致。
上述两个步骤循环交替进行,直到训练结束。值得说明的是,这一训练过程没有使用任何人类棋谱数据,完全通过自我博弈的方式逐步提高了系统的下棋水平。
图2:将策略网络和估值网络合二为一的“双头怪”结构
除了摆脱人类的数据和知识外,AlphaGo Zero相比原版本的AlphaGo还做了另外一些重要改进,使得模型结构和训练过程更加简洁。首先,AlphaGo Zero将策略网络和估值网络合二为一,形成一个“双头怪”结构。如图2所示,这两个网络共用一个“身体”,最后连接两个“头”,分别为策略网络和估值网络的输出。“身体”部分的参数是完全一样的,而“头”部的参数各自不同。这一结构使得这两个网络得以共享信息,从而提高了训练的效率和性能。另一个改进是图2所示的结构中,“身体”部分采用了残差网络,相较以前的卷积网络,残差网络的训练更容易,性能也更好。最后,原版的AlphaGo在蒙特卡洛树搜索中有一个随机采样到终局的模拟走棋过程,称为Rollout,这个Rollout的目的是对蒙特卡洛树中的节点进行胜负估值。AlphaGo Zero中不再包含这个Rollout过程,而是用估值网络直接对节点进行估值,这使得蒙特卡洛树搜索更加有效。
总结起来,AlphaGo Zero之所以能自学成材,基本原因是有一个自我对弈过程,而神经网络与蒙特卡洛树搜索的结合,使得这一对弈过程得以有效进行,并向着高手的方向稳步成长。
By:清华大学 马少平, 王东
End.