1.3 蒙特卡罗方法
蒙特卡罗方法
在动态规划中,策略评估是通过显式求解贝尔曼方程完成的。而在蒙特卡罗(Monte Carlo)方法和时间差分(TD)方法中,策略评估依赖于采样。
蒙特卡罗策略评估
当环境是未知的(a priori unknown)时,必须通过探索来建立对状态值函数 \(V\) 或动作值函数 \(Q\) 的估计。
蒙特卡罗采样(MC) 的核心思想非常简单:状态 \(s\) 的期望回报可以通过采样 \(M\) 条从 \(s\) 出发的轨迹 \(\tau_i\) 并计算其回报的平均值来近似:
如果采样的轨迹数量足够多,则其平均值是值函数的无偏估计。
蒙特卡罗方法的优点在于:它只依赖经验(experience),而不需要完整的动力学模型 \(p(s' | s,a)\) 或 \(r(s, a, s')\)。
因此,MC 策略评估的思想是:从每个可能的状态 \(s_0\) 重复采样多个回合(episode),并为每个状态维护一个运行平均值。
蒙特卡罗策略评估算法
while True:
-
从一个初始状态 \(s_0\) 开始。
-
按当前策略 \(\pi\) 生成一系列状态转移,直到到达终止状态 \(s_T\):
- 对于所有访问过的状态 \(s_0, s_1, \ldots, s_T\),计算其回报:
- 使用得到的回报更新每个访问过的状态值函数:
动作值函数也可以采用类似方式估计:
MC 方法的两个主要缺点是:
- 任务必须是回合式(episodic)的,即在有限步内结束;更新仅在回合结束时进行。
- 必须保证足够的探索水平,以确保估计能够收敛到最优值。
第二个问题与探索–利用(exploration–exploitation)困境有关:
如果策略总是从一开始就选择相同的动作(纯利用),智能体将永远不会发现更好的替代方案;
如果策略完全随机(纯探索),则评估的策略并非当前策略 \(\pi\),而是随机策略。
因此必须保持一种平衡:学习初期更多探索以积累知识,学习后期更多利用以实现最优性能。
有两类方法应对此问题:
- 同策略(On-policy)方法:使用当前学习的策略 \(\pi\) 生成样本回合,但要求其是\(\epsilon\)-soft(即随机的):以至少 \(\epsilon\) 的概率选择非贪婪动作。
- 异策略(Off-policy)方法:使用一个称为行为策略(behavior policy)的不同策略生成回合,但学习另一个用于利用的策略,可为确定性策略。
同策略蒙特卡罗方法
\(\epsilon\)-soft 策略很容易构造,我们在“赌博机”一节(@sec-bandits)已见过。
最简单的形式是\(\epsilon\)-贪婪(\(\epsilon\)-greedy)动作选择:以概率 \((1-\epsilon)\) 选择贪婪动作(Q 值最高的动作),以概率 \(\epsilon\) 随机选择其他动作:
另一种方法是 Softmax(或 Gibbs 分布) 动作选择,它根据 Q 值的相对大小为每个动作分配选择概率:
其中 \(\tau\) 为温度参数:温度高时动作几乎等概率(随机策略),温度低时只选择 Q 值最高的动作(贪婪策略)。
在同策略 MC 控制中,每个样本回合均由当前策略生成,保证了探索,同时控制方法仍能收敛到最优 \(\epsilon\)-策略。
同策略蒙特卡罗控制算法
while True:
-
使用当前随机策略 \(\pi\) 生成回合
\(\tau = (s_0, a_0, r_1, \ldots, s_T)\)。 -
对每个状态–动作对 \((s_t, a_t)\),更新 Q 值:
- 对于每个状态 \(s_t\),改进策略(如 \(\epsilon\)-贪婪):
异策略蒙特卡罗方法
另一种确保探索的方式是使用与学习策略 \(\pi(s, a)\) 不同的行为策略 \(b(s, a)\) 生成样本回合。
要求行为策略至少偶尔选择学习策略会选的动作(覆盖假设):
常见的两种选择是:
- 使用基于 Q 值的 \(\epsilon\)-soft 行为策略;
- 使用专家经验(如人类演示或传统算法生成的样本)。
问题是:这样做在数学上合理吗?
我们要最大化策略 \(\pi\) 下每个轨迹(回合)的期望回报:
若使用行为策略 \(b\) 生成轨迹,则实际最大化的是:
显然 \(\mathcal{J}'(\pi)\) 的最优策略并非 MDP 的最优策略。
因此我们需要用重要性采样(Importance Sampling, IS)来校正分布差异。
重要性采样
目标是估计策略 \(\pi\) 生成的轨迹期望回报:
根据期望定义:
为引入行为策略 \(b\),我们乘以 \(\frac{\rho_b(\tau)}{\rho_b(\tau)}\):
从而得到:
即:可以从 \(b\) 采样轨迹,但需要通过重要性权重
\(\dfrac{\rho_\pi(\tau)}{\rho_b(\tau)}\) 来校正回报。
若两者相同(同策略),权重为 1,无需校正。
若某轨迹在 \(b\) 下常见但在 \(\pi\) 下罕见,权重很小;反之则增大权重。
轨迹 \(\tau = (s_0, a_0, s_1, a_1, \ldots, s_T)\) 的似然为:
于是重要性权重为:
异策略蒙特卡罗控制
在异策略 MC 控制中,我们使用行为策略 \(b\) 生成回合,但贪婪地更新学习策略 \(\pi\)。
对于状态 \(s_t\),仅需对回报加权,权重为从 \(t\) 到终止的相对概率:
更新公式为:
异策略蒙特卡罗控制算法
while True:
-
使用行为策略 \(b\) 生成回合
\(\tau = (s_0,a_0,r_1,\ldots,s_T)\)。 -
对每个 \((s_t,a_t)\):
- 对每个状态 \(s_t\),更新学习的确定性策略:
问题 1: 若学习策略是贪婪的,非贪婪动作下
\(\pi(s_t,a_t)=0 \Rightarrow \rho=0\),
算法仅从最后的贪婪动作学习,初期收敛慢。
解决方案: 令 \(\pi\) 与 \(b\) 不要差异太大,通常令 \(\pi\) 为贪婪策略,\(b\) 为其 softmax 或 \(\epsilon\)-greedy 版本。
问题 2: 若学习策略是随机的,重要性权重可能快速趋零或爆炸:
若 \(\frac{\pi(s,a)}{b(s,a)}<1\),积趋零;若>1,则趋无穷。
解决方案: 可对权重进行归一化(见 Sutton & Barto)或截断(clip)(如限制在 [0.9,1.1],见 PPO)。
异策略方法的优点
异策略的主要优点是可以从他人的经验中学习,而无需完全依赖自己初期错误的策略去“撞”出最优解。
例如:通过研究大量棋谱学习下棋。
专家只执行部分动作,避免显然错误的选择,从而减少探索空间。
因此异策略方法极大减少了学习所需的状态转移数。
缺点是:若行为策略从未探索过某个好动作,学习策略也永远不会发现它。

浙公网安备 33010602011771号