On-line Policy Improvement using Monte-Carlo Search


TL;DR

本文提出了一种在线策略改进算法,该算法通过蒙特卡洛搜索(Monte-Carlo search)实时评估当前状态下所有可能动作的长期期望回报,并选择最优动作,从而显著提升一个已有“基础策略”的表现。

关键定义

相关工作

传统的策略迭代(policy iteration)算法,无论是基于动态规划的全状态空间扫描,还是基于强化学习的轨迹训练,通常都是一个计算量巨大的离线过程。例如,使用非线性函数逼近器(如神经网络)的强化学习方法需要对大量轨迹进行长时间的离线训练才能达到满意的性能。

这些方法的共同瓶颈在于,它们的速度太慢,无法在实时决策中计算出改进的策略。本文旨在解决这一问题,即开发一种能够在线(on-line)实时(real-time)地对一个已有策略进行改进的算法,从而在当前决策点立即做出更好的选择。

本文方法

本文提出的在线策略改进算法本质上是执行单步的策略迭代,但这一步是在决策的当下通过蒙特卡洛搜索完成的。

核心算法

对于一个给定的当前状态 \(x\) 和一个基础策略 \(P\),算法的执行步骤如下:

  1. 动作评估:对每一个合法的动作 \(a\),算法通过蒙特卡洛模拟来估计其价值 \(V_P(x, a)\),即在状态 \(x\) 执行动作 \(a\) 后,后续所有步骤都遵循基础策略 \(P\) 所能带来的长期期望回报。
  2. 模拟过程:为了估计 \(V_P(x, a)\),算法会进行大量的模拟试验(rollouts)。每一次试验都从执行动作 \(a\) 后的新状态开始,然后使用基础策略 \(P\) 来选择后续的动作,直到游戏结束。
  3. 价值计算:将所有从 \((x, a)\) 出发的模拟试验所获得的最终奖励(例如,游戏胜负的得分)进行平均,得到对 \(V_P(x, a)\) 的统计估计。
  4. 策略改进:算法选择具有最高估计值的动作作为改进策略 \(P'\) 在状态 \(x\) 的决策:

    \[P^{\prime}(x)=\arg\max_{a}V_{P}(x,a)\]

这就在当前状态 \(x\) 实现了一次实时的策略改进。

创新点

效率优化

为了应对巨大的计算需求,本文采用了两种关键的效率优化技术:

  1. 并行计算:如上所述,独立的模拟试验可以被分配到多个处理器上同时运行,通信开销极小,并行效率很高。
  2. 统计剪枝 (Statistical Pruning):在模拟过程中持续监控各个候选动作的统计数据。如果某个动作的估计价值显著低于当前最优动作(超出某个置信区间),则可以提前停止对该动作的模拟,从而节省计算资源。

截断Rollout (Truncated Rollout)

对于那些基础策略本身计算就非常耗时(例如大型多层神经网络)的情况,进行完整的rollout到游戏结束是不可行的。为此,本文提出了一种“截断Rollout”的变体:

实验结论

本文通过在西洋双陆棋(backgammon)领域的实验,验证了该方法的有效性。

对弱基础策略的提升

实验使用了一些较弱的单层神经网络作为基础策略。结果显示,蒙特卡洛方法带来了巨大的性能提升。

网络 基础策略性能 蒙特卡洛策略性能 蒙特卡洛CPU时间
Lin-1 -0.52 ppg -0.01 ppg 5 秒/步
Lin-2 -0.65 ppg -0.02 ppg 5 秒/步
Lin-3 -0.32 ppg +0.04 ppg 10 秒/步
表1:简单线性评估器的性能对比(对战TD-Gammon 2.1 1-ply)。正值表示更优。
评估器 基础策略损失 蒙特卡洛策略损失 降低比率
随机策略 0.330 0.131 2.5
Lin-1 0.040 0.0124 3.2
Lin-2 0.0665 0.0175 3.8
Lin-3 0.0291 0.00749 3.9
表2:在800个测试局面上的平均权益损失对比。损失值越小越好。

对强基础策略的提升 (截断Rollout)

对于像TD-Gammon这样强大的多层神经网络,实验采用了“截断Rollout”方法。

隐藏单元数 基础策略损失 截断蒙特卡洛损失 降低比率 蒙特卡洛CPU时间
10 0.0152 0.00318 (11步, thorough) 4.8 25 秒/步
    0.00433 (11步, optimistic) 3.5 9 秒/步
80 0.0120 0.00181 (7步, thorough) 6.6 65 秒/步
    0.00269 (7步, optimistic) 4.5 18 秒/步
表3:使用截断Rollout对多层神经网络的性能提升。

最终结论