AlphaGo 的棋局,与人工智能有关,与人生无关
|
他们在 KGS 数据上的预测准确率达到 55%。相对于 Clark 等人的工作,Maddison 的工作除了增加了 CNN 的层次(8 到 12),增加的 feature 应该是很有帮助的,比如 Turns Since,Capture Size 和 Ladder Move。尤其是 Ladder Move,下过围棋的都知道征子能否成功对应是否要走这步棋已经局部的计算非常重要。 根据他们的使用,人类 6d 的预测准确率也只有 52%,所以从预测走法的角度来说,CNN 的水平已经达到了 6d 的水平。 另外他们还做了实验,证明 Clark 那些用来保证 symmetry 的 tricky 并没有什么卵用,直接简单粗暴的把数据做 symmetric 变换后训练就行了。 完全不用搜索直接用 Move Prediction 的结果下棋,能 97%的比率战胜 GnuGo(这个是完全基于 alpha-beta 搜索的),作者并没有说明只用 Move Prediction 的绝对水平,而只是和很差的 GnuGo 比较,所以应该水平不怎么样。 加上 MCTS 之后他们的水平能达到主流 MCTS 的开源软件如 Pachi 和 Fuego 的水平。当然 CNN 的预测相对于 Simulation 来说是很慢的,他们的 GPU(4 个GeForce GTX Titan Black)评估 128 个局面需要 0.15s,而 CPU(16 Intel Xeon E52643 v2 3.5GHz)每秒可以 simulation 47,000 个局面。所以他们使用了异步的策略,先用先验知识给出一个节点的 N(v),Q(v),先搜索着,等 GPU 运算完了再用 CNN 预测的胜率更新这些统计量。因此 CPU 和 GPU 的速度需要能大致匹配。 Yuandong Tian & Yan Zhu(2015) 和 Google DeepMind 进行围棋竞赛的主要就是 Facebook Tian yuandong 他们了。在 Google 宣布文章在 Nature 发表的前一天,他们在 arxiv 上发表了自己的工作(https://www.zhihu.com/topic/20038840)。 下面我们来看看他们的工作(《Better Computer Go Player with Neural Network and Long-Term Prediction》)。 使用的 feature:
除了使用之前工作的标准 feature 之外,他们增加了一些 feature,比如是否边界,距离中心的远近,是否靠近自己与对手的领土(不清楚怎么定义领土的归属的)。此外对于之前的 feature 也进行了压缩,之前都把特征分成黑棋或者白棋,现在直接变成己方和对手,这样把模型从两个变成了一个(之前需要给黑棋和白棋分别训练一个模型)。此外的一个不同地方就是类似于 Multi-task 的 learning,同时预测未来 3 步棋的走法(而不是 1 步棋走法)。
为了与 Maddison 的工作比较,这里只用了标准的 features,比较的也是未来 1 步棋的准确率,可以发现这个方法还是有效的(不过我个人觉得作者应该自己复现 Maddison 的结果而不是直接用他的结果) 只使用 DCNN 的围棋软件(不用 MCTS 搜索) darkforest: 标准的 feature,一步的预测,使用 KGS 数据 darkforest1:扩展的 feature,三步预测,使用 GoGoD 数据 darkforest2:基于 darkforest1,fine-tuning 了一下参数。 把它们放到 KGS 上比赛,darkforest 能到 1k-1d 的水平,darkforest1 能到 2d 的水平,darkforest2 能到 3d 的水平【注:KGS 的 3d 应该到不了实际的业余 3 段】,下面是具体的情况。
因此作者认为加入 3 步预测的训练是有效的。 MCTS+DCNN tree Policy: 走法首先通过 DCNN 排序,然后按顺序选择,除非累计的概率超过 0.8 或者超过一定次数的 top 走法。Expansion 使用的 UCT 算法。 Default Policy:参考的 Pachi 的 tree policy,有 3*3 的 pattern,对手打吃的点(opponent atari point),点眼的检测(detection of nakade points)等。 这个版本的软件叫 darkforest3,在 KGS 上能到 5d 的水平。 弱点 DCNN 预测的 top3/5 的走法可能不包含局部战役的一个关键点,所以它的局部作战能力还比较弱。 对于一些打劫点即使没用,DCNN 还是会给高分。 当局面不好的情况下,它会越走越差(这是 MCTS 的弱点,因为没有好的走法,模拟出来都是输棋,一些比较顽强的抵抗的走法不能走出来)。 从上面的分析可以看出:DCNN 给出的走法大局观还是不错的,这正是传统的方法很难解决的问题。局部的作战更多靠计算, MCTS 会有帮助。但是我个人觉得 MCTS 搜索到结束,没有必要。一个局部的计算也许可以用传统的 alpha-beta 搜索来解决,比如征子的计算,要看 6 线有没有对手的棋子,另外即使有对手的棋子,也要看位置的高低,这样的计算 DCNN 是没法解决的,需要靠计算。 AlphaGo 终于轮到主角上阵了,您可能不耐烦了。不过有了前面的基础,理解 AlphaGo 就容易多了,这里我们主要分析 AlphaGo 的创新点。 Policy Network & Value Network
上图是 AlphaGo 所使用的两个网络以及训练过程。和之前的工作比,除了 Policy Network 之外,AlphaGo 多了一个 Value Network。 Policy Network 我们通过之前的介绍以及了解到了,它的作用是 tree Policy 时候的 Node Selection。(rollout 阶段不能使用 Policy Network,因为 DCNN 的计算速度相对于 Simulation 来说太慢,所以 AlphaGo 又训练了一个简单的 Rollout Policy,它基于一些 local 的 pattern 之类的 feature 训练了一个线性的 softmax)。 那么 Value Network 又是做什么用的呢?这个 Value Network 就是我们之前说的很多工作都“回避”的问题——给一个局面打分,就是之前在象棋和 minimax 部分讨论的局面的估值函数,只不过 AlphaGo 是使用深度强化学习 (deep reinforcment learning) 学习出来,而不是像 Deep Blue 或者其它象棋程序那样是人工提取的 feature 甚至手工调整权重(当然 Deep Blue 是很多年前的工作了,现在也有用深度强化学习来搞国际象棋的,比如这篇论文《Giraffe: Using Deep Reinforcement Learning to Play Chess》)。 前面在讨论 Tian 等人的工作时我们也分析过了,光用 Move Prediction 的软件大局观还不错,但是局部的战术就比较差,因为局部的战术更多靠计算,人类也是这样。围棋由于估值函数比较困难,所以大都是用 MCTS 搜索到游戏结束。但是 MCTS 如果盲目搜索(使用随机的 default policy 去 rollout/playout)肯定不好,使用各种领域知识来缩小 rollout 的范围就非常重要。前面我们也看到,传统的 MCTS 只能到 2d 的水平,而用 DCNN 的 tree policy 的 MCTS 就能到 5d 的水平(如果 default policy 如果能用 DCNN 指导肯定更好,可惜 DCNN 的速度太慢)。 (编辑:PHP编程网 - 湛江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |





