甜野猫|组合游戏系列4: AlphaGo Zero 强化学习算法原理深度分析

AlphaGo Zero是Deepmind 最后一代AI围棋算法 , 因为已经达到了棋类游戏AI的终极目的:给定任何游戏规则 , AI从零出发只通过自我对弈的方式提高 , 最终可以取得超越任何对手(包括顶级人类棋手和上一代AlphaGo)的能力 。 换种方式说 , 当给定足够多的时间和计算资源 , 可以取得无限逼近游戏真实解的能力 。 这一篇 , 我们深入分析AlphaGo Zero的设计理念和关键组件的细节并解释组件之间的关联 。 下一篇中 , 我们将在已有的N子棋OpenAI Gym 环境中用Pytorch实现一个简化版的AlphaGo Zero算法 。

  • 组合游戏系列1: Leetcode中的Minimax 和 Alpha Beta剪枝(1)
  • 组合游戏系列1: Leetcode中的Minimax 和 Alpha Beta剪枝(2)
  • 组合游戏系列2: 井字棋Leetcode系列题解和Minimax最佳策略实现
  • 组合游戏系列3: 井字棋、五子棋的OpenAI Gym GUI环境
  • 组合游戏系列4: AlphaGo Zero 强化学习算法原理深度分析
  • 组合游戏系列5: 井字棋、五子棋AlphaGo Zero 算法实战
AlphaGo Zero 综述AlphaGo Zero 作为Deepmind在围棋领域的最后一代AI Agent , 已经可以达到棋类游戏的终极目标:在只给定游戏规则的情况下 , AI 棋手从最初始的随机状态开始 , 通过不断的自我对弈的强化学习来实现超越以往任何人类棋手和上一代Alpha的能力 , 并且同样的算法和模型应用到了其他棋类也得出相同的效果 。 这一篇 , 从原理上来解析AlphaGo Zero的运行方式 。
AlphaGo Zero 算法由三种元素构成:强化学习(RL)、深度学习(DL)和蒙特卡洛树搜索(MCTS , Monte Carlo Tree Search) 。 核心思想是基于神经网络的Policy Iteration强化学习 , 即最终学的是一个深度学习的policy network , 输入是某棋盘局面 s , 输出是此局面下可走位的概率分布:p(a|s) 。
甜野猫|组合游戏系列4: AlphaGo Zero 强化学习算法原理深度分析在第一代AlphaGo算法中 , 这个初始policy network通过收集专业人类棋手的海量棋局训练得来 , 再采用传统RL 的Monte Carlo Tree Search Rollout 技术来强化现有的AI对于局面落子(Policy Network)的判断 。 Monte Carlo Tree Search Rollout 简单说来就是海量棋局模拟 , AI Agent在通过现有的Policy Network策略完成一次从某局面节点到最终游戏胜负结束的对弈 , 这个完整的对弈叫做rollout , 又称playout 。 完成一次rollout之后 , 通过局面树层层回溯到初始局面节点 , 并在回溯过程中同步修订所有经过的局面节点的统计指标 , 修正原先policy network对于落子导致输赢的判断 。 通过海量并发的棋局模拟来提升基准policy network , 即在各种局面下提高好的落子的 p(a_win|s) , 降低坏的落子的 p(a_lose|s)
举例如下井字棋局面:
甜野猫|组合游戏系列4: AlphaGo Zero 强化学习算法原理深度分析局面s
基准policy network返回 p(s) 如下:
甜野猫|组合游戏系列4: AlphaGo Zero 强化学习算法原理深度分析通过海量并发模拟后 , 修订成如下的action概率分布 , 然后通过policy iteration迭代新的网络来逼近p' 就提高了棋力 。
甜野猫|组合游戏系列4: AlphaGo Zero 强化学习算法原理深度分析
蒙特卡洛树搜索(MCTS)概述Monte Carlo Tree Search 是Monte Carlo 在棋类游戏中的变种 , 棋类游戏的一大特点是可以用动作(move)联系的决策树来表示 , 树的节点数量取决于分支的数量和树的深度 。 MCTS的目的是在树节点非常多的情况下 , 通过实验模拟(rollout, playout)的方式来收集尽可能多的局面输赢情况 , 并基于这些统计信息 , 将搜索资源的重点均衡地放在未被探索的节点和值得探索的节点上 , 减少在大概率输的节点上的模拟资源投入 。 传统MCTS有四个过程:Selection, Expansion, Simulation 和Backpropagation 。 下图是Wikipedia 的例子:


推荐阅读