6.1 策略方法#
策略方法是强化学习中的一类重要方法。其核心思想是,直接优化参数化策略函数 πθ(a∣s),以最大化期望的累计折扣奖励
J(θ)=Eτ∼πθ[t=0∑Tγtrt]与值函数方法不同,策略方法无需显式地估计动作价值函数 Q(s,a) 或状态价值函数 V(s),而是基于采样得到的轨迹 τ=(s0,a0,s1,a1,…,sT),利用策略梯度定理 (Policy Gradient Theorem) 计算梯度,并通过梯度上升法更新策略参数 θ。该方法适用于连续动作空间,且能够自然地处理随机策略。
经典的策略方法包括:
- REINFORCE (Monte Carlo Policy Gradient):基于完整轨迹的蒙特卡洛梯度估计;
- Actor-Critic:结合策略网络 (Actor) 与值函数网络 (Critic),以降低梯度估计方差;
- Trust Region Policy Optimization (TRPO):引入信任区域约束,确保策略更新步长可控,保证训练稳定性;
- Proximal Policy Optimization (PPO):通过近似 TRPO 的裁剪机制,在保持性能的同时实现更高的训练效率与鲁棒性。
6.2 策略梯度方法#
6.2.1 直接求策略梯度面临的困难#
在策略方法中,我们的目标是找到最优的策略参数 θ∗,使得期望回报能够最大化
θmaxJ(θ)=Eτ∼πθ[t=0∑Tγtrt]直接计算 J(θ) 的梯度
∇θJ(θ)=∂θ∂∫τR(τ)pθ(τ)dτ=∫τR(τ)∂θ∂pθ(τ)dτ其中:
- pθ(τ)=p0(s0)∏t=0T−1πθ(at∣st)p(st+1∣st,at) 是在策略 πθ 下生成轨迹 τ 的概率分布
- R(τ)=∑t=0Tγtrt 是轨迹 τ 的累计回报,它是与参数 θ 无关,但与轨迹 τ 相关的量。
这里出现了两个难以计算的困难:
- 环境动态未知 (Model-free):轨迹 τ 的生成主要由环境动态变化 p(st+1∣st,at) 和策略 πθ(at∣st) 决定。环境动态通常是未知的,这意味着我们无法直接计算 pθ(τ) 的解析形式,也即无法计算出上式的解析解。即使能通过采样的方式估计出 pθ(τ) 的数值,求解它的梯度 ∂θ∂pθ(τ) 也是非常困难的,因为它涉及到整个轨迹的概率分布,而不是单个状态或动作的概率分布。
- 轨迹空间巨大:若状态空间或动作空间是连续空间,想要遍历全部可能的轨迹 τ 是无法实现的。若状态空间和动作空间是离散空间,随着时间步数 T 的增加,轨迹的数量也会呈指数级增长,这使得直接计算积分是不可行的。
因此,无论是解析求解还是数值积分,都是不可行的。
6.2.2 分解轨迹分布的梯度 ∂θ∂pθ(τ)#
既然环境动态与策略参数 θ 无关,那么 ∂θ∂p(st+1∣st,at)=0。考虑到轨迹分布 pθ(τ) 是链式乘法形式的分布函数,做一个对数变换,得到
logpθ(τ)=logp0(s0)+t=0∑T−1logπθ(at∣st)+t=0∑T−1logp(st+1∣st,at)对 θ 求导,得到
∂θ∂logpθ(τ)=t=0∑T−1∂θ∂logπθ(at∣st)利用 Log-Derivative Trick,
∂θ∂pθ(τ)=pθ(τ)∂θ∂logpθ(τ)=pθ(τ)t=0∑T−1∂θ∂logπθ(at∣st)这下就很简单了,我们把上式代入到 ∇θJ(θ) 的表达式中,得到
∇θJ(θ)=∫τR(τ)pθ(τ)t=0∑T−1∂θ∂logπθ(at∣st)dτ=Eτ∼πθ[R(τ)t=0∑T−1∂θ∂logπθ(at∣st)]这里虽然 pθ(τ) 解析形式得不到,积分也是无法计算的,但是我们可以转化为采样的方式来估计 ∇θJ(θ),这就是策略梯度方法的核心思想。
6.2.3 策略梯度定理#
需要指出
∇θJ(θ)=Eτ∼πθ[R(τ)t=0∑T−1∇θlogπθ(at∣st)]并非策略梯度的最简化形式,这里面仍然有很多可以消除的项。展开轨迹 τ 的回报 R(τ),得到
∇θJ(θ)=Eτ∼πθ[(k=0∑Tγkrk)(t=0∑T−1∇θlogπθ(at∣st))]=Eτ∼πθ[t=0∑T−1k=0∑T∇θlogπθ(at∣st)γkrk]=Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)(k=0∑t−1γkrk+k=t∑Tγkrk)]=Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)k=0∑t−1γkrk]+Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)k=t∑Tγkrk]展开第一个期望项,得到
Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)k=0∑t−1γkrk]=t=0∑T−1k=0∑t−1γkEτ∼πθ[rk∇θlogπθ(at∣st)]而双求和里面的那个期望实际上可以进一步简化,这里要考虑到轨迹 τ=(s0,a0,…,sT) 看起来是一个多维随机向量,实际上,内部变量之间存在依赖关系—— rk 的产生仅依赖于历史状态和动作 {(si,ai)}i=0k,与未来的状态和动作是相互条件独立的:
====Eτ∼πθ[rk∇θlogπθ(at∣st)](k<t)Eτ∼πθ[rk]Eτ∼πθ[logπθ(at∣st)]Es0∼p0(s0),a0∼πθ(a0∣s0),s1∼p(s1∣s0,a0),…,sT∼p(sT∣sT−1,aT−1),rk∼p(rk∣sk,ak)[rk]⋅Es0∼p0(s0),a0∼πθ(a0∣s0),s1∼p(s1∣s0,a0),…,sT∼p(sT∣sT−1,aT−1)[∇θlogπθ(at∣st)]Es0∼p0(s0),a0∼πθ(a0∣s0),s1∼p(s1∣s0,a0),…,sk∼p(sk∣sk−1,ak−1),ak∼πθ(ak∣sk),rk∼p(rk∣sk,ak)[rk]⋅Es0∼p0(s0),a0∼πθ(a0∣s0),s1∼p(s1∣s0,a0),…,st∼p(st∣st−1,at−1),at∼πθ(at∣st)[∇θlogπθ(at∣st)]R(sk,ak)⋅E(s0,a0,…,st−1,at−1)∼πθ,st∼p(st∣st−1,at−1),at∼πθ(at∣st)[∇θlogπθ(at∣st)]注意这里我们省略了 rk 的生成过程,rk 可以是由确定性的奖励函数 r(sk,ak) 给出,也可以是由随机的奖励分布 p(rk∣sk,ak) 给出,这里为了公式简化表达,将期望奖励 rk 直接表达成了一个随机的奖励函数值
R(sk,ak)=Es0∼p0(s0),a0∼πθ(a0∣s0),s1∼p(s1∣s0,a0),…,sk∼p(sk∣sk−1,ak−1),ak∼πθ(ak∣sk),rk∼p(rk∣sk,ak)[rk]好,继续关注新出现的后一项期望,它是一个条件期望
=E(s0,a0,…,st−1,at−1)∼πθ,st∼p(st∣st−1,at−1),at∼πθ(at∣st)[∇θlogπθ(at∣st)]E(s0,a0,…,st−1,at−1)∼πθ[Est∼p(st∣st−1,at−1),at∼πθ(at∣st)[∇θlogπθ(at∣st)]]由于
=====Est∼p(st∣st−1,at−1),at∼πθ(at∣st)[∇θlogπθ(at∣st)]∬st,atp(st∣st−1,at−1)πθ(at∣st)∇θlogπθ(at∣st)dstdat∬st,atp(st∣st−1,at−1)∇θπθ(at∣st)dstdat∇θ∬st,atp(st∣st−1,at−1)πθ(at∣st)dstdat∇θ10逐级回代,可以得到最开始的第一个期望项结果实际上也就是 0,因此
∇θJ(θ)=Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)k=t∑Tγkrk]将 t 时刻的的回报记作 Gt:
Gt=k=0∑Tγkrk+t从而得到简化的策略梯度形式,也即下面的策略梯度定理:
Theorem (策略梯度定理)
∇θJ(θ)=Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)γtGt]6.2.4 策略梯度上升#
拿到策略梯度后,我们就可以使用梯度上升法来更新策略参数 θ,以最大化 J(θ)。梯度上升的更新规则为
θt+1=θt+α∇θJ(θt)其中α是学习率,J(θ)是目标函数。
6.2.5 两种策略梯度公式的比较#
前面我们分析得到了两种策略梯度的公式
∇θJ(θ)=Eτ∼πθ[R(τ)t=0∑T−1∇θlogπθ(at∣st)]与
∇θJ(θ)=Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)γtGt]两个公式是等价的,且第二个公式是第一个的简化。但是在实际使用上,第二个公式使用范围更加广泛:
- 学习模式对比
- 第一个公式只适用于轨迹 τ 已经完全确定的情况,也即 R(τ) 已经计算出的情况。换言之,第一个公式不能在每个时间步 t 都更新参数。
- 第二个公式能在每个时间步 t 都更新参数,因为本身梯度可以看作是在每个时间步都做一次 θ←θ+αγtGt∇logπθ(at∣st),累计后完成整个梯度上升。这里期望下标虽是 τ,但这只是简化的写法,实际上每个时间步 t 用到的随机变量并没有完全覆盖 τ 中的所有变量。
- 采样方差对比
- 第一个公式中所有时间步共享同一个整条轨迹的回报 R(τ),引入了大量与当前梯度无关的历史噪声和未来噪声,导致不同时间步梯度项之间强相关,方差较大。
- 第二个公式中每个时间步使用从该步开始的累积回报 Gt,减少了无关变量的影响,且便于引入基线进一步降低方差,因此方差更小、估计更稳定。
6.2.6 含有基线的策略梯度#
策略梯度公式中可以引入基线,在保持梯度无偏估计的同时,通过减去一个只依赖于状态的基线,降低回报 Gt 的波动性,从而减小梯度估计的方差,使学习更加稳定高效。
∇θJ(θ)=Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)(γtGt−b(st))]其中 b(st) 是基线函数,基线函数只需要满足其值与动作无关的条件。通常选用状态价值函数 V(st) 作为基线函数。
下面验证含基线的策略梯度的无偏性。为了验证这一性质,我们只需要证明
Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)b(st)]=0拆开条件期望
==t=0∑T−1E(s0,a0,…,st−1,at−1)∼πθ,st∼p(st∣st−1,at−1),at∼πθ(at∣st)[∇θlogπθ(at∣st)b(st)]t=0∑T−1E(s0,a0,…,st−1,at−1)∼πθEst∼p(st∣st−1,at−1)b(st)0∫atπθ(at∣st)∇θlogπθ(at∣st)dat0证毕。
6.2.7 REINFORCE 算法#
REINFORCE 算法的本质是通过 Monte Carlo 方法来估计策略的梯度。它的基本思想是通过采样来计算每个时间步的回报,然后使用这些回报来更新策略参数,是一种分幕式的强化学习算法。
REINFORCE 算法用到了将策略梯度按时间步 t 分解的思路进行更新
θ←θ+αγtGt∇logπθ(at∣st)它的好处有:
- 在线更新:不需要等到所有轨迹数据收集完毕再统一更新,可以在每个时间步立即更新参数,提高数据效率
- 方差降低:每个时间步只使用从该步开始的回报Gt,而不是整条轨迹的总回报R(τ),减少了与当前动作无关的历史奖励带来的噪声
- 便于引入基线:这种分解形式更容易引入状态值函数作为基线,进一步降低方差
REINFORCE 算法
| |
|---|
| Input: | 可微分参数化策略 πθ(a∣s),学习率 α>0 |
| 1: | 初始化策略参数 θ∈Rd |
| 2: | repeat |
| 3: | 基于 πθ(⋅∣⋅) 生成一个序列 s0,a0,r0,...,sT,aT,rT |
| 4: | for t=0,1,...,T do |
| 5: | G←∑k=tTγk−trk |
| 6: | θ←θ+αγtG∇logπθ(at∣st) |
| 7: | end for |
| 8: | until 收敛 |
python 伪代码如下:
def REINFORCE(env, policy, alpha, gamma, num_episodes):
for episode in range(num_episodes):
# 生成一个完整的轨迹
states, actions, rewards = generate_episode(env, policy)
# 计算每个时间步的回报
G = 0
for t in reversed(range(len(states))):
G = rewards[t] + gamma * G
# 更新策略参数
policy.update(states[t], actions[t], alpha * G, gamma)
return policy
6.2.8 Actor-Critic#
Actor-Critic (演员-评论家,AC 方法) 方法结合了策略梯度 (Actor) 和值函数近似 (Critic) 的优势,通过引入值函数作为基准 (baseline) 来降低策略梯度的方差,从而提升学习效率。其核心思想是:
- Actor:负责根据当前策略 πθ(a∣s) 选择动作,并通过策略梯度更新策略参数 θ;
- Critic:负责估计状态值函数 Vw(s) 或动作值函数 Qw(s,a),并通过TD误差等目标优化值函数参数 w。
AC 方法使用了含基线的策略梯度定理。其策略梯度可表示为:
∇θJ(θ)=Eτ∼πθ[t=0∑T−1∇θlogπθ(at∣st)A(st,at)]其中 优势函数 A(st,at)=Q(st,at)−V(st) 表示在状态 st 下选择动作 at 的相对优势。Critic 的任务即为估计 A(st,at),常见实现方式包括:
- TD误差法:用 δt=rt+1+γVw(st+1)−Vw(st) 作为优势函数的无偏估计;
- 广义优势估计(GAE):结合多步TD误差的加权平均,平衡偏差与方差。
Actor-Critic 算法
| |
|---|
| Input: | 可微分策略 πθ(a∣s),值函数 Vw(s) |
| Input: | 策略学习率 αθ,值函数学习率 αw |
| 1: | 初始化参数 θ 和 w |
| 2: | repeat |
| 3: | 从环境中采样轨迹 τ=(s0,a0,r1,s1,...,sT−1,aT−1,rT) |
| 4: | for t=0,1,...,T−1 do |
| 5: | 计算TD误差:δt=rt+1+γVw(st+1)−Vw(st) |
| 6: | 更新Actor参数:θ←θ+αθ∇θlogπθ(at∣st)⋅δt |
| 7: | 更新Critic参数:w←w+αwδt∇wVw(st) |
| 8: | end for |
| 9: | until 策略收敛 |
关键改进与变体
1. 异步优势Actor-Critic(A3C) 多个并行的Actor线程同时与环境交互,异步计算梯度并更新全局参数,打破了样本相关性,提升训练效率和稳定性。
2. 优势Actor-Critic(A2C) A3C的同步版本,等待所有并行Actor完成采样后统一计算平均梯度再更新,实现更简单,训练更稳定。
3. 确定性策略梯度(DPG) 适用于连续动作空间,Actor输出确定性动作而非动作概率分布,通过链式法则计算梯度,常结合经验回放和目标网络形成 DDPG 算法。
6.3 策略改进方法#
6.3.1 步长选择的难题#
前述的经典策略梯度算法 (如 REINFORCE,Actor-Critic) 的缺点是难以确定合适的步长。
- 如果步长过大,策略的更新可能会导致直接跨越过最优点,产生较大的策略变动。而这种巨大的策略变动则有可能导致策略本身性能的退化;
- 如果步长过小,更新会非常缓慢。
因此,我们需要找到能够合适的步长来更新策略参数。假设我们已经有了一个还不错的旧策略 πθ0,我们希望利用策略梯度方法得到一个更好的新策略 πθ,即
J(θ)≥J(θ0)现在的目标就是该如何基于旧策略 πθ0 改进得到新策略 πθ。
6.3.2 策略差异恒等式#
下面推导量化两个策略的目标函数差异的两个恒等式。
恒等式一
对于给定的两个策略 πθ0 和 πθ, 存在如下恒等式
J(θ)=J(θ0)+Eτ∼πθ[t=0∑∞γtAπθ0(st,at)]其中,τ=(s0,a0,s1,a1,…) 是采样自策略 πθ 轨迹,Aπθ0(st,at) 是策略 πθ0 对应的优势函数。
下面给出这个恒等式的证明,注意这里的证明利用到了初始状态 s0 的概率分布与策略本身无关,是两个策略目标函数所共有的概率分布:
展开
Aπθ0(s,a)=Qπθ0(s,a)−Vπθ0(s)=Es′∼P(s′∣s,a)[r(s,a)+γVπθ0(s′)−Vπθ0(s)]有
Eτ∼πθ[t=0∑∞γtAπθ0(st,at)]=Eτ∼πθ[t=0∑∞γt[r(st,at)+γVπθ0(st+1)−Vπθ0(st)]]=Eτ∼πθ[t=0∑∞γtr(st,at)−Vπθ0(s0)]=Eτ∼πθ[t=0∑∞γtr(st,at)]−Es0[Vπθ0(s0)]=J(θ)−J(θ0)恒等式证毕。
恒等式二
对于给定的两个策略 πθ0 和 πθ, 存在如下恒等式
J(θ)=J(θ0)+s∑ρπθ(s)a∑πθ(a∣s)Aπθ0(s,a)其中:
- ρπθ(s)=p(s0=s)+γp(s1=s∣πθ)+γ2p(s2=s∣πθ)+⋯ 是状态 s 在策略 πθ 下的折扣状态访问分布,反映了从初始状态分布出发,按照策略 πθ 与环境交互,在整个无限长轨迹中,状态 s 出现的”折扣期望次数”;
- Aπθ0(st,at) 是策略 πθ0 对应的优势函数。
下面基于恒等式一来证明恒等式二:
J(θ)=J(θ0)+Eτ∼πθ[t=0∑∞γtAπθ0(st,at)]=J(θ0)+Es0∼p0(s0),a0∼πθ(a0∣s0),s1∼p(s1∣s0,a0),a1∼πθ(a1∣s1),…[t=0∑∞γtAπθ0(st,at)]=J(θ0)+t=0∑∞s0,s1,s2,…,st∑a0,a1,…,at∑γtAπθ0(st,at)p(st,at,st−1,at−1,st−2,at−2,…,s0,a0)=J(θ0)+t=0∑∞s0,s1,s2,…,st∑a0,a1,…,at∑γtAπθ0(st,at)[p(s0)k=0∏t−1πθ(ak∣sk)P(sk+1∣sk,ak)πθ(at∣st)]=J(θ0)+t=0∑∞γts0∑p(s0)a0∑πθ(a0∣s0)s1∑p(s1∣s0,a0)⋯st∑p(st∣st−1,at−1)at∑πθ(at∣st)Aπθ0(st,at)=J(θ0)+t=0∑∞γtst∑p(st=s∣πθ)[s0,…,st−1∑p(s0)k=0∏t−1πθ(ak∣sk)p(sk+1∣sk,ak)]at∑πθ(at∣st)Aπθ0(st,at)=J(θ0)+t=0∑∞γts∑p(st=s∣πθ)a∑πθ(a∣s)Aπθ0(s,a)=J(θ0)+s∑ρπθ(s)a∑πθ(a∣s)Aπθ0(s,a)其中,p(st=s∣πθ) 是在策略 πθ 下,在第 t 时刻状态 {st=s} 的概率。证毕。
6.3.3 TRPO 方法#
利用前面恒等式二的结果,只要满足
s∑ρπθ(s)a∑πθ(a∣s)Aπθ0(s,a)>0, ∀s就可以保证策略 πθ 比策略 πθ0 更好。
6.3.3.1 重要性采样#
事实上,这个期望并不好计算
Es∼ρπθ,a∼πθ(a∣s)[Aπθ0(s,a)]=s∑ρπθ(s)a∑πθ(a∣s)Aπθ0(s,a)这是因为我们只有策略 πθ0 ,而没有策略 πθ,所以我们不可能直接得到 ρπθ(s)。为了转换问题,我们先推导一个重要性采样定理。
Theorem 重要性采样定理
给定一个难以采样的概率分布 p(x), 可以通过利用一个容易采样的分布 q(x) 来近似 p(x) 的采样,利用
Ex∼p(x)[f(x)]=Ex∼q(x)[q(x)p(x)f(x)]证明:
Ex∼p(x)[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=∫f(x)q(x)dx⋅q(x)p(x)=Ex∼q(x)[q(x)p(x)f(x)]证毕。
利用重要性采样定理,可以用从分布 πθ0 中采样的方式得到关于分布 πθ 的期望值:
Es∼ρπθ(s),a∼πθ(a∣s)[Aπθ0(s,a)]=Es∼ρπθ0(s),a∼πθ0(a∣s)[πθ0(a∣s)πθ(a∣s)Aπθ0(s,a)]于是,利用重要性采样,且考虑到折扣状态访问分布变化不大,即 ρπθ(s)≈ρπθ0(s), 有
Es∼ρπθ0(s),a∼πθ0(a∣s)[ρπθ0(s)ρπθ(s)⋅πθ0(a∣s)πθ(a∣s)Aπθ0(s,a)]≈Es∼ρπθ0(s),a∼πθ0(a∣s)[πθ0(a∣s)πθ(a∣s)Aπθ0(s,a)]这个式子正是 TRPO 的核心公式,由此,
θmaxJ(θ)=J(θ0)+θmaxEs∼ρπθ0(s),a∼πθ0(a∣s)[πθ0(a∣s)πθ(a∣s)Aπθ0(s,a)]=J(θ0)+θmaxs∑ρπθ0(s)a∑πθ(a∣s)Aπθ0(s,a)注意第二个式子中虽然看着很像没有重要性采样,但是注意下标,实际上是暗含了重要性采样的。
6.3.3.2 TRPO 方法的数学模型#
为了满足折扣状态访问分布变化不大的性质
ρπθ(s)≈ρπθ0(s)需要将更新范围限定在一个确定的邻域内。Trust Region Policy Optimization (TRPO) 的想法就在于此,通过约束策略更新的步长,确保新策略的性能单调提升。
设 N(θ0)={θ∣∥θ−θ0∥≤Δ} 为 θ0 的一个邻域。若存在一个函数 L(θ∣θ0) 可以在邻域 N(θ0) 内近似目标函数 J(θ) ,则可以通过最大化 L(θ∣θ0) 来更新策略参数,此时 L(θ∣θ0) 被称作置信域。
于是,优化目标为
s.t. θmaxEs∼ρθ0,a∼πθ0[πθ0(a∣s)πθ(a∣s)Aθ0(s,a)]Es∼ρθ0[DKL(πθ0(⋅∣s)∥πθ(⋅∣s))]≤δ这里采用了Kullback-Leibler散度 (KL散度) 来度量新旧策略之间的差异,实际上是从分布变化的角度来衡量参数的变化。TRPO通过限制KL散度来控制策略更新的幅度,从而避免过大的策略变动。 其中,目标函数为
J(θ)=Es∼ρθ0,a∼πθ0[πθ0(a∣s)πθ(a∣s)Aθ0(s,a)]目标函数的近似函数则为:
L(θ∣θ0)=n1i=1∑n[πθ0(ai∣si)πθ(ai∣si)Aθ0(si,ai)]6.2.4 PPO 方法#
TRPO 通过KL散度约束实现了策略更新的稳定性,但其具有如下几个局限性。
- 计算复杂度高,因为需显式计算KL散度的二阶近似 (涉及 Fisher 矩阵),难以扩展到超大规模网络。
- 实现复杂,毕竟共轭梯度法需要定制化实现,与自动微分框架兼容性差。
- 超参数敏感,这是因为KL约束阈值 δ 需精细调节,否则易导致更新过保守或不稳定。
Proximal Policy Optimization (PPO) 提出了一种更简洁的约束方式,通过裁剪目标函数 (Clipped Objective) 或自适应 KL 惩罚 (Adaptive KL Penalty),在保证性能的前提下显著降低实现难度。
PPO 针对以上 TRPO 的各个问题做了如下的改进。
- 隐式约束上,通过目标函数的裁剪或自适应惩罚替代显式KL约束。
- 兼容性上,直接使用一阶优化方法 (如 Adam),与深度学习框架无缝集成。
- 高效性上,无需计算二阶矩阵,适合大规模分布式训练。
PPO 主要有两种形式,分别是 PPO-Clip 和 PPO-KL。其区别在于对策略更新的约束方式。PPO-Clip 通过裁剪目标函数来限制策略更新幅度,而 PPO-KL 则通过自适应 KL 惩罚来实现类似效果。两者在性能上相近,但实现复杂度和超参数调节上有所不同。
形式一:PPO-Clip (裁剪目标函数)
目标函数为
LCLIP(θ)=Es∼ρθ0,a∼πθ0[min(rt(θ)At,clip(rt(θ),1−ϵ,1+ϵ)At)]其中,
- 重要性采样比率: rt(θ)=πθ0(a∣s)πθ(a∣s)
- 优势函数: At=Aπθ0(s,a) ,通常用GAE(Generalized Advantage Estimation)估计。
- 裁剪阈值: ϵ (如0.1或0.2),限制 rt(θ) 的偏离幅度。
这里,裁剪机制的作用是限制策略更新幅度,避免过度优化。具体来说,当优势为正At>0时,鼓励动作概率提升,但限制 rt(θ)≤1+ϵ ,避免过度优化。而当优势为负At<0,抑制动作概率下降,但限制 rt(θ)≥1−ϵ ,避免策略退化。
形式二:PPO-KL (自适应KL惩罚) 它的目标函数是
LKL(θ)=Es∼ρθ0,a∼πθ0[rt(θ)At−β⋅DKL(πθ0∥πθ)]其中,
- 自适应系数 β:
- 若当前平均KL散度 DˉKL>δtarget ,增大 β(如乘1.5)。
- 若 DˉKL<δtarget ,减小 β(如乘0.5)。
- 目标阈值: δtarget (如0.01)。
PPO的优化目标与实现,以PPO-Clip为例
1. 完整优化问题 PPO-Clip的优化目标可写为:
θmaxEs,a∼πθ0[min(rt(θ)At,clip(rt(θ),1−ϵ,1+ϵ)At)]无显式约束,通过目标函数设计隐式限制策略更新幅度。
2. 优势函数估计 使用 GAE (Generalized Advantage Estimation) 平衡偏差与方差:
AtGAE(γ,λ)=k=0∑T−t(γλ)kδt+k其中 δt=rt+γV(st+1)−V(st) ,λ∈[0,1] 控制方差-偏差权衡。
3. 实现步骤
- 数据收集:用旧策略 πθ0 与环境交互,收集轨迹数据。
- 优势计算:基于当前价值函数 Vϕ 计算GAE优势 At。
- 目标优化:对目标函数 LCLIP 或 LKL 执行多轮小批量梯度上升。
- 策略同步:定期将当前策略参数 $theta复制给\theta_0$。
PPO与TRPO的对比
| 特性 | TRPO | PPO |
|---|
| 约束方式 | 显式KL散度约束 | 裁剪目标函数或自适应KL惩罚 |
| 计算复杂度 | 高(需二阶矩阵运算) | 低(仅一阶优化) |
| 实现难度 | 复杂(共轭梯度法) | 简单(兼容标准优化器) |
| 超参数敏感性 | 高(依赖 δ 选择) | 低(ϵ 或 β 易调节) |
| 适用场景 | 理论验证或高精度控制 | 大规模训练(如游戏、机器人) |
两种形式的 PPO 对比
裁剪目标的启发式设计: PPO-Clip的裁剪机制虽缺乏严格理论保证,但实验表明其效果与TRPO相当。直观解释为:
- 概率比偏离限制:强制策略更新在信任区域内( rt(θ)∈[1−ϵ,1+ϵ] )。
- 保守更新:对优势显著的动作进行“截断”,防止过拟合。
自适应KL惩罚的退化问题: PPO-KL虽更接近TRPO理论,但实际中易因KL散度振荡导致训练不稳定。因此,PPO-Clip成为主流实现。