【RL入门】Policy-based算法

Policy-based强化学习优化目标

argmaxπθJ(πθ)=Eτπθ[R(τ)]=τR(τ)P(τ|πθ)

τπθ: 即该轨迹在策略 πθ 下采样出来的,即

atπθ(at|st)s0ρ0(.)st+1P(.|st,at)rt=R(st,at,st+1)

策略梯度上升(REINFORCE 算法)

J(πθ)=Eτπθ[R(τ)log(P(τ|πθ))]=Eτπθ[R(τ)t=0T1logπθ(at|st)] J(πθ)=Eτπθ[t=0T1R(τ)logπθ(at|st)]1Nn=0N1t=0Tn1R(τn)logπθ(at|st)

梯度为

J(πθ)1Nn=0N1t=0Tn1R(τn)logπθ(at|st)

REINFORCE 算法能够直接优化策略的期望回报,是一种 on-policy 算法,比基于价值的强化学习算法的优化目标更直接;但同时梯度估计方差较大(随机动作时间沿着轨迹不断累积导致),可能会造成不稳定,这也是后续Actor-Critic算法试图解决的问题

基线 REINFORCE(VPG)

Vanilla Policy Gradient or REINFORCE with baseline, 处理算法中的梯度估计方差大的问题

Lπ(θ)=1Nn=0N[(GtV(St;ϕ))logπ(At|St;θ)+βH(π(St;θ))]

价值函数

上述 J(πθ) 的公式中,R(τ) 是整条轨迹奖励,但 πθ(at|st) 却是针对单步的。不合理之处在于:用整条轨迹的回报去评估单步动作的价值,然后决定要提升/降低对应的概率(但又不能完全忽视轨迹的最终回报,因为最终目标是让这个回合的结果是最优的。

J(πθ)1Nn=0N1t=0Tn1Ψtlogπθ(at|st)

用更一般的符号 Ψt 表示可行的价值函数

这里采用累计折扣奖励好些

Actor-Critic

在actor-critic方法下,我们用神经网络 θ 来表示策略(actor),神经网络 ϕ 来表示价值(critic),所以这里我们进一步把 Vπ 写成 Vϕ

Vπ 等于客观存在的真值 Vπ 时,TD-error是 Aπ(st,at) 的无偏估计

argmaxπθJ(πθ)1Nn=0N1t=0Tn1(rt+γVϕ(st+1)Vϕ(st))logπθ(at|st) argminVϕL(Vϕ)=Et[rt+γVϕ(st+1)Vϕ(st)2]

PPO

J(πθ)=Et[Aϕ(st,at)logπθ(at|st)]1NTn=0N1t=0Tn1(rt+γVϕ(st+1)Vϕ(st))logπθ(at|st)

重要性采样

通过 off-policy(产出数据的策略和用这批数据做更新的策略不是同一个),重复利用 k 次策略 πold 采样的数据,k 次更新后再令 πold=πθ

当p(x)和q(x)差异较大时,仍需要通过足够多的采样来抵消这种差异对期望的最终影响

J(πθ)=Etτπθold[πθ(at|st)πold(at|st)Aϕ(st,at)logπθ(at|st)] argmaxπθJ(πθ)=Etτπθold[πθ(at|st)πθold(at|st)Aϕ(st,at)]

仍需解决 πθ,πθold 分布差异大的情况

GAE:平衡优势函数的方差和偏差

假设 Vπ 能正确评估策略 π 的价值的前提下,我们用 TD error 作为优势函数的无偏估计。但在训练过程中,Vπ 往往无法完全正确评估出策略的价值,引发系统性偏差,无法用多次采样逼近真实值

Aπ(st,at)=Est+1P(.|st,at)[rt+γVπ(st+1)Vπ(st)] rt+γVπ(st+1)Vπ(st)=Vπ(st)+l=0γlrt+l

但改为实际采样结果相当于增加了随机性(rt,rt+1, 均为随机变量),即偏差降低,方差增加。需要更多数据训练

Ψt=l=0T1(γλ)lδt+l

δt=rt+γVπ(st+1)Vπ(st)
γ: 超参,折扣因子
λ: 超参,平衡方差-偏差的因子。Ψt=rt+γVπ(st+1)Vπ(st),λ=0Ψt=Vπ(st)+l=0γlrt+l,λ=1。即 λ 越大,方差越大,偏差越小

PPO前身:TRPO

Trust Region Policy Optimization (TRPO)

argmaxπθJ(πθ)=Et[πθ(at|st)πold(at|st)AϕGAE(st,at)]s.t. Et[KL(πθold(|st),πθ(|st))]δ

PPO 的改进:PPO-Clip

JCLIP(πθ)=Etτπθold{min[πθ(at|st)πθold(at|st)AϕGAE(st,at),clip(πθ(at|st)πθold(at|st),1ϵ,1+ϵ)AϕGAE(st,at)]}

PPO 的改进:PPO-Penalty

argmaxπθJ(πθ)=Et[πθ(at|st)πθold(at|st)AϕGAE(st,at)βKL(πθold(|st),πθ(|st))]

PPO (Proximal Policy Optimization,近端策略优化)。通过以上方法限制了策略更新的幅度,以避免过大的更新导致的训练不稳定,由此体现了“近端”

参考


© 2024 LiQ :) 由 Obsidian&Github 强力驱动