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

  • 论文题目: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 s s 处选择动作 a s a_{s} ,常用的选action的策略是UCT

a s = arg max s C ( s ) { V s + β 2 log N s N s } 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算, V s V_{s^{\prime}} 表示对未来累计奖励的估值。 N s N_{s} N s N_{s^{\prime}} 表示的是节点 s s s s^{\prime} 的访问次数。 β \beta 用于控制tradeoff

  1. Expansion

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

  1. Simulation

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

  1. Backpropagation

  反向传播过程中更新统计信息 V s V_{s} N s N_{s} ,从叶子节点 s T s_{T} 到跟节点 s 0 s_{0}

N s t N s t + 1 N_{s_{t}} \leftarrow N_{s_{t}}+1 ,

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

V s t ( ( N s t 1 ) V s t + V ^ s t ) / N s t \quad V_{s_{t}} \leftarrow\left(\left(N_{s_{t}}-1\right) V_{s_{t}}+\hat{V}_{s_{t}}\right) / N_{s_{t}}

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

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

MCTS和其并行结构

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

经典的MCTS并行方法

Parallel MCTS

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

所采用的方法?

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

a s = arg max s C ( s ) { V s + β 2 log ( N s + O s ) N s + O s } 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的时候 O s O_{s} 加一,完成之后 O s O_{s} 减一, N s N_{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月在快手实习,现兼职快手顾问。

参考资料

  • Code:https://github.com/liuanji/WU-UCT

  • 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.

发布了199 篇原创文章 · 获赞 174 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/weixin_39059031/article/details/105580558
今日推荐