欢迎光临 x-algo
关注算法在工业界应用
Hi, 这是一个关注大数据算法在工业界应用的网站

AlphaGo/AlphaGo Zero/AlphaZero

AlphaGo

  1. 采用蒙特卡罗搜索树作为搜索框架
  2. 两个网络,一个价值网络表示状态价值;一个策略网络(两个网络都是CNN),用来决定每一个状态的action分布.
  3. 先用专家棋谱学习策略网络,然后self-play更新这个网络. 专家棋谱学出来的策略只能让action更像一个"专家",后者是真正要赢.
  4. 得到策略网络后, 用这个策略学出来价值网络.

具体流程图:

13.2.39

 

策略网络的学习可以参考这个文章,论文没有详细推导梯度公式来源.

Searching with policy and value networks

到模型inference的时候了,如果已经学习好了policy network和value network, 在真正的对弈中,就需要用这连个模型做"决策".这里就要用蒙特卡罗搜索树了.分为四个过程,如下图:

13.2.41

上面abcd四个步骤是循环执行的,每一轮循环扩展一个叶子节点, 更新从叶子节点到更节点的权重.

假设现在只有根节点, 要从根节点开始搜索, 这里就需要一个搜索策略, 按照什么"优先级"进行搜索, 但是无论这个搜索怎么设计, 一定要考虑exploit和explore之间的平衡.论文中给的搜索策略为:

13.2.42

那么, \(Q(s_t,a)\) 可以看做是一个行为价值,预估方式为:

13.2.45

13.2.47

其中 \(N(s,a)\) 表示的是路径中对应边被走过的次数(因为abcd是一个有终止条件的循环,所以会有重复路径), \(V(s^i_L)\) 表示第i次循环探索出来的叶子节点的状态价值. 当一个叶子节点被探索出来之后,对应这个叶子节点的所有祖先的Q都按照这个公式进行更新. \(\lambda Z_L\) 是rollout通过使用RL策略走到棋局结束得到的得分(也就是输赢状态).

接下来就是 \(u(s_t,a)\) 是怎么更新的:

13.2.46

这里策略网络 \(P(s,a)\) 使用的是SL 策略 \(p_{\delta}\) .由于SL策略不会改变, 对当前状态处理一次直接全部存储下来即可,下一次访问直接取出来值就可以了.注意上面公式的分母部分, 这里考虑了explore.

这里有一个疑问,就是问什么选择SL的策略,而不是选择RL的策略, 前面的评估中明显RL策略要好.原因是SL是通过人类棋谱学出来的, 相同状态下不同action多样想比较好, 而RL策略是"收敛"状态的策略, 如果用来explore操作,效果明显不太好.

资料

 

AlphaGo Zero

论文特点

  • 不需要人类信息,自己是自己的老师
  • 仅仅只有一个网络,不在分为策略网络和价值网络
  • 仅仅依靠采样,不进行rollout操作
  • 训练中使用前向搜索(lookahead search),提高训练速度和模型稳定性
  • MCTS参与训练过程的搜索,网络的标注是MCTS搜出来的概率分布和最终的胜负结果z,具体搜索过程类似第一篇论文
  • 网络学习的方式是等到当前episode结束,拿到反馈z,和过程中搜索得到的概率分布 \(\pi\) ,构造损失函数进行反向传播.

下图中a为模拟过程,b为梯度更新过程,注意a图中每一步搜索得到的策略.

13.2.48

网络定义何其损失函数为:

13.2.49

搜索过程为:

13.2.50

策略 \(\pi\) 就是讲路径上的count数了一下,构造出来一个分布,和第一个论文类似, 同时加入了温度因子,具体为:

13.2.51

文献

AlphaGo Zero 

AlphaZero

上一篇是不使用人类的信息解决围棋问题,这一篇是解决所有棋类问题.证明了CNN + RL + MCTS无敌..

参考

未经允许不得转载:大数据算法 » AlphaGo/AlphaGo Zero/AlphaZero

分享到:更多 ()

评论 抢沙发

*

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注大数据算法在工业界应用

本站的GitHub关于本站