AlphaGo Zero是Deepmind 最后一代AI围棋算法 ,因为已经达到了棋类游戏AI的终极目的 :给定任何游戏规则 ,AI从零出发只通过自我对弈的方式提高 ,最终可以取得超越任何对手 (包括顶级人类棋手和上一代AlphaGo )的能力。换种方式说 ,当给定足够多的时间和计算资源 ,可以取得无限逼近游戏真实解的能力。这一篇 ,我们深入分析AlphaGo Zero的设计理念和关键组件的细节并解释组件之间的关联。下一篇中 ,我们将在已有的N子棋OpenAI Gym 环境中用Pytorch实现一个简化版的AlphaGo Zero算法。
第一篇: Leetcode中的Minimax 和 Alpha Beta剪枝
第二篇: 井字棋Leetcode系列题解和Minimax最佳策略实现
第三篇: 井字棋、五子棋的OpenAI Gym GUI环境
第四篇: AlphaGo Zero 强化学习算法原理深度分析
第五篇: 井字棋、五子棋AlphaGo Zero 算法实战
AlphaGo Zero 作为Deepmind在围棋领域的最后一代AI Agent ,已经可以达到棋类游戏的终极目标 :在只给定游戏规则的情况下 ,AI 棋手从最初始的随机状态开始 ,通过不断的自我对弈的强化学习来实现超越以往任何人类棋手和上一代Alpha的能力 ,并且同样的算法和模型应用到了其他棋类也得出相同的效果。这一篇 ,从原理上来解析AlphaGo Zero的运行方式。
AlphaGo Zero 算法由三种元素构成 :强化学习 (RL )、深度学习 (DL )和蒙特卡洛树搜索 (MCTS ,Mo nte Carlo Tree Search )。核心思想是基于神经网络的Policy Iteration强化学习 ,即最终学的是一个深度学习的policy network ,输入是某棋盘局面 s ,输出是此局面下可走位的概率分布 :
假设某节点有两个子节点s1, s2 ,它们的统计指标为 s1: w/n = 3/4 ,s2: w/n = 6/8 ,由于两者输赢比率一样 ,因此根据公式 ,访问次数少的节点出于Exploration的目的胜出 ,MCTS最终决定从s局面走向s1。
前一代的AlphaGo已经战胜了世界冠军 ,取得了空前的成就 ,AlphaGo Zero 的设计目标变得更加General ,去除围棋相关的处理和知识 ,用统一的框架和算法来解决棋类问题。
无人工先验数据
改进之前需要专家棋手对弈数据来冷启动初始棋力
无特定游戏特征工程
无需围棋特定技巧 ,只包含下棋规则 ,可以适用到所有棋类游戏
单一神经网络
统一Policy Network和Value Network ,使用一个共享参数的双头神经网络
简单树搜索
去除传统MCTS的Rollout 方式 ,用神经网络来指导MCTS更有效产生搜索策略
搜索空间的两个优化原则
通过average out多次模拟下一层落子决定 ,尽可能提升MCTS策略的下一步判断能力 ,提高
从游戏局面s开始 ,选择a向下递归 ,直至未展开的节点 (搜索树中的叶子节点 )或者游戏结局。具体在局面s下选择a的规则由以下UCB(Upper Co nfidence Bound)决定
其中 ,Q(s,a) 和u(s,a) 项分别代表Exploitation 和Exploration。两项相加来均衡Exploitation和Exploration ,保证初始时每个节点被explore ,在有足够多的信息时逐渐偏向exploitation。
Expand
当遇到一个未展开的节点 (搜索树中的叶子节点 )时 ,对其每个子节点使用现有网络进行预估 ,即
Backup
当新的叶子节点展开时或者到达终点局面时 ,向上更新父节点的Q值 ,具体公式为
Play
多次模拟结束后 ,使用得到搜索概率分布
来确定最终的落子动作。正比于访问次数的某次方
,其中
Mastering the game of Go with deep neural networks and tree search
Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm
AlphaGo Zero论文解析
AlphaZero实战 :从零学下五子棋 (附代码 )