基于离线策略的强化学习(PPO)

本文介绍了离线策略强化学习的概念,探讨了重要性采样在策略梯度中的应用,以及由此引出的离线策略梯度计算方法。重点讲解了PPO算法,如何通过KL散度约束来保持采样策略和目标策略的分布接近,并介绍了PPO2算法通过梯度裁剪简化这一过程。

离线策略强化学习

对于基于策略的强化学习,通过建立带θ\thetaθ的策略模型,通过策略梯度进行优化,梯度如下 ∇θU=Eτ−pθ(τ)[∇θlogPθ(τ)R(τ)]\nabla_\theta U=E_{\tau -p_\theta(\tau)}[\nabla_\theta log P_\theta(\tau)R(\tau)]θU=Eτpθ(τ)[θlogPθ(τ)R(τ)]
该方法是在线策略(on-policy),即学习更新的策略和与环境交互采样的策略是同一个,这带来一个问题,当进行策略参数θ\thetaθ更新后,原来旧θ\thetaθ的策略采样的数据就无法在用了,需要用新的策略采样才能进行梯度计算。这样样本利用率低,训练时间长。
因此需要将目标策略和采样策略进行分离,利用重要性采样进行梯度计算。

重要性采样

假设f(x)f(x)f(x)服从p(x)p(x)p(x)分布,求x的期望E(x)=∫p(x)xdxE(x)=\int p(x)xdxE(x)=p(x)xdx
我们想用采样的方式进行计算,但是服从p(x)p(x)p(x)分布的样本不好得到,相反,服从q(x)q(x)q(x)分布的样本好得到。因此我们想用q(x)q(x)q(x)分布的样本来代替p(x)p(x)p(x)分布的样本,显然这是有误差的,因此需要对期望进行修正。
在这里插入图片描述
其中p(x)q(x){p(x) \over q(x)}q(x)p(x)称为重要因子,相当于把q(x)q(x)q(x)分布的样本当场是真实p(x)p(x)p(x)分布的样本来计算时,需要乘上这个重要因子修正,保证这么做是可以的。
存在的问题
要求这两个分布要比较接近,差别不能太大。意味着目标学习策略的参数θ\thetaθ和采样策略的参数θ′\theta ^{\prime}θ要比较接近。

离线策略梯度

设学习目标的策略为πθπ_\thetaπθ,采样策略为πθ′π_{\theta^{\prime}}πθ
∇θU=Eτ−pθ(τ)[∇θlogPθ(τ)R(τ)]\nabla_\theta U=E_{\tau -p_\theta(\tau)}[\nabla_\theta log P_\theta(\tau)R(\tau)]θU=Eτpθ(τ)[θlogPθ(τ)R(τ)]
就变成了
∇θU=Eτ−pθ′(τ)[Pθ(τ)Pθ′(τ)∇θlogPθ(τ)R(τ)]\nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(\tau)\over P_{\theta^\prime}(\tau)} \nabla_\theta log P_\theta(\tau)R(\tau)]θU=Eτpθ(τ)[Pθ(τ)Pθ(τ)θlogPθ(τ)R(τ)]
R(τ)R(\tau)R(τ)用优势函数表示Aθ(st,at)A_\theta(s_t,a_t)Aθ(st,at),该优势函数其实是采样策略π′π^{\prime}π与环境采样得到的,因此实际为Aθ′(st,at)A_{\theta^{\prime}}(s_t,a_t)Aθ(st,at),Pθ(τ)P_\theta(\tau)Pθ(τ)用之前得到的状态-动作对表示,Pθ(st,at)P_\theta(s_t,a_t)Pθ(st,at)

∇θU=Eτ−pθ′(τ)[Pθ(st,at)Pθ′(st,at)∇θlogPθ(st,at)Aθ′(st,at)]\nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(s_t,a_t)\over P_{\theta^\prime}(s_t,a_t)} \nabla_\theta log P_\theta(s_t,a_t)A_{\theta^{\prime}}(s_t,a_t)]θU=Eτpθ(τ)[Pθ(st,at)Pθ(st,at)θlogPθ(st,at)Aθ(st,at)]
Pθ(st,at)=Pθ(at∣st)Pθ(st)P_\theta(s_t,a_t) =P_\theta(a_t|s_t)P_\theta(s_t)Pθ(st,at)=Pθ(atst)Pθ(st)
上式就变成
∇θU=Eτ−pθ′(τ)[Pθ(at∣st)Pθ(st)Pθ′(at∣st)Pθ′(st)∇θlogPθ(at∣st)Aθ′(st,at)]\nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(a_t|s_t)P_\theta(s_t)\over P_{\theta^\prime}(a_t|s_t)P_{\theta^\prime}(s_t)} \nabla_\theta log P_\theta(a_t|s_t)A_{\theta^{\prime}}(s_t,a_t)]θU=Eτpθ(τ)[Pθ(atst)Pθ(st)Pθ(atst)Pθ(st)θlogPθ(atst)Aθ(st,at)]
由于要求,两个的分布差距不能太大,为了计算方便,Pθ(st)Pθ′(st){P_\theta(s_t) \over P_{\theta^\prime}(s_t) }Pθ(st)Pθ(st)可以看出是1。
∇θU=Eτ−pθ′(τ)[Pθ(at∣st)Pθ′(at∣st)∇θlogPθ(at∣st)Aθ′(st,at)]\nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(a_t|s_t)\over P_{\theta^\prime}(a_t|s_t)} \nabla_\theta log P_\theta(a_t|s_t)A_{\theta^{\prime}}(s_t,a_t)]θU=Eτpθ(τ)[Pθ(atst)Pθ(atst)θlogPθ(atst)Aθ(st,at)]
根据∇θZ=Z∇θlogZ\nabla_\theta Z=Z\nabla_\theta logZθZ=ZθlogZ
可得 ∇θU=Eτ−pθ′(τ)[1Pθ′(at∣st)∇θPθ(at∣st)Aθ′(st,at)]\nabla_\theta U=E_{\tau -p_{\theta^\prime}(\tau)}[{1\over P_{\theta^\prime}(a_t|s_t)} \nabla_\theta P_\theta(a_t|s_t)A_{\theta^{\prime}}(s_t,a_t)]θU=Eτpθ(τ)[Pθ(atst)1θPθ(atst)Aθ(st,at)]
则逆推可以得到该梯度的目标函数
Uθ=Eτ−pθ′(τ)[Pθ(at∣st)Pθ′(at∣st)Aθ′(st,at)] U_\theta=E_{\tau -p_{\theta^\prime}(\tau)}[{P_\theta(a_t|s_t)\over P_{\theta^\prime}(a_t|s_t)} A_{\theta^{\prime}}(s_t,a_t)]Uθ=Eτpθ(τ)[Pθ(atst)Pθ(atst)Aθ(st,at)]
PPO
采样策略和目标学习策略的分布不能差异太大,为了对目标函数进行这个条件约束,可以在目标函数中,加入KL散度,进行约束。
在这里插入图片描述
这里的KL散度并不是计算参数θ\thetaθθ′\theta^{\prime}θ数值之间的差距大小,而是由这两个参数所决定的策略分布的差异,即通过一些同样状态,输入策略函数,比较两者的输出的动作差异大不大。因为可能两个分布的参数差距很小,但是实际得到的分布结果会差很多,而这里要求的是分布的差距不能太大。
在这里插入图片描述
基本流程,通过πθ′π_{\theta^{\prime}}πθ采取一些样本,利用目标函数通过这些样本进行反复更新目标策略πθπ_{\theta}πθ的参数,之后计算下两个策略之间的差异,超过事先设定的最大值,增大对散度项的惩罚。更新一下采样策略的参数,继续采样。
PPO2
PPO需要计算对于KL散度的计算比较麻烦,因此有了简化算法PPO2,两个分布不能差距太大的约束条件,利用对梯度剪切实现。
在这里插入图片描述
在这里插入图片描述
当A大于0时,我们希望增加这个动作的概率,梯度越大越好,但是梯度大这意味着两个策略的比值πθπθ′π_\theta \over π_{\theta^{\prime}}πθπθ要大,但是要求又不能太大,因此设定最大为1+ϵ\epsilonϵ,当计算出来的梯度大于这个值时,就取这个值。A小于0同理。

参考

https://zhuanlan.zhihu.com/p/78680750

<think>首先,用户的问题是:“我想了解离线PPO和在线PPO的区别 请问离线近端策略优化(PPO)和在线近端策略优化(PPO)的对比”。用户明确询问离线PPO和在线PPO的区别。 从系统指令中,我知道我需要: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 - 回答结构清晰,帮助用户逐步解决问题。 - 参考站内引用,但用户说“上述引用仅供参考,并不是用户真正的需求”,所以我应该基于用户的问题来回答。 用户提供的引用: - [^1]: 介绍了PPO算法的优点:稳定性高、样本效率高、易于实现。 - [^2]: 提到了PPO强化学习中的通用性。 - [^3]: 关于PPO的理论基础和实践。 - [^4]: PPO的核心原理,包括优化受限的策略目标函数。 用户的问题是关于离线PPO和在线PPO的区别。标准PPO通常是在线算法,因为它使用策略梯度方法更新策略离线PPO可能指的是使用离线数据(即经验回放)的变体。 关键点: - **在线PPO**:在强化学习中,在线学习通常指代理在环境中实时交互,收集数据并更新策略PPO是一种在线算法,因为它通过与环境交互生成经验并使用这些经验更新策略。 - **离线PPO**:离线学习使用预收集的数据集,而不与环境交互。PPO可以适应离线设置,通过使用经验回放缓冲区或直接使用离线数据集。 从引用中: - 提到“PPO算法可以重用离线策略数据”,这暗示PPO可以处理离线数据。 - 讨论PPO的核心是优化一个受限的策略目标函数,确保新策略不偏离旧策略太远,这适用于在线和离线设置。 我需要解释两者的区别: 1. **数据来源**: - 在线PPO:代理在训练过程中与环境实时交互,收集新经验。 - 离线PPO:使用固定的、预收集的数据集进行训练,不进行新的交互。 2. **训练过程**: - 在线PPO:在每个episode或批次后更新策略,使用新数据。 - 离线PPO:在离线数据集上训练策略,可能使用经验回放或批量更新。 3. **优点和缺点**: - 在线PPO:可以利用新数据适应环境变化,但可能不稳定或样本效率低。 - 离线PPO:样本效率更高(因为重用数据),但不适应新变化,可能导致分布偏移问题。 4. **数学表示**: - PPO的目标函数是$L^{CLIP}(\theta) = \mathbb{E}[\min(r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t)]$,其中$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$。 - 在离线设置中,数据是固定的,所以期望是基于离线数据集。 结构回答: - 逐步解释: - 1. 定义在线PPO离线PPO。 - 2. 对比数据使用。 - 3. 讨论优势和劣势。 - 4. 引用相关部分。 - 使用中文。 - 添加数学表达式:行内用$...$,独立公式用$$...$$。 例如: - 行内:PPO的目标函数是$L^{CLIP}(\theta)$。 - 独立:$$L^{CLIP}(\theta) = \mathbb{E}\left[\min\left(r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t\right)\right]$$ 生成相关问题: - 在末尾添加§§相关问题§§,列出2-3个相关问题。 引用标识: - 在回答中引用段落时添加[^n],但用户说引用仅供参考,所以我应该只在必要时引用。用户提到“请尽可能多的参考用户上一次的问题和你的回答”,但这是新对话,所以基于当前问题。 用户上一次问题是这个,所以直接回答。 最终结构: - 介绍PPO的基本概念。 - 解释在线PPO。 - 解释离线PPO。 - 对比区别。 - 总结。 - 相关问题。 </think> ### 离线PPO与在线PPO的区别详解 近端策略优化(PPO)是一种广泛使用的强化学习算法,以其稳定性和样本效率著称。PPO的核心原理是通过优化一个受限的策略目标函数,确保新策略 $\pi_\theta$ 不会偏离旧策略 $\pi_{\theta_{\text{old}}}$ 过远,从而避免训练过程中的剧烈波动[^4]。用户询问的“离线PPO”和“在线PPO”主要指PPO算法在数据使用方式上的区别。下面我将逐步解释两者的定义、工作原理和关键差异。 #### 1. **基本定义** - **在线PPO (Online PPO)**: 在线PPO是标准的PPO实现,代理(agent)在训练过程中与环境实时交互,收集新的经验数据(例如状态、动作、奖励),并立即使用这些数据更新策略PPO通过引入“信任区域约束”来稳定更新过程,其目标函数为: $$ L^{CLIP}(\theta) = \mathbb{E}_{(s_t, a_t) \sim \pi_{\theta_{\text{old}}}} \left[ \min\left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right] $$ 其中,$r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)}$ 是重要性采样比率,$\hat{A}_t$ 是优势函数估计,$\epsilon$ 是裁剪参数(通常为0.1–0.2)。在线PPO的每一次更新都基于最新的交互数据,确保策略能快速适应环境变化。 - **离线PPO (Offline PPO)**: 离线PPO是一种变体,代理在训练时不与环境实时交互,而是使用预收集的固定数据集(称为离线数据或经验回放缓冲区)进行更新。这类似于“批处理”学习,数据可能来自历史经验或其他代理的策略PPO的优化框架保持不变,但数据来源是静态的: $$ L^{CLIP}(\theta) = \mathbb{E}_{(s_t, a_t) \sim \mathcal{D}} \left[ \min\left( r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) \hat{A}_t \right) \right] $$ 其中,$\mathcal{D}$ 是离线数据集[^1]。离线PPO重用现有数据,减少了环境交互的需求,但要求数据分布与当前策略兼容。 #### 2. **数据使用方式的对比** | 特征 | 在线PPO | 离线PPO | |------------------|------------------------------------------|------------------------------------------| | **数据来源** | 实时与环境交互生成新数据 | 使用预收集的固定数据集(不进行新交互) | | **训练流程** | 数据收集与策略更新交替进行:每一步交互后立即优化策略 | 数据集一次性加载,策略在固定数据上迭代更新 | | **样本效率** | 较低:需要大量新样本,但PPO通过裁剪机制提高效率 | 较高:重用离线数据,减少交互次数,样本利用率高 | | **环境依赖性** | 高:依赖当前环境状态,能动态适应变化 | 低:数据集固定,无法响应环境动态变化 | #### 3. **优势与劣势分析** - **在线PPO的优势**: - **实时适应性**:策略能快速响应环境变化(例如游戏或机器人控制),适合非平稳环境。 - **探索能力强**:通过新交互探索未知状态,避免局部最优。 - **稳定性好**:PPO的裁剪机制防止策略更新幅度过大,确保单调改进。 - **缺点**:样本效率较低,需要大量环境交互;训练过程可能因数据噪声而不稳定。 - **离线PPO的优势**: - **高样本效率**:重用历史数据,显著降低计算成本和交互时间,PPO的“数据复用”特性使其在离线设置中表现良好。 - **安全性高**:适用于高风险环境(如自动驾驶),避免实时交互的风险。 - **实现简单**:数据预处理后,训练过程可批量进行,易于并行化。 - **缺点**:容易受“分布偏移”问题影响——如果离线数据集与当前策略不匹配(即数据分布 $p_{\mathcal{D}}(s_t, a_t)$ 与策略分布 $p_{\pi}(s_t, a_t)$ 差异大),会导致策略更新发散或性能下降。PPO的信任区域约束能缓解此问题,但无法完全消除。 #### 4. **适用场景对比** - **在线PPO**:适合环境动态变化频繁的任务,如实时游戏(Dota 2)、机器人导航或在线推荐系统[^2]。 - **离线PPO**:适合数据收集成本高的场景,如医疗决策、历史数据分析或预训练模型,PPO的样本效率使其在资源受限时更具优势。 #### 总结 在线PPO离线PPO的核心区别在于数据获取方式:实时交互 vs. 固定数据集。在线PPO强调动态适应,但样本效率较低;离线PPO提升效率,但需处理分布偏移风险。PPO的统一优化框架(如裁剪目标函数)使两者都能实现稳定训练,但离线PPO更依赖数据质量。在实际应用中,常结合两者(如使用经验回放),以平衡效率与适应性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值