【ICLR2020】看未知观测:一种简单的蒙特卡洛并行化方法

551 阅读3分钟
  • 论文题目:Watch The Unobserved:A Simple Approach To Parallelizing Monte Carlo Tree Search

作者及标题信息截图

所解决的问题

  提出一种并行化的MCTS算法,该算法实现了线性加速,并随着Workers的增加,性能只有些许损失。

背景

  MCTS的缺点就是无法并行,但是并行之后没有性能损失是比较困难的,主要的原因就是MCTS的探索-利用的平衡会依赖于之前的采样信息。作者提出一种新奇的并行化MCTS算法,WU-UCT (Watch the Unovserved in UCT),在有限的性能损失下实现了线性加速。

MCTS

  MCTS不断重复以下四个步骤:

  1. Selection

  依据 tree policynode ss 处选择动作 asa_{s},常用的选action的策略是UCT

as=argmaxsC(s){Vs+β2logNsNs}a_{s}=\underset{s^{\prime} \in \mathcal{C}(s)}{\arg \max }\left\{V_{s^{\prime}}+\beta \sqrt{\frac{2 \log N_{s}}{N_{s^{\prime}}}}\right\}

  其中C(s)\mathcal{C}(s)表示所有的子节点,置信区间用UCB算,VsV_{s^{\prime}}表示对未来累计奖励的估值。NsN_{s}NsN_{s^{\prime}}表示的是节点ssss^{\prime}的访问次数。β\beta用于控制tradeoff

  1. Expansion

  一旦选择过程到达搜索树的一个叶子节点(或满足其他终止条件),我们将根据事先的策略,通过增加一个新的子节点来扩展该节点。

  1. Simulation

  基于策略π\pi,进行simulation,评估累计奖励(cumulative reward) V^s\hat{V}_{s}

  1. Backpropagation

  反向传播过程中更新统计信息VsV_{s}NsN_{s},从叶子节点sTs_{T}到跟节点s0s_{0}

NstNst+1N_{s_{t}} \leftarrow N_{s_{t}}+1,

V^stR(st,at)+γV^st+1\quad \hat{V}_{s_{t}} \leftarrow R\left(s_{t}, a_{t}\right)+\gamma \hat{V}_{s_{t+1}},

Vst((Nst1)Vst+V^st)/Nst\quad V_{s_{t}} \leftarrow\left(\left(N_{s_{t}}-1\right) V_{s_{t}}+\hat{V}_{s_{t}}\right) / N_{s_{t}}

  其中V^sT\hat{V}_{s_{_{T}}}表示节点sTs_{T}的仿真返回结果。

  虽然最新树展开过程中的数据的要求不是强制执行的,但在实践中,为了实现有效的勘探-开采权衡,它是必须的。

MCTS和其并行结构

  从一个节点下来,并行展开rollout计算。当采用并行化的方法,确保每个worker都能使用最新的统计数据(VsV_{s}NsN_{s})将大大影响性能。由于expansionsimulation这两步比其它两步所耗费的时间要多,因此想要worker同步更新是比较困难的。并且并行化由于statistic信息整体一样,并行化展开会选择到相同节点。

经典的MCTS并行方法

Parallel MCTS

  LeafP缺乏探索性,而TreeP这种方法可能会导致exploitation失败,因为其即使知道了某个节点是最优的,也会减少这个节点的模拟次数。RootP通过worker独立的tree search来减少上述两个问题,但是这减少了每个workerrollout数量,并且会减少UCT的准确性。

所采用的方法?

  作者采取的办法是,如果有某个节点被选中,那么在不久的将来一定会得到它的Simulation Return,因此可以看作其已经被选择过了。设计 OsO_{s} 去计算已经被初始化rollouts但是并没有做完(simulation完)的数量。

as=argmaxsC(s){Vs+β2log(Ns+Os)Ns+Os}a_{s}=\underset{s^{\prime} \in \mathcal{C}(s)}{\arg \max }\left\{V_{s^{\prime}}+\beta \sqrt{\frac{2 \log \left(N_{s}+O_{s}\right)}{N_{s^{\prime}}+O_{s^{\prime}}}}\right\}

  也就是对UCB做了一个提前的衰减,避免并行的时候重复选择节点。当未完成update的时候OsO_{s}加一,完成之后OsO_{s}减一,NsN_{s}加一。

WU-UCT’s

  WU-UCT的核心思想是通过a set of statistics来平衡探索利用,同时还没有得到simulation返回值的访问节点来做 (named as unobserved samples)。

取得的效果?

WU-UCT speedup and performance

  在Atari games游戏上的性能。

Atatia

所出版信息?作者信息?

  ICLR2020上的一篇文章,来自Tencent AI Lab,第一作者刘安吉,本科毕业于北京航空航天大学自动化系。于201812月-20196月在快手实习,现兼职快手顾问。

参考资料

  • Codegithub.com/liuanji/WU-…

  • UCT:Levente Kocsis, Csaba Szepesv´ari, and Jan Willemson. Improved monte-carlo search. Univ. Tartu, Estonia, Tech. Rep, 1, 2006.

  • UCB:Peter Auer, Nicolo Cesa-Bianchi, and Paul Fischer. Finite-time analysis of the multiarmed bandit problem. Machine learning, 47(2-3):235–256, 2002.