AlphaGo Zero学习一

参考遥行 Go Further《深入浅出看懂AlphaGo元》文章开展学习。

从文中了解到AlphaGo Zero出自《Mastering the Game of Go without Human Knowledge》论文,不同于打败樊麾和李世石的版本。

1)算法上是自对弈强化学习,完全从随机落子开始,不用人类棋谱,之前使用了大量棋谱学习人类的下棋风格作为开局的起始。

2)数据结构上,只有黑子白子两种状态,之前包含这个点的气等相关棋盘信息。

3)模型上,使用一个神经网络,之前使用了两个神经网络构造策略和局面评估功能,其中策略网络(基于深度卷积神经网)学习人类的下棋风格,局面网络(基于左右互搏生成的棋谱,为什么这里需要使用左右互搏是因为现有的数据集不够,没法判断落子胜率这一更难的问题)来计算在当前局面下每一个不同落子的胜率。

4)策略上,基于训练好的这个神经网,进行简单的树形搜索,之前会使用蒙特卡洛算法实时演算并且加权得出落子的位置。

下面是摘自论文原文关于AlphaGo Zero与之前版本的差异说明:

Our program, AlphaGo Zero, differs from AlphaGo Fan and AlphaGo Lee 12 in several important aspects. First and foremost, it is trained solely by self-play reinforcement learning, starting from random play, without any supervision or use of human data. Second, it only uses the black and white stones from the board as input features. Third, it uses a single neural network, rather than separate policy and value networks. Finally, it uses a simpler tree search that relies upon this single neural network to evaluate positions and sample moves, without performing any MonteCarlo rollouts. To achieve these results, we introduce a new reinforcement learning algorithm that incorporates lookahead search inside the training loop, resulting in rapid improvement and precise and stable learning. Further technical differences in the search algorithm, training procedure and network architecture are described in Methods.

接下来学习上面提到4点变化的具体细节:

首先回顾下围棋建模定义(可参看《人工智能应用案例学习4》):

棋盘 19 * 19 = 361 个交叉点可供落子,每个点三种状态,白(用1表示),黑(用-1表示),无子(用0表示),用s描述此时棋盘的状态,即棋盘的状态向量记为s(state首字母)。

公式1-1:361个交叉点落子状态

假设状态s下,暂不考虑不能落子的情况, 那么下一步可走的位置空间也是361个。将下一步的落子行动也用一个361维的向量来表示,记为a(action首字母)。

公式1-2:落子行动状态

公式1-2 假设其中1在向量中位置为39,则a表示在棋盘(3,1)位置落白子,3为横坐标,1为列坐标。

有以上定义,我们就把围棋问题转化如下:

任意给定一个状态s,寻找最优的应对策略s,最终可以获得棋盘上的最大地盘。

看到s,脑海中就是一个棋盘,上面有很多黑白子

看到a,脑海中就想象一个人潇洒的落子

一个新的深度神经网络构成:

新的网络中,使用了一个参数为 θ (需要通过训练来不断调整) 的深度神经网络fθ。

【网络输入】19×19×17  0/1值:现在棋盘状态的 s 以及7步历史落子记录。最后一个位置记录黑白,0白1黑。

【网络输出】两个输出:落子概率(362个输出值)和一个评估值([-1,1]之间)记为 fθ(s)=(p,v)。

【落子概率 p】 向量表示下一步在每一个可能位置落子的概率,又称先验概率 (加上不下的选择),即 pa=Pr(a|s)(公式表示在当前输入条件下在每个可能点落子的概率)。

【评估值 v】 表示现在准备下当前这步棋的选手在输入的这八步历史局面 s下的胜率(我这里强调局面是因为网络的输入其实包含历史对战过程)。

【网络结构】基于Residual Network(大名鼎鼎ImageNet冠军ResNet)的卷积网络,包含20或40个Residual Block(残差模块),加入批量归一化Batch normalisation与非线性整流器rectifier non-linearities模块。

由于当前研究尚浅,先解释第一个【网络输入】的19×19×17中17代表什么:

输入数据的维度 19×19×17,其中代表的数值类型为二进制0/1。

表示这个交叉点有子, 0表示这个交叉点没有子或是对手的子或 t<0, t代表第几次/步下棋。
记录对手的落子情况

从状态 s 开始,记录了倒退回去的15步,双方棋手交替。最后一个19×19的存储了前面16步每一个状态对应的棋子的黑白颜色。

【借用原文作者理解】为了更加直观的解释,如果是上面的局部棋盘状态 s,接下来的下一步是黑棋落子,走了4步,那么输入数据是什么样的呢?

1黑0白

同理,如果有8步的话,也就是16个对应的X和Y加一个C来表示现在的棋盘状态(注意,这里面包含历史状态)。这里的数据类型是Boolean,非常高效,并且表达的信息也足够。

至于使用八步的原因。个人理解,一方面是为了避免循环劫,另一方面,选择八步也可能是性能和效果权衡的结果(从感知上来说当然信息记录的越多神经网络越强,奥卡姆剃刀定理告诉我们,简单即有效,一味的追求复杂,并不是解决问题的最佳途径)。

神经网络构成原文参考:

Neural Network Architecture The input to the neural network is a 19 × 19 × 17 image stack comprising 17 binary feature planes. 8 feature planes Xt consist of binary values indicating the presence of the current player’s stones (Xit = 1 if intersection i contains a stone of the player’s colour at time-step t; 0 if the intersection is empty, contains an opponent stone, or if t < 0). A further 8 feature planes, Yt, represent the corresponding features for the opponent’s stones. The final feature plane, C, represents the colour to play, and has a constant value of either 1 if black is to play or 0 if white is to play. These planes are concatenated together to give input features st = [Xt, Yt, Xt−1, Yt−1, ..., Xt−7, Yt−7, C]. History features Xt, Yt are necessary because Go is not fully observable solely from the current stones, as repetitions are forbidden; similarly, the colour feature C is necessary because the komi is not observable.

你可能感兴趣的:(AlphaGo Zero学习一)