Mastering the game of Go with deep neural networks and tree search

(使用深度神经网络与树搜索使计算机精通围棋)

David Silver1*, Aja Huang1*, Chris J. Maddison1, Arthur Guez1, Laurent Sifre1, George van den Driessche1,

Julian Schrittwieser1, Ioannis Antonoglou1, Veda Panneershelvam1, Marc Lanctot1, Sander Dieleman1, Dominik Grewe1,
John Nham2, Nal Kalchbrenner1, Ilya Sutskever2, Timothy Lillicrap1, Madeleine Leach1, Koray Kavukcuoglu1,
Thore Graepel1 & Demis Hassabis1


因为围棋巨大的搜索空间和对棋盘位置和走子精确评估的困难,在很长时间里围棋被视作人工智能最具有挑战性的传统游戏。在这里我们将介绍一种使用“估值网络(value networks)”评估棋盘位置价值以及“策略网络(policy networks)”选择走子动作(Action)的新的电脑围棋算法。这些深度神经网络创造性的合并监督学习(通过人类专家棋手的棋谱学习)和强化学习(通过自我对弈的方式)来训练。没有任何超前搜索,这些神经网络已经通过自我对弈的方式模拟了成千上万的对局并使自己下围棋的水平达到了世界计算机围棋最好水平(相对于使用蒙特卡洛树搜索(Monte Carlo tree search)程序)。我们也将介绍一种新颖的算法,即通过合并蒙特卡洛树搜索和估值网络、策略网络来构建围棋程序。使用该算法,程序AlphaGo与其他围棋对弈达到了99.8%的胜率,以5:0的成绩击败欧洲围棋冠军(樊辉)。这是有史以来计算机程序第一次在全盘对弈中击败人类专业棋手,这个突破以前被认为需要十年以上的时间。

    所有完备信息的游戏都有一个最优的估值函数

AlphaGo围棋论文中文翻译_估值

 ,在所有玩家完美的下子中,

AlphaGo围棋论文中文翻译_搜索树_02

 决定每个棋盘位置和状态

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_03

的收益。这些游戏都可能通过在包含接近

AlphaGo围棋论文中文翻译_估值_04

 ( b:搜索宽度, d: 搜索深度)种可能走子序列的搜索树中递归的计算最优估值函数来解决。但是计算复杂度高的游戏,象棋(b ≈ 35, d ≈ 80),尤其是围棋(b ≈ 250, d ≈ 150)详尽的搜索是不可能的,但是可以通过两个通用原则有效减少搜索空间。第一个原则,位置估计可能减少搜索的深度,即在状态

AlphaGo围棋论文中文翻译_估值_05

 截断搜索,使用近似的估值函数

AlphaGo围棋论文中文翻译_搜索_06

替代

AlphaGo围棋论文中文翻译_搜索树_07

 后子树的状态去预测在状态 

AlphaGo围棋论文中文翻译_估值_08

 的收益;这种方式可以在国际象棋,西洋棋,黑白棋游戏中达到超人一样的水平,但是因为围棋的计算复杂度,这种方法被认为很难在围棋中有效。第二条原则,在一个策略

AlphaGo围棋论文中文翻译_搜索_09

(

AlphaGo围棋论文中文翻译_搜索树_10

 | 

AlphaGo围棋论文中文翻译_估值_11

 ) 上的采样走子减少搜索的宽度,策略

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_12

(

AlphaGo围棋论文中文翻译_估值_13

 | 

AlphaGo围棋论文中文翻译_搜索_14

 ) 为在所有可能的位置

AlphaGo围棋论文中文翻译_搜索树_15

 上走子

AlphaGo围棋论文中文翻译_搜索树_16

的概率分布。如,蒙特卡洛展开(Monte Carlo rollouts)可以在策略

AlphaGo围棋论文中文翻译_搜索_17

上对所有玩家在长序列走子采样,不扩展分支搜索到最大化深度。在这样展开的节点上求平均可以获得位置的有效估计,这种方法可以取得超人的游戏能力,如:西洋双陆棋,拼字游戏,但是在围棋中只能达到弱业余水平。

    蒙特卡洛树搜索(MCTS)使用蒙特卡洛展开的方法估计搜索树中每个状态的价值。随着模拟的进行,搜索树变得越来越大,相关的值将变得越来越精确。通过选择较大值的子节点可以使选择走子的策略精度随模拟的进行提高。渐渐的,下棋的策略将会收敛到最优,估值函数也会收敛到最优。当今最强的围棋程序是建立在蒙特卡洛树搜索中通过预测人类专家棋手的走子策略来提高自己的。这些走子策略被用来窄化搜索到高概率走子以及在展开中采样走子。这种程序的实现已经达到了强业余水平。但是,前人的工作受限于基于线性的输入特征的浅策略和估值函数。

减少了搜索树的深度和宽度,即通过估值网络去评估下棋的位置好坏,通过策略网络采样选择走子。

   我们使用流水线的方式分阶段通过机器学习训练神经网络(图1)。我们刚开始通过人类专家棋手的走子动作直接利用监督学习(SL)方式训练策略网络

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_18

,这种方式可以提供直接的快速反馈以及高质量的梯度来快速有效的学习更新。和前人的工作相同,我们也训练了一个快速走子策略

AlphaGo围棋论文中文翻译_搜索_19

 ,它可以在 展开中快速采样。下一步,我们训练了一个强化学习式的策略网络(RL)

AlphaGo围棋论文中文翻译_搜索树_20

 通过自我对弈优化最终游戏收益的方式提高监督策略网络的能力,这种调节可以使策略向游戏胜利的正确方向优化,而不是最大化预测精度。最后我们训练了一个估值网络

AlphaGo围棋论文中文翻译_估值_21

 去预测自我对弈中游戏的胜利方。程序AlphaGo有效的结合了策略网络和估值网络以及蒙特卡洛树搜索。

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_22

图1 :神经网络训练流水线及架构

a.快速走子策略

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_23

 和通过一个下棋位置的数据集训练监督策略网络

AlphaGo围棋论文中文翻译_搜索_24

去预测人类专家棋手的走子。强化学习式策略网络

AlphaGo围棋论文中文翻译_搜索_25

初始化为监督策略网络

AlphaGo围棋论文中文翻译_估值_26

,然后通过和前面的策略网络以对弈的方式策略梯度学习并且最大化收益以提高策略的精度,新的对弈数据集将通过其网络的自我对弈产生。最后估值网络

AlphaGo围棋论文中文翻译_搜索_27

  使用网络自我对弈的数据集通过回归方式训练预测期望收益。

b.表示AlphaGo使用的网络架构原理图。策略网络使用棋盘位置

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_28

作为输入,并与监督策略网络参数

AlphaGo围棋论文中文翻译_搜索树_29

或强化策略网络参数

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_30

 作用,在合法的走子 

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_31

 上输出走子的概率分布 

AlphaGo围棋论文中文翻译_搜索树_32

(

AlphaGo围棋论文中文翻译_估值_33

 | 

AlphaGo围棋论文中文翻译_搜索树_34

  )或者

AlphaGo围棋论文中文翻译_估值_35

(

AlphaGo围棋论文中文翻译_搜索_36

 | 

AlphaGo围棋论文中文翻译_搜索_37

  )。估值网络也是使用卷积网络,其参数为

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_38

,但是其输出为一个标量

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_39

(

AlphaGo围棋论文中文翻译_搜索_40

 ),该标量表示在位置

AlphaGo围棋论文中文翻译_估值_41

预测的期望收益。

策略网络的监督学习

训练的第一阶段,我们通过监督学习来预测专家棋手在围棋的走子。监督策略网络

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_42

(

AlphaGo围棋论文中文翻译_搜索树_43

 ,

AlphaGo围棋论文中文翻译_搜索树_44

  )交替的通过参数

AlphaGo围棋论文中文翻译_搜索树_45

以及非线性压缩函数,最后通过softmax层输出在合理走子 

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_46

 上的概率分布。策略网络的输入 

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_47

 仅仅简单表示为棋盘盘面状态。策略网络用随机采样的 State-Action (

AlphaGo围棋论文中文翻译_估值_48

 ,

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_49

  )训练,并使用随机梯度上升法最大化似然函数:                                               

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_50

我们在KGS围棋服务器上通过3000万个位置数据训练了一个13层的监督策略网络。这个网络在测试集上使用所有的输入特征的预测人类专家棋手走子动作精度为57.0%,只使用棋盘位置和历史走子记录作为输入时精度为55.7%,而其他研究团队提交的世界水平最好的精度为44.4%。精度略微的提高能使棋力提高不少;在搜索中更大的网络可以获得更高的精度但是会更慢。我们也使用了一个线性的softmax训练快速走子策略

AlphaGo围棋论文中文翻译_估值_51

(

AlphaGo围棋论文中文翻译_搜索_52

 | 

AlphaGo围棋论文中文翻译_估值_53

  ) ,但是训练精度更低,只有24.2%,但每一步只需用2微秒,而监督策略网络用了3毫秒。

策略网络的强化学习

训练的第二阶段,训练旨在通过策略梯度的强化学习提高策略网络棋力。强化学习策略网络

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_54

在结构上和监督网络是相同的,其参数

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_55

被初始化为监督网络的参数,即:

AlphaGo围棋论文中文翻译_搜索_56

我们随机的选择先前迭代的策略网络和当前策略网络

AlphaGo围棋论文中文翻译_估值_57

下棋。随机的从对抗池中选择对弈方训练才能使训练稳定并防止当前的策略过拟合。我们使用一个回报函数

AlphaGo围棋论文中文翻译_估值_58

,在所有棋局的非终结时间步

AlphaGo围棋论文中文翻译_搜索树_59

 < T 时其回报为零。而收益

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_60

是棋局结束时的回报,在时间步

AlphaGo围棋论文中文翻译_估值_61

 棋局结束时: +1标记赢棋,-1表示输棋。然后使用随机梯度上升更新每一个终结时间步

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_62

的参数,最大化期望收益:                                                     

AlphaGo围棋论文中文翻译_搜索树_63

AlphaGo围棋论文中文翻译_搜索树_64

选择走子来评估强化策略网络的表现。在相互对弈时强化策略网络相比于监督策略网络而言赢了超过80%的棋局。我们也测试对抗当前最强的开源围棋软件Pachi(一个复杂的蒙特卡洛树搜索程序,在KGS上排名业余2段,每走一步执行10万次模拟)。不使用搜索的情况下,强化策略网络在对抗Pachi中赢了85%的棋局。在比较中,先前顶级水平监督策略网络对抗Pachi 赢了11%的棋局,对抗轻量级的更弱的程序 Fuego 赢了12%的棋局。

估值网络的强化学习

训练的最后阶段,关注于训练位置评估,估计所有玩家在状态

AlphaGo围棋论文中文翻译_搜索树_65

 使用策略 

AlphaGo围棋论文中文翻译_搜索树_66

 获得收益的估值函数

AlphaGo围棋论文中文翻译_估值_67

                                                      

AlphaGo围棋论文中文翻译_搜索树_68

AlphaGo围棋论文中文翻译_估值_69

;在实践中我们使用策略网络

AlphaGo围棋论文中文翻译_搜索树_70

去估计作为强策略的估值函数

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_71

,用其代替完美情况下的估值函数。我们使用估值网络

AlphaGo围棋论文中文翻译_搜索树_72

去逼近估值函数

AlphaGo围棋论文中文翻译_搜索_73

,即:

AlphaGo围棋论文中文翻译_搜索_74

AlphaGo围棋论文中文翻译_搜索树_75

 ≈ 

AlphaGo围棋论文中文翻译_搜索树_76

。这个估值网络和策略网络的架构相似,但是其输出值是一个预测标量而非概率分布。我们通过在数据(

AlphaGo围棋论文中文翻译_搜索树_77

,

AlphaGo围棋论文中文翻译_搜索树_78

)上回归的训练估值网络,训练使用梯度下降法,在预测值

AlphaGo围棋论文中文翻译_估值_79

和对应的收益

AlphaGo围棋论文中文翻译_搜索_80

上最小化均方误差(MSE)                                                     

AlphaGo围棋论文中文翻译_估值_81

的均方误差为0.37,在训练集的均方误差为0.19。为了减轻这个问题,我们在自我对弈中,从不同棋局中采样不同位置生成3000万个新的训练数据。其中每一局棋都是强化网络自我对弈直到游戏结束为止。在新生成的训练数据上的训练误差为0.226,测试误差为0.234,这两个数据表明只有极小的过拟合。图2b显示了估值网络对于位置的估计精度,对比于蒙特卡洛展开使用的快速走子策略

AlphaGo围棋论文中文翻译_估值_82

,估值函数一致的变得更精确。使用强化策略网络

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_83

AlphaGo围棋论文中文翻译_搜索_84

的单一的估计也达到了蒙特卡洛展开的精度,但是减少了15000倍的运算量。

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_85

图2 策略网络及估值网络的强度和精度


AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_86

图3 AlphaGo中的蒙特卡洛树搜索

             a,每次模拟选择具有最大走子动作值Q的边遍历搜索树,增加的奖励值

AlphaGo围棋论文中文翻译_估值_87

依赖于该边存储的先验概率 P
            b,叶节点可能被扩展;新的节点只被策略网络

AlphaGo围棋论文中文翻译_搜索树_88

处理一次,且其每一次走子动作的输出概率被存储为先验概率P。
            c,模拟的最后,叶节点被两种方式估计,即估值网络

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_89

和用快速走子策略

AlphaGo围棋论文中文翻译_搜索树_90

运行一个展开到游戏结束通过函数

AlphaGo围棋论文中文翻译_搜索树_91

 计算胜利者

            d,走子动作值Q通过更新来跟踪所有在该动作下面子树的评估

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_92

AlphaGo围棋论文中文翻译_搜索树_93

的平均值


用策略网络和估值网络搜索

AlphaGo在蒙特卡洛树搜索算法中(通过超前搜索选择走子动作)结合了策略和估值网络,图3。搜索树的每个边 (

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_94

 , 

AlphaGo围棋论文中文翻译_估值_95

 ) 都存储了一个动作的值Q(

AlphaGo围棋论文中文翻译_估值_96

 , 

AlphaGo围棋论文中文翻译_估值_97

 ),访问次数N(

AlphaGo围棋论文中文翻译_搜索_98

 , 

AlphaGo围棋论文中文翻译_估值_99

 )以及先验概率 P(

AlphaGo围棋论文中文翻译_搜索_100

 , 

AlphaGo围棋论文中文翻译_估值_101

 )。通过从根状态开始模拟(即,在整个游戏中从上向下遍历不备份)遍历整棵搜索树。在每个模拟的每一个时间步 

AlphaGo围棋论文中文翻译_搜索树_102

,从状态

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_103

 中 选择一个走子动作

AlphaGo围棋论文中文翻译_搜索树_104

                                                        

AlphaGo围棋论文中文翻译_估值_105

   为了最大化走子动作的值加了一个奖励值:

                                                      

AlphaGo围棋论文中文翻译_估值_106

即:与先验概率成正比,随着重复访问增加而衰减以鼓励搜索。当遍历在

AlphaGo围棋论文中文翻译_估值_107

步到达一个叶节点

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_108

,这个节点有可能被扩展。叶节点位置

AlphaGo围棋论文中文翻译_搜索_109

只被监督策略网络

AlphaGo围棋论文中文翻译_搜索_110

执行一次,对于一个合理的下子

AlphaGo围棋论文中文翻译_搜索_111

,输出的概率将被存储为先验概率 P(

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_112

 , 

AlphaGo围棋论文中文翻译_估值_113

 )=

AlphaGo围棋论文中文翻译_估值_114

(

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_115

 | 

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_116

)。叶节点被两种不同的方式评估:第一个是估值网络

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_117

评估,第二个是被快速走子策略

AlphaGo围棋论文中文翻译_搜索_118

在游戏终止 T 时的收益

AlphaGo围棋论文中文翻译_搜索_119

评估。这两个评估通过混合参数

AlphaGo围棋论文中文翻译_搜索_120

 合并为叶节点评估

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_121

,                                                     

AlphaGo围棋论文中文翻译_搜索树_122

       在模拟的最后,所有遍历的边的动作值和访问次数被更新。每个边累积所有穿过这个边的访问次数和平均模拟估计

                                                    

AlphaGo围棋论文中文翻译_搜索树_123

                                                    

AlphaGo围棋论文中文翻译_搜索树_124

其中

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_125

 是叶节点的第 

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_126

 次模拟。

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_127

表示这个边

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_128

是否在第

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_129

 次模拟中被遍历。一旦搜索完成,算法从根位置(root position)选择访问次数最多的下子动作。     很值得说,监督策略网络

AlphaGo围棋论文中文翻译_估值_130

表现的比更强的强化策略网络

AlphaGo围棋论文中文翻译_搜索_131

好。大概因为人类棋手会选择不同的容许的下子,而强化策略网络只选择最优的下子。然而来源于强化策略网络的估值函数

AlphaGo围棋论文中文翻译_围棋 机器学习  算法研究_132

比来源于监督策略网络的估值函数

AlphaGo围棋论文中文翻译_搜索树_133

表现更好。

相对于传统的启发式搜索而言评估策略和估值网络需要几个数量级更多的计算要求。为了有效的结合蒙特卡洛树搜索和深度神经网络,AlphaGo在CPU上使用了异步的多线程搜索,在CPU上执行模拟,在GPU上并行的计算策略网络和估值网络。最终版本的AlphaGo使用40个搜索线程,48个CPU和8个GPU。我们也实现了一个分布式版本的AlphaGo,他可以利用多个机器,40个搜索线程,1202个CPU和176个GPU。后面的章节“方法”将会提供异步计算和分布式的蒙特卡洛树搜索的细节。

评估AlphaGo的棋力

为了估计AlphaGo的棋力,我们在不同版本的AlphaGo间及其他的围棋程序间比赛,包括现在最强的商业程序Crazy Stone、Zen,最强的开源程序Pachi、Fuego。所有这些程序都基于高性能蒙特卡洛树搜索算法。额外的,我们也对比了开源程序GnuGo(一个当前用搜索算法的最高水平围棋程序,其能力超过了蒙特卡洛树搜索的程序)。所有的程序都要求每5秒内完成一次下子。

   这个比赛的显示出单机版的AlphaGo比前面的所有的围棋程序的段位排名更高,在495次游戏中赢得了494次(赢得99.8%的比赛)。为了加大挑战难度我们让四个子和其他程序比赛,AlphaGo分别赢得77%,86%,99%的游戏,分别和Crazy Stone,Zen 和Pachi在各自的比赛中。分布式版本的AlphaGo异常的强大,对比单机版的AlphaGo赢得的77%的棋局,完胜其他围棋程序。

  我们也评估了不同的AlphaGo只使用估值网络(

AlphaGo围棋论文中文翻译_估值_134

 = 0)或者快速走子策略

AlphaGo围棋论文中文翻译_估值_135

(

AlphaGo围棋论文中文翻译_估值_136

 = 1)评估位置。即使没有快速走子策略 AlphaGo仍然超过了其他所有的围棋程序,这个表明有估值网络时,蒙特卡洛估计可能是可选的。然而混合估计(

AlphaGo围棋论文中文翻译_搜索树_137

 = 0.5)的AlphaGo表现最佳,赢了95%其他不同

AlphaGo围棋论文中文翻译_搜索_138

的AlphaGo。这个说明两个位置估计的机制是补充性的:估值网络用精确但速度比较慢的

AlphaGo围棋论文中文翻译_估值_139

去逼近游戏的收益,然而展开方法可以通过稍弱但更快的策略

AlphaGo围棋论文中文翻译_搜索树_140

 精确的评估游戏得分和游戏收益。图5显示了实际游戏同AlphaGo的估计。

    最后,我们评估了分布式版本的AlphaGo对抗樊辉(职业2段,2013,2014,2015欧洲围棋冠军)的比赛。在2015年10月5-9日AlphaGo和樊辉进行了一个正式的五番棋比赛,AlphaGo赢得了五盘所有的比赛。这是第一次计算机打败人类职业棋手,没有任何的让子,在整个比赛中完胜对手,以前被认为要至少10年以上的时间。

讨论、方法(见原文)


参考:​​Mastering the game of Go with deep neural networks and tree search​


后记:

因为个人觉得这篇文章对于世界及国内的人工智能发展有比较大的意义,以及不是所有国内的从业者英文水平都很好,所以冒昧翻译。中文和英文有些词差异比较大,如果有问题请不吝指出。