1.3 蒙特卡罗方法

蒙特卡罗方法

在动态规划中,策略评估是通过显式求解贝尔曼方程完成的。而在蒙特卡罗(Monte Carlo)方法和时间差分(TD)方法中,策略评估依赖于采样。

蒙特卡罗策略评估

当环境是未知的(a priori unknown)时,必须通过探索来建立对状态值函数 \(V\) 或动作值函数 \(Q\) 的估计。
蒙特卡罗采样(MC) 的核心思想非常简单:状态 \(s\) 的期望回报可以通过采样 \(M\) 条从 \(s\) 出发的轨迹 \(\tau_i\) 并计算其回报的平均值来近似:

\[ V^{\pi}(s) = \mathbb{E}_{\rho_\pi} (R_t | s_t = s) \approx \frac{1}{M} \sum_{i=1}^M R(\tau_i) \]

如果采样的轨迹数量足够多,则其平均值是值函数的无偏估计。
蒙特卡罗方法的优点在于:它只依赖经验(experience),而不需要完整的动力学模型 \(p(s' | s,a)\)\(r(s, a, s')\)
因此,MC 策略评估的思想是:从每个可能的状态 \(s_0\) 重复采样多个回合(episode),并为每个状态维护一个运行平均值

蒙特卡罗策略评估算法

while True:

  1. 从一个初始状态 \(s_0\) 开始。

  2. 按当前策略 \(\pi\) 生成一系列状态转移,直到到达终止状态 \(s_T\)

\[ \tau = (s_0, a_0, r_1, s_1, a_1, \ldots, s_T) \]

  1. 对于所有访问过的状态 \(s_0, s_1, \ldots, s_T\),计算其回报:

\[ R_t = \sum_{k=0}^{\infty} \gamma^k r_{t+k+1} \]

  1. 使用得到的回报更新每个访问过的状态值函数:

\[ V(s_t) \leftarrow V(s_t) + \alpha \, (R_t - V(s_t)) \]

动作值函数也可以采用类似方式估计:

\[ Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha (R_t - Q(s_t, a_t)) \]

MC 方法的两个主要缺点是:

  1. 任务必须是回合式(episodic)的,即在有限步内结束;更新仅在回合结束时进行。
  2. 必须保证足够的探索水平,以确保估计能够收敛到最优值。

第二个问题与探索–利用(exploration–exploitation)困境有关:
如果策略总是从一开始就选择相同的动作(纯利用),智能体将永远不会发现更好的替代方案;
如果策略完全随机(纯探索),则评估的策略并非当前策略 \(\pi\),而是随机策略。
因此必须保持一种平衡:学习初期更多探索以积累知识,学习后期更多利用以实现最优性能。

有两类方法应对此问题:

  • 同策略(On-policy)方法:使用当前学习的策略 \(\pi\) 生成样本回合,但要求其是\(\epsilon\)-soft(即随机的):以至少 \(\epsilon\) 的概率选择非贪婪动作。
  • 异策略(Off-policy)方法:使用一个称为行为策略(behavior policy)的不同策略生成回合,但学习另一个用于利用的策略,可为确定性策略。

同策略蒙特卡罗方法

\(\epsilon\)-soft 策略很容易构造,我们在“赌博机”一节(@sec-bandits)已见过。
最简单的形式是\(\epsilon\)-贪婪(\(\epsilon\)-greedy)动作选择:以概率 \((1-\epsilon)\) 选择贪婪动作(Q 值最高的动作),以概率 \(\epsilon\) 随机选择其他动作:

\[ a_t = \begin{cases} a_t^* \quad &\text{以概率 } (1 - \epsilon) \\ \text{其他动作} \quad &\text{以概率 } \epsilon \end{cases} \]

另一种方法是 Softmax(或 Gibbs 分布) 动作选择,它根据 Q 值的相对大小为每个动作分配选择概率:

\[ P(s, a) = \frac{\exp Q(s, a) / \tau}{ \sum_b \exp Q(s, b) / \tau} \]

其中 \(\tau\) 为温度参数:温度高时动作几乎等概率(随机策略),温度低时只选择 Q 值最高的动作(贪婪策略)。

在同策略 MC 控制中,每个样本回合均由当前策略生成,保证了探索,同时控制方法仍能收敛到最优 \(\epsilon\)-策略。

同策略蒙特卡罗控制算法

while True:

  1. 使用当前随机策略 \(\pi\) 生成回合
    \(\tau = (s_0, a_0, r_1, \ldots, s_T)\)

  2. 对每个状态–动作对 \((s_t, a_t)\),更新 Q 值:

\[ Q(s_t, a_t) = Q(s_t, a_t) + \alpha \, (R_t - Q(s_t, a_t)) \]

  1. 对于每个状态 \(s_t\),改进策略(如 \(\epsilon\)-贪婪):

\[ \pi(s_t, a) = \begin{cases} 1 - \epsilon, & a = \text{argmax}\, Q(s, a) \\ \frac{\epsilon}{|\mathcal{A(s_t)}|-1|}, & \text{否则} \end{cases} \]

异策略蒙特卡罗方法

另一种确保探索的方式是使用与学习策略 \(\pi(s, a)\) 不同的行为策略 \(b(s, a)\) 生成样本回合。
要求行为策略至少偶尔选择学习策略会选的动作(覆盖假设):

\[\pi(s,a) > 0 \Rightarrow b(s,a) > 0 \]

常见的两种选择是:

  1. 使用基于 Q 值的 \(\epsilon\)-soft 行为策略;
  2. 使用专家经验(如人类演示或传统算法生成的样本)。

问题是:这样做在数学上合理吗?
我们要最大化策略 \(\pi\) 下每个轨迹(回合)的期望回报:

\[\mathcal{J}(\pi) = \mathbb{E}_{\tau \sim \rho_\pi} [R(\tau)] \]

若使用行为策略 \(b\) 生成轨迹,则实际最大化的是:

\[\mathcal{J}'(\pi) = \mathbb{E}_{\tau \sim \rho_b} [R(\tau)] \]

显然 \(\mathcal{J}'(\pi)\) 的最优策略并非 MDP 的最优策略。

因此我们需要用重要性采样(Importance Sampling, IS)来校正分布差异。

重要性采样

目标是估计策略 \(\pi\) 生成的轨迹期望回报:

\[\mathcal{J}(\pi) = \mathbb{E}_{\tau \sim \rho_\pi} [R(\tau)] \]

根据期望定义:

\[\mathcal{J}(\pi) = \int_\tau \rho_\pi(\tau) R(\tau) \, d\tau \]

为引入行为策略 \(b\),我们乘以 \(\frac{\rho_b(\tau)}{\rho_b(\tau)}\)

\[\mathcal{J}(\pi) = \int_\tau \rho_b(\tau) \frac{\rho_\pi(\tau)}{\rho_b(\tau)} R(\tau) \, d\tau \]

从而得到:

\[\mathcal{J}(\pi) = \mathbb{E}_{\tau \sim \rho_b} \left[\frac{\rho_\pi(\tau)}{\rho_b(\tau)} R(\tau)\right] \]

即:可以从 \(b\) 采样轨迹,但需要通过重要性权重
\(\dfrac{\rho_\pi(\tau)}{\rho_b(\tau)}\) 来校正回报。

若两者相同(同策略),权重为 1,无需校正。
若某轨迹在 \(b\) 下常见但在 \(\pi\) 下罕见,权重很小;反之则增大权重。

轨迹 \(\tau = (s_0, a_0, s_1, a_1, \ldots, s_T)\) 的似然为:

\[ \rho_\pi(\tau) = p(s_0) \prod_{t=0}^{T-1} \pi(s_t, a_t) p(s_{t+1}|s_t,a_t) \]

于是重要性权重为:

\[\rho_{0:T-1} = \prod_{t=0}^{T-1} \frac{\pi(s_t,a_t)}{b(s_t,a_t)} \]

异策略蒙特卡罗控制

异策略 MC 控制中,我们使用行为策略 \(b\) 生成回合,但贪婪地更新学习策略 \(\pi\)
对于状态 \(s_t\),仅需对回报加权,权重为从 \(t\) 到终止的相对概率:

\[\rho_{t:T-1} = \prod_{k=t}^{T-1} \frac{\pi(s_k,a_k)}{b(s_k,a_k)} \]

更新公式为:

\[Q(s_t,a_t) = Q(s_t,a_t) + \alpha \rho_{t:T-1}(R_t - Q(s_t,a_t)) \]

异策略蒙特卡罗控制算法

while True:

  1. 使用行为策略 \(b\) 生成回合
    \(\tau = (s_0,a_0,r_1,\ldots,s_T)\)

  2. 对每个 \((s_t,a_t)\)

\[\rho_{t:T-1} = \prod_{k=t}^{T-1} \frac{\pi(s_k,a_k)}{b(s_k,a_k)} \]

\[Q(s_t,a_t) = Q(s_t,a_t) + \alpha \rho_{t:T-1}(R_t - Q(s_t,a_t)) \]

  1. 对每个状态 \(s_t\),更新学习的确定性策略:

\[\pi(s_t,a) = \begin{cases} 1, & a = \text{argmax} \, Q(s_t,a) \\ 0, & \text{否则} \end{cases} \]

问题 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)。

异策略方法的优点

异策略的主要优点是可以从他人的经验中学习,而无需完全依赖自己初期错误的策略去“撞”出最优解。
例如:通过研究大量棋谱学习下棋。
专家只执行部分动作,避免显然错误的选择,从而减少探索空间。
因此异策略方法极大减少了学习所需的状态转移数。
缺点是:若行为策略从未探索过某个好动作,学习策略也永远不会发现它。

posted @ 2025-10-12 19:07  55open  阅读(20)  评论(0)    收藏  举报