同策略蒙特卡洛方法评估或改进用于生成数据(即情节)的同一策略。例如,同策略控制(如同策略首次访问蒙特卡洛控制)通常使用当前策略的$\epsilon$-贪婪版本来收集经验,然后利用这些经验来改进同一策略。但是,如果我们想学习与生成数据所用策略不同的策略呢?请看以下情况:通过观察学习: 假设一个智能体通过观察一个谨慎的、次优的专家(比如普通司机)来学习如何最优地完成一项任务(比如在比赛中激进驾驶)。生成数据的智能体遵循一种策略,但我们希望学习另一种可能最优的策略的价值。从过往经验中学习: 我们可能有一个由旧的、可能是试验性或多样化的策略生成的大量情节数据集。我们能否重新使用这些数据来评估或改进一个新的目标策略?学习多种策略: 智能体可能希望同时了解多种不同的行为方式,使用由单一行为策略生成的数据。这就是离策略学习的用武之地。在离策略方法中,用于生成数据的策略,称为行为策略(通常用$b$表示),不同于被评估和改进的策略,后者称为目标策略(通常用$\pi$表示)。行为策略$b$必须进行充分的尝试;具体来说,$\pi$在任何状态下可能采取的每个动作,在$b$下都必须有非零的概率被采取。这被称为覆盖性假设。正式地,如果$\pi(a|s) > 0$,那么$b(a|s) > 0$。难题:分布不匹配离策略学习的根本困难在于,数据(访问过的状态、采取的动作、获得的奖励)来自受行为策略$b$支配的交互,但我们希望估计目标策略$\pi$的价值函数($V^\pi$或$Q^\pi$)。在时间$t$之后观察到的回报$G_t$取决于从时间$t$起由$b$采取的动作。如果我们像在同策略方法中那样简单地平均这些回报,我们估计的将是$V^b$或$Q^b$,而不是$V^\pi$或$Q^\pi$。我们如何纠正这种不匹配?我们需要一种方法来加权在$b$下观察到的回报,使它们能够代表在$\pi$下会发生的情况。重要性采样:加权回报解决这个问题的方法是重要性采样,这是一种通用的统计方法,用于使用从一个分布生成的样本来估计另一个分布的属性。在我们的强化学习背景下,我们希望使用行为策略$b$生成的回报来估计目标策略$\pi$下的预期回报。其核心是根据轨迹在目标策略下发生的相对概率与在行为策略下发生的相对概率之比,来加权每个回报$G_t$。这个比率被称为重要性采样比。对于情节中时间$t$之后发生的状态和动作序列$S_t, A_t, S_{t+1}, A_{t+1}, ..., S_T$,重要性采样比$\rho_{t:T-1}$为:$$ \rho_{t:T-1} = \frac{\prod_{k=t}^{T-1} \pi(A_k|S_k) p(S_{k+1}|S_k, A_k)}{\prod_{k=t}^{T-1} b(A_k|S_k) p(S_{k+1}|S_k, A_k)} $$请注意,环境动力学$p(S_{k+1}|S_k, A_k)$会抵消,因为我们使用的是无模型方法(我们不知道$p$)。这大大简化了该比率:$$ \rho_{t:T-1} = \prod_{k=t}^{T-1} \frac{\pi(A_k|S_k)}{b(A_k|S_k)} $$这个比率$\rho_{t:T-1}$衡量了观察到的动作序列$A_t, ..., A_{T-1}$在目标策略$\pi$下比在行为策略$b$下发生的可能性高(或低)多少。离策略蒙特卡洛预测为了使用$b$生成的情节来估计$V^\pi(s)$,我们可以收集每个情节中在时间$t$首次访问状态$s$之后的回报$G_t$。然后,我们用相应的重要性采样比$\rho_{t:T-1}$加权每个回报,并对这些加权回报求平均。这给我们得到了普通重要性采样估计量:$$ V^\pi(s) \approx \frac{\sum_{t \in \mathcal{T}(s)} \rho_{t:T(t)-1} G_t}{|\mathcal{T}(s)|} $$这里,$\mathcal{T}(s)$是所有情节中首次访问状态$s$的时间步$t$的集合,而$T(t)$是包含时间步$t$的情节的终止时间。另外,我们可以使用加权重要性采样,这种方法通常具有较低的方差:$$ V^\pi(s) \approx \frac{\sum_{t \in \mathcal{T}(s)} \rho_{t:T(t)-1} G_t}{\sum_{t \in \mathcal{T}(s)} \rho_{t:T(t)-1}} $$加权重要性采样提供了一个有偏估计,但由于其较低的方差,在实践中通常更受欢迎,尤其是在重要性采样比率可能变得非常大或非常小的情况下。对于动作价值函数$Q^\pi(s, a)$,也可以构建类似的估计量。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#adb5bd", fontcolor="#495057"]; edge [fontname="sans-serif", color="#495057", fontcolor="#495057"]; subgraph cluster_agent { label = "智能体"; bgcolor="#e9ecef"; color="#ced4da"; Agent [label="学习者"]; Policy_Pi [label="目标策略 (π)\n(例如, 最优/贪婪)", shape=ellipse, color="#748ffc", style=filled, fillcolor="#bac8ff"]; Policy_B [label="行为策略 (b)\n(例如, 试验性/ε-软)", shape=ellipse, color="#ffc078", style=filled, fillcolor="#ffd8a8"]; } subgraph cluster_env { label = "环境"; bgcolor="#e9ecef"; color="#ced4da"; Env [label="环境动力学\n(未知)"]; } Agent -> Policy_B [label=" 用于行动 ", style=dashed, color="#f76707"]; Policy_B -> Env [label=" 动作 (At) ", color="#f76707"]; Env -> Agent [label=" 状态 (St+1), 奖励 (Rt+1) ", color="#495057"]; Agent -> Policy_Pi [label=" 对其学习 ", style=dashed, color="#4263eb"]; {rank=same; Policy_Pi; Policy_B} label="离策略学习:智能体使用行为策略'b'进行交互,但学习目标策略'π'。"; fontsize=12; fontcolor="#495057"; }智能体通过遵循行为策略b来生成经验(动作、状态、奖励)。重要性采样使得智能体能够利用这些经验来学习价值函数或对应于目标策略π的最优策略。离策略蒙特卡洛控制将其扩展到控制(寻找最优策略)涉及使用重要性采样来估计$Q^\pi(s, a)$。目标策略$\pi$通常被选择为对当前$Q(s, a)$估计值采取贪婪行动。然而,行为策略$b$必须保持试验性(例如,$\epsilon$-软或随机),以确保对可能确定的目标策略提供足够的覆盖。一种常见设置包含:目标策略 $\pi(s)$: 我们希望学习的策略。它通常是确定的,并且对当前Q值估计采取贪婪行动:$\pi(s) = \arg\max_a Q(s, a)$。行为策略 $b(s)$: 一种试验性策略(例如,$\epsilon$-贪婪或均匀随机),用于生成情节。然后,我们利用由$b$生成的情节中的回报$G_t$,并用重要性采样比$\rho_{t:T-1} = \prod_{k=t}^{T-1} \frac{\pi(A_k|S_k)}{b(A_k|S_k)}$加权,来更新$Q^\pi(s, a)$的估计值。由于$\pi$通常是贪婪/确定的,如果$A_k$是贪婪动作,$\pi(A_k|S_k)$将是1,否则为0。如果目标策略$\pi$是确定的,分子中的乘积仅当所有动作$A_k$(从$k=t$到$T-1$)都是根据$\pi$的贪婪选择时才变为1。如果$b$下采取的任何动作根据$\pi$是非贪婪的,重要性采样比将变为0,并且该回报对$Q^\pi$的估计没有贡献。重要性采样的挑战尽管功能强大,但重要性采样也带来了自身的挑战。主要问题是方差。如果目标策略和行为策略差异很大,重要性采样比$\rho_{t:T-1}$可能变得非常大或非常小。少数比率可能主导平均值,导致价值估计的高方差和收敛缓慢。这对于长情节尤其成问题,因为该比率是许多步骤的乘积。加权重要性采样在一定程度上帮助缓解了这一点,但方差在离策略蒙特卡洛方法中仍是一个值得重视的问题。在接下来的章节中,我们将看到时序差分学习方法如何为离策略学习提供替代方案,这些方案通常比蒙特卡洛方法具有更低的方差。然而,理解离策略学习和使用蒙特卡洛方法的重要性采样原理,能打下扎实的基础。