本文基于Google在Nature上关于AlphaGo的文章解读以及Git上对于AlphaGo的复现项目学习综合而来,主要探寻AlphaGo的学习技巧以及探寻其在机器人应用方面的思路和启事。
【Mnih V, Kavukcuoglu K, Silver D, et al. Playing atari with deep reinforcement learning[J]. arXiv preprint arXiv:1312.5602, 2013.】
直接来看这个算法流程。算法的中心思想是想通过随机的动作探索出最佳的策略。但是这个随机探索的过程存在如下问题:
1.在状态空间比较大的时候,随机探索策略可能需要巨量的时间才能够探索到一个比较好的策略
2.随机策略选取的几率只和迭代次数有关而和整体策略的评价无关,即有可能在探索初期就得到一个比较好的策略,但是机构并不会以这个策略作为蓝本进行更进一步的探索,而是继续进行随机探索,使得探索效率变得很低
但是这种随机探索策略也有其好处:
1.没有人为策略的干扰,一旦其出现智能行为,就可以认为是人工智能算法的学习成果,而并非是人为设计的规则所引导出来的东西。
2.能够找到最接近全局最优的策略(基于当前假设和考虑基准)
我们希望能够在保留原有优点的情况下增加训练速度,这也是MCTS引入的一个理由。
蒙特卡洛树搜索(MCTS),是一种基于模拟搜索的人工智能最优决策方法。
基本的 MCTS 算法非常简单:根据模拟的输出结果,按照节点构造搜索树。其过程可以分为下面的若干步:
搜索树的构建过程
选择 Selection:从根节点 R 开始,递归选择最优的子节点(后面会解释)直到达到叶子节点 L。
扩展 Expansion:如果 L 不是一个终止节点(也就是,不会导致博弈游戏终止)那么就创建一个或者更多的字子节点,选择其中一个 C。
模拟 Simulation:从 C 开始运行一个模拟的输出,直到博弈游戏结束。
反向传播 Backpropagation:用模拟的结果输出更新当前行动序列。
【http://www.jianshu.com/p/d011baff6b64】
但是在较大的搜索空间中,即使是MCTS也需要承担巨大的计算量才能保证估计的准确性。例如在围棋游戏中,平均需要走150步才能决出胜负,每一步可以考虑的走法有大约250种。这样拓展开的树将有及其庞大数量的结点,给搜索造成了极大的困难。AlphaGo通过对MCTS进行简化,缩减了搜索树的宽度和深度,从而得到最优策略。
AlphaGo通过四个网络来进行搜索的加速
其中,RolloutPolicy和SL policy network都是针对于专家知识(棋谱)进行拟合的网络。
RL policy network用于策略网络的强化学习,而Value network用于估计各个状态的状态收益
RolloutPolicy使用的是简单的棋盘特征进行拟合训练,其特征设定如下:
【Silver D, Huang A, Maddison C J, et al. Mastering the game of Go with deep neural networks and tree search[J]. Nature, 2016, 529(7587): 484-489.】
这个网络在论文中只对专家系统的走法完成了22%左右的成功预测,但是计算速度非常快,可以用于估计快速估计当前状态的专家建议。但是AlphaGo在实际使用的时候,并不使用这个网络作为自己的预测网络,而是使用另一个更加复杂的卷积网络进行训练作为自己的策略网络。
该网络将围棋棋盘的落子情况视作一个19X19的图像输入,通过CNN网络结合专家知识进行训练,得到在各种情况的时候应该选择的落子方案。论文指出这个网络对于不同情况的预测和专家知识有大约50%的正确率。
看上去这个正确率并不算高,但是,这只是一个预训练系统,并不需要将这个模型调整到过高的正确率。
在强化学习的框架中,这其实可以理解为先验方案。相当于是将随机探索的动作分布从均匀分布转到了强先验条件的建议分布。但是之前我们也提到过了,我们并不希望这个建议分布过于强势,从而导致我们最终的策略严格遵从这个分布而无法进化学习。所以保持这个建议分布具有较低的正确率也是预防过拟合的一种方式。
通过专家知识的预训练之后,AlphaGo进入自我博弈阶段。其会通过最新的网络和以前版本网络的自我博弈来自我进化。每次自我博弈的网络会从旧版本的网络中随机挑选,并且在每次新版本网络更新之后,其参数也会加入旧版本网络库中。
该网络的结构和SL policy network一致,其初始化参数即为SL policy network的训练结果。该网络以随机场景为episode的起点,以一局结束(赢或者输)为episode终点,128个episode为一个minbatch进行训练,对于策略 p 的优化公式为:
价值网络是不同于策略网络的一个评价体系,它采用回归的方法,估计了当前状态的获胜期望。如果说策略网络利用马尔可夫性只着眼于考虑当前状态的某一部动作对于整体局面的影响,价值网络就可以说是对于当前状态所有动作情况知道动作结束的一个考虑。
不同状态的期望是通过蒙特卡洛方法进行估算的:
这样,我们就可以使用简化版本的MCTS来进行搜索了。
依照MCTS的流程,我们需要估计不同的动作选择最终的收益,但是如果将当前场景所有动作都纳入考虑,搜索树将会急剧膨胀,无法计算。所以在动作选择阶段,我们依据公式:
1.使用MCTS减少训练时间,但是这会极大增加实际使用时的规划时间,是否可以将这个方法引入到训练中去
2.先验知识和Q值结合的最优策略探寻。
https://github.com/Rochester-NRT
一个阿法狗的复现工程,值得参考