Alphago Zero--围棋Ai

研究了一段时间的围棋Ai,也完成了六面围棋的Ai训练(要得到一个好的权重不容易,目前还在训练中,争取棋力更强),抽空整理一下之前的发现。

网上很多人把论文翻译好了:
1. Mastering the Game of Go without Human Knowledge
2. Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm
不看论文或者解析,是看不懂代码的......

  1. 算法
    自对弈强化学习,完全从随机落子开始。

  2. 模型
    策略网络(Policy):怎么落子的策略。最开始是随机下,慢慢的经过胜率的PK,落子会更合理。
    局面网络(Value):计算在当前局面下每一个不同落子的胜率。

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

具体细节参考:
AlphaZero实践——中国象棋(附论文翻译)
深入浅出看懂AlphaGo Zero - PaperWeekly 第51期

一些细节分享:

  1. 围棋里面会有pass,如果根节点的价值和最好的子节点价值低于阈值v_resign,则AlphaGo Zero会认输。也就是说,训练的时候,黑方pass,白方也pass,就介绍这盘的训练了,如果下棋的时候Ai连续两次pass,则认为Ai输。
  2. 代码中会创建一个17维度的棋局Board,其中有历史棋局8。
  3. 围棋是有对称性的,这样可以用镜像的方式,增加下棋的局数。
  4. 训练的时候,首先是对弈,下完一个批次(我设置的20局),然后生成一个model_1,按这样的方法生成model_2, model_2和model_1 PK,就能得到一个Best Model。
  5. 使用增强学习里的策略网络和价值网络,Policy和Value。

Tensorboard查看训练的情况:


Alphago Zero--围棋Ai_第1张图片
tensorboard.png

alphago zero代码:https://github.com/Narsil/alphagozero
六面围棋代码:https://github.com/307509256/alphagozero

你可能感兴趣的:(Alphago Zero--围棋Ai)