强化学习——蒙特卡洛方法(2)同轨策略和离轨策略

一、前言

本节仍然是蒙特卡洛方法的知识,本章的要介绍的 同策略(On-policy)异策略(Off-policy) 是用来解决蒙特卡洛方法中存在的一些问题的。

蒙特卡洛方法存在什么问题?

  周知,蒙特卡洛方法更新Q值是依赖采样的,假如有一个状态-动作对 ( s t , a t ) (s_t,a_t) (st,at)从未在任何采样轨迹中出现过时,那么 Q ( s t , a t ) Q(s_t,a_t) Q(st,at)永远得不到更新。所以我们在使用蒙特卡洛方法时,必须假设任意一个状态动作对 ( s t , a t ) (s_t,a_t) (st,at)都有机会被采样到,这要求我们要强制从每一个 ( s t , a t ) (s_t,a_t) (st,at)开始至少采样一次轨迹,这就叫试探性出发假设(Assumption of Exploring Starts)
  但是我们往往无法保证这种情况,特别是当直接从真实环境中进行学习时,这个假设就太强人所难了。所以我们要避免试探性出发假设。
  所谓 “避免探索性出发假设(Avoiding the Assumption of Exploring Starts)” 是指设计算法时,不需要依赖每个状态-动作对都必须被强制初始化(即“探索性出发”)也能保证策略评估或优化的有效性。
  要注意,即使不强制初始化所有状态-动作对 ( s t , a t ) (s_t,a_t) (st,at),仍然需要通过采样轨迹尽可能覆盖所有可能的状态和动作组合,但实现方式从“显式强制”变为“隐式探索”。

  为了摆脱这一强假设,主流的方法就是同策略和异策略。所谓同策略就是,行为策略(用作探索收集样本)和目标策略(作为最终结果)是同一套策略;异策略是行为策略和目标策略是不是同一套策略。

二、方法介绍

1. 同策略(On-policy)方法

核心思想
  使用随机性策略(如 ϵ \epsilon ϵ-greedy,也叫 ϵ \epsilon ϵ-贪心) 代替确定性策略,确保在训练过程中 所有动作都有非零概率被选择,从而自然覆盖状态-动作空间。
  例如: ϵ \epsilon ϵ-贪心策略以概率 ϵ \epsilon ϵ 随机探索,以概率 (1- ϵ \epsilon ϵ) 选择当前最优动作。
优势
  无需强制初始化,通过策略本身的随机性保证探索。
总结
  这个方法的实现方式很简单,只不过是把贪心换成了 ϵ \epsilon ϵ-贪心,这样就保证了尽可能访问更多的点。虽然 ϵ-贪心保证了探索,但可能导致策略始终保留次优动作,因为它并不学习最优策略的动作值,而是学习一个接近最优而且仍能进行试探的策略的动作值。

2. 异策略(Off-policy)方法

核心思想
  既然一个策略不好,那干脆采用两个策略。使用行为策略(behavior policy)(如随机策略)生成轨迹,而优化目标策略(target policy)(如贪婪策略)。通过重要性采样(Importance Sampling)纠正策略差异(一会儿我们会讲这些看不懂的名词)。
  例如:行为策略可以是完全随机的,而目标策略逐步收敛至最优。
优势
   完全解耦探索与优化,无需任何初始假设。
   可复用历史数据(如经验回放)。

2.1 策略差异导致的偏差

行为策略( b b b:用于与环境交互、生成轨迹的策略(通常带有探索性,如随机策略)。
目标策略( π \pi π:需要评估或优化的策略(通常为确定性策略,如贪婪策略)。
存在的问题:直接使用 b b b 的轨迹计算 π \pi π 的值函数时,会因两者选择动作的概率不同( b ( a ∣ s ) ≠ π ( a ∣ s ) b(a|s) \neq \pi(a|s) b(as)=π(as))引入偏差,也就是说,由于是使用的 b b b采样的轨迹,直接用这个轨迹计算出的值函数作为 π \pi π 的值函数是不合适的。

2.2 重要性采样的数学原理

  不要尝试理解这个鬼名字,这是“人机专家”机翻的名字。英文名为Importance Sampling,结合实际场景这个应该翻译为“相对概率比矫正采样”,后面还有一个机翻“重要性权重(Importance Weight)”应该翻译为“相对概率比”或“相对概率比权重”,好在“相对概率比”这个名字有些书中还能见到。

2.2.1 基本思想

  通过重要性权重 利用已知分布的数据来估计目标分布下的期望。即将 b b b 分布下的累计奖励期望“纠正”到 π \pi π 分布下的累计奖励期望。

2.2.2 公式推导

接下来我们会分别从状态价值动作价值的角度去推导 如何使用的策略 b b b 采样的轨迹计算策略 π \pi π 的值函数。
其实两者推一个就够了,因为状态价值函数和动作价值函数是可以相互推导的。但是为了照顾新手我们两者都推一下。
(1)状态价值函数推导
众所周知
V π ( s ) ≐ E π { G S ∣ S = s } = E π { G s } \begin{equation*} \begin{split} V_{\pi}(s)&\doteq E_{\pi} \left\{G_{S} | S=s \right\}\\ &=E_{\pi} \left\{G_{s} \right\} \end{split} \end{equation*} Vπ(s)Eπ{GSS=s}=Eπ{Gs}
因此有
V b ( s t ) ≐ E b { G S ∣ S = s t } = E b { G s t } = ∑ 所有轨迹 G s t ∗ p b ( 从 s t 状态开始沿着当前轨迹走到终点的先验概率 ) V π ( s t ) ≐ E π { G S ∣ S = s t } = E π { G s t } = ∑ 所有轨迹 G S t ∗ p π ( 从 s t 状态开始沿着当前轨迹走到终点的先验概率 ) \begin{equation*} \begin{split} V_{b}(s_t) &\doteq E_b \left\{G_{S} | S=s_t \right\}\\ &=E_{b} \left\{G_{s_t} \right\}\\ &=\sum_{所有轨迹}G_{s_t}*p_{b}(从s_t状态开始沿着当前轨迹走到终点的先验概率)\\ V_{\pi}(s_t) &\doteq E_{\pi} \left\{G_{S} | S=s_t \right\}\\ &=E_{\pi} \left\{G_{s_t} \right\}\\ &=\sum_{所有轨迹}G_{S_t}*p_{\pi}(从s_t状态开始沿着当前轨迹走到终点的先验概率) \end{split} \end{equation*} Vb(st)Vπ(st)Eb{GSS=st}=Eb{Gst}=所有轨迹Gstpb(st状态开始沿着当前轨迹走到终点的先验概率)Eπ{GSS=st}=Eπ{Gst}=所有轨迹GStpπ(st状态开始沿着当前轨迹走到终点的先验概率)
其中, p b ( 从 s t 状态开始沿着当前轨迹走到终点的先验概率 ) p_{b}(从s_t状态开始沿着当前轨迹走到终点的先验概率) pb(st状态开始沿着当前轨迹走到终点的先验概率) 表示 b b b 策略下从 s t s_t st状态开始沿着当前轨迹走到终点的先验概率。
这样表示太麻烦了,我们不妨将 “从 s t s_t st状态开始沿着当前轨迹走到终点的先验概率” 定义为事件 K t K_t Kt,则
V b ( s t ) ≐ ∑ 所有轨迹 G s t ∗ p b ( K t ) V π ( s t ) ≐ ∑ 所有轨迹 G s t ∗ p π ( K t ) \begin{equation*} \begin{split} V_{b}(s_t) &\doteq \sum_{所有轨迹}G_{s_t}*p_{b}(K_t)\\ V_{\pi}(s_t) &\doteq \sum_{所有轨迹}G_{s_t}*p_{\pi}(K_t) \end{split} \end{equation*} Vb(st)Vπ(st)所有轨迹Gstpb(Kt)所有轨迹Gstpπ(Kt)
这样表示就清爽了很多。
使用样本均值估计期望(注意上面的 G s G_{s} Gs是随机变量,下面的 G s t G_{s_t} Gst是样本,是由策略 b b b 采集的样本。):

V ^ b ( s t ) = 采样轨迹中 G s t 的均值 = G s t ‾ \hat{V}_{b}(s_t)=采样轨迹中G_{s_t}的均值=\overline{G_{s_t}} V^b(st)=采样轨迹中Gst的均值=Gst
不难发现:
V π ( s t ) = ∑ 所有轨迹 G s t ∗ p π ( K t ) = ∑ 所有轨迹 G s t ∗ p b ( K t ) ∗ ρ s t V ^ π ( s t ) = 采样轨迹中 G s t ∗ ρ s t 的均值 = G s t ∗ ρ s t ‾ \begin{equation*} \begin{split} V_{\pi}(s_t)&=\sum_{所有轨迹}G_{s_t} * p_{\pi}(K_t)\\ &=\sum_{所有轨迹}G_{s_t} * p_{b}(K_t) * \rho_{s_t}\\ \hat{V}_{\pi}(s_t)&=采样轨迹中G_{s_t} * \rho_{s_t}的均值\\ &=\overline{G_{s_t} * \rho_{s_t}} \end{split} \end{equation*} Vπ(st)V^π(st)=所有轨迹Gstpπ(Kt)=所有轨迹Gstpb(Kt)ρst=采样轨迹中Gstρst的均值=Gstρst
其中:
ρ s t ≐ p π ( K t ) p b ( K t ) = ∏ k = t T − 1 π ( a k ∣ s k ) p ( s k + 1 ∣ s k , a k ) ∏ k = t T − 1 b ( a k ∣ s k ) p ( s k + 1 ∣ s k , a k ) = ∏ k = t T − 1 π ( a k ∣ s k ) b ( a k ∣ s k ) \begin{equation*} \begin{split} \quad \rho_{s_{t}} &\doteq \frac{p_{\pi}(K_t)}{p_{b}(K_t)} \\ &=\frac{\prod_{k=t}^{T-1} \pi\left(a_{k} \mid s_{k}\right) p\left(s_{k+1} \mid s_{k}, a_{k}\right)}{\prod_{k=t}^{T-1} b\left(a_{k} \mid s_{k}\right) p\left(s_{k+1} \mid s_{k}, a_{k}\right)}\\ &=\prod_{k=t}^{T-1} \frac{\pi\left(a_{k} \mid s_{k}\right)}{b\left(a_{k} \mid s_{k}\right)}\\ \end{split} \end{equation*} ρstpb(Kt)pπ(Kt)=k=tT1b(aksk)p(sk+1sk,ak)k=tT1π(aksk)p(sk+1sk,ak)=k=tT1b(aksk)π(aksk)
其中:
ρ t \rho_t ρt表示 π \pi π b b b 生成该轨迹的重要性权重(相对概率比);
• T表示终止时间。

值得注意的是,这个 V ^ b ( s t ) \hat{V}_{b}(s_t) V^b(st)和此处的 V ^ π ( s t ) \hat{V}_{\pi}(s_t) V^π(st)是一个无偏估计。

(2)动作价值函数推导
已知动作价值函数的期望表示为:
Q π ( s , a ) ≐ E π { G S , A ∣ S = s , A = a } = E π { G s , a } \begin{equation*} \begin{split} Q_{\pi}(s,a) &\doteq E_{\pi} \left\{ G_{S,A} \mid S=s, A=a \right\} \\ &=E_{\pi} \left\{ G_{s,a} \right\} \end{split} \end{equation*} Qπ(s,a)Eπ{GS,AS=s,A=a}=Eπ{Gs,a}
因此有:
Q b ( s t , a t ) ≐ E b { G S , A ∣ S = s t , A = a t } = ∑ 所有轨迹 G s t , a t ⋅ p b ( 从 ( s t , a t ) 开始沿该轨迹到终点的先验概率 ) Q π ( s t , a t ) ≐ E π { G s t , a t ∣ S t = s t , A t = a t } = ∑ 所有轨迹 G s t , a t ⋅ p π ( 从 ( s t , a t ) 开始沿该轨迹到终点的先验概率 ) \begin{equation*} \begin{split} Q_b(s_t,a_t) &\doteq E_b \left\{ G_{S,A} \mid S=s_t, A=a_t \right\} \\ &= \sum_{\text{所有轨迹}} G_{s_t,a_t} \cdot p_b(\text{从}(s_t,a_t)\text{开始沿该轨迹到终点的先验概率}) \\ Q_\pi(s_t,a_t) &\doteq E_\pi \left\{ G_{s_t,a_t} \mid S_t=s_t, A_t=a_t \right\} \\ &= \sum_{\text{所有轨迹}} G_{s_t,a_t} \cdot p_\pi(\text{从}(s_t,a_t)\text{开始沿该轨迹到终点的先验概率}) \end{split} \end{equation*} Qb(st,at)Qπ(st,at)Eb{GS,AS=st,A=at}=所有轨迹Gst,atpb((st,at)开始沿该轨迹到终点的先验概率)Eπ{Gst,atSt=st,At=at}=所有轨迹Gst,atpπ((st,at)开始沿该轨迹到终点的先验概率)
“从 ( s t , a t ) (s_t,a_t) (st,at) 开始沿该轨迹到终点的先验概率” 定义为事件 B t B_t Bt,则:
Q b ( s t , a t ) = ∑ 所有轨迹 G s t , a t ⋅ p b ( B t ) Q π ( s t , a t ) = ∑ 所有轨迹 G s t , a t ⋅ p π ( B t ) \begin{equation*} \begin{split} Q_b(s_t,a_t) &= \sum_{\text{所有轨迹}} G_{s_t,a_t} \cdot p_b(B_t) \\ Q_\pi(s_t,a_t) &= \sum_{\text{所有轨迹}} G_{s_t,a_t} \cdot p_\pi(B_t) \end{split} \end{equation*} Qb(st,at)Qπ(st,at)=所有轨迹Gst,atpb(Bt)=所有轨迹Gst,atpπ(Bt)
用样本均值估计期望(注意 G s t , a t G_{s_t,a_t} Gst,at 是样本,由策略 b b b 采集的样本):
Q ^ b ( s t , a t ) = 采样轨迹中  G s t , a t  的均值 = G s t , a t ‾ \hat{Q}_b(s_t,a_t) = \text{采样轨迹中 } G_{s_t,a_t} \text{ 的均值} = \overline{G_{s_t,a_t}} Q^b(st,at)=采样轨迹中 Gst,at 的均值=Gst,at

不难发现:
Q π ( s t , a t ) = ∑ 所有轨迹 G s t , a t ⋅ p π ( B t ) = ∑ 所有轨迹 G s t , a t ⋅ p b ( B t ) ⋅ ρ s t , a t Q ^ π ( s t , a t ) = 采样轨迹中  G s t , a t ⋅ ρ s t , a t  的均值 = G s t , a t ⋅ ρ s t , a t ‾ \begin{equation*} \begin{split} Q_\pi(s_t,a_t) &= \sum_{\text{所有轨迹}} G_{s_t,a_t} \cdot p_\pi(B_t) \\ &= \sum_{\text{所有轨迹}} G_{s_t,a_t} \cdot p_b(B_t) \cdot \rho_{s_t,a_t} \\ \hat{Q}_\pi(s_t,a_t) &= \text{采样轨迹中 } G_{s_t,a_t} \cdot \rho_{s_t,a_t} \text{ 的均值} \\ &= \overline{G_{s_t,a_t} \cdot \rho_{s_t,a_t}} \end{split} \end{equation*} Qπ(st,at)Q^π(st,at)=所有轨迹Gst,atpπ(Bt)=所有轨迹Gst,atpb(Bt)ρst,at=采样轨迹中 Gst,atρst,at 的均值=Gst,atρst,at
其中:
ρ s t , a t ≐ p π ( B t ) p b ( B t ) = ∏ k = t + 1 T − 1 π ( a k ∣ s k ) ⋅ p ( s k + 1 ∣ s k , a k ) ∏ k = t + 1 T − 1 b ( a k ∣ s k ) ⋅ p ( s k + 1 ∣ s k , a k ) = ∏ k = t + 1 T − 1 π ( a k ∣ s k ) b ( a k ∣ s k ) \begin{equation*} \begin{split} \rho_{s_t,a_t} &\doteq \frac{p_\pi(B_t)}{p_b(B_t)} \\ &= \frac{\prod_{k=t+1}^{T-1} \pi(a_k \mid s_k) \cdot p(s_{k+1} \mid s_k, a_k)}{\prod_{k=t+1}^{T-1} b(a_k \mid s_k) \cdot p(s_{k+1} \mid s_k, a_k)} \\ &= \prod_{k=t+1}^{T-1} \frac{\pi(a_k \mid s_k)}{b(a_k \mid s_k)} \end{split} \end{equation*} ρst,atpb(Bt)pπ(Bt)=k=t+1T1b(aksk)p(sk+1sk,ak)k=t+1T1π(aksk)p(sk+1sk,ak)=k=t+1T1b(aksk)π(aksk)
其中:
ρ s t , a t \rho_{s_t,a_t} ρst,at 表示从 ( s t , a t ) (s_t,a_t) (st,at) 开始的轨迹在 π \pi π b b b 下的相对概率;
• T 为终止时刻。

三、小结

本节我们讲了两种蒙特卡洛方法的基本原理,同策略方法没什么好聊的,关于异策略方法还有很多有趣的小细节,如增量式算法、加权重要度采样,我们下次再聊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值