深度强化学习 | 详解从信赖域策略优化(TRPO)到近端策略优化(PPO)算法原理
目录
- 0 专栏介绍
- 1 信赖域策略优化
- 2 近端策略优化
0 专栏介绍
本专栏以贝尔曼最优方程等数学原理为根基,结合PyTorch框架逐层拆解DRL的核心算法(如DQN、PPO、SAC)逻辑。针对机器人运动规划场景,深入探讨如何将DRL与路径规划、动态避障等任务结合,包含仿真环境搭建、状态空间设计、奖励函数工程化调优等技术细节,旨在帮助读者掌握深度强化学习技术在机器人运动规划中的实战应用
🚀详情:《运动规划实战精讲:深度强化学习篇》
1 信赖域策略优化
在深度强化学习 | 图文详细推导深度确定性策略梯度DDPG算法中,我们介绍了演员-评论家(Actor-Critic, AC)框架,其中
- Actor网络表征策略,通常用神经网络表示为πθ(a∣s)\pi_\theta(a|s)πθ(a∣s)(随机策略,输出动作概率分布)或 μθ(s)\mu_\theta(s)μθ(s)(确定性策略,直接输出动作),其参数θ\thetaθ决定了智能体在不同状态下倾向于选择哪些动作;
- Critic网络表征策略优劣,通常用神经网络表示为Vϕ(s)V_\phi(s)Vϕ(s)(状态值函数,估计状态sss的长期价值)或Qϕ(s,a)Q_\phi(s,a)Qϕ(s,a)(状态-动作值函数,估计状态 sss 下执行动作 aaa 的长期价值),其参数 ϕ\phiϕ 量化了当前策略下这个状态/动作的回报;
Actor通过与环境交互积累经验,Critic则基于这些经验更新对价值的估计,反过来为Actor的策略优化提供方向。
在标准Actor-Critic框架中,采样的行动策略和待改进的目标策略相同,属于在线策略方法。为了增强采样数据的利用率,信赖域策略优化(Trust Region Policy Optimization, TRPO)通过重要性采样技术使Actor-Critic框架具有离线策略方法的特点。形式化地,设目标策略为πθ\pi _{\boldsymbol{\theta }}πθ,行为策略为πθ′\pi _{\boldsymbol{\theta }'}πθ′,则策略梯度
∇θVπθ(s)∝E(s,a)πθ[Aπθ(s,a)∇θlnπθ(s,a)]=∑s,a(πθ(s,a)Aπθ(s,a)∇θlnπθ(s,a))=∑s,a(πθ′(s,a)πθ(s,a)πθ′(s,a)Aπθ(s,a)∇θlnπθ(s,a))=E(s,a)πθ′[πθ(s,a)πθ′(s,a)Aπθ′(s,a)∇θlnπθ(s,a)]\begin{aligned}\nabla _{\boldsymbol{\theta }}V^{\pi _{\boldsymbol{\theta }}}\left( \boldsymbol{s} \right)& \propto \mathbb{E} _{\left( \boldsymbol{s},\boldsymbol{a} \right) ~\pi _{\boldsymbol{\theta }}}\left[ A^{\pi _{\boldsymbol{\theta }}}\left( \boldsymbol{s},\boldsymbol{a} \right) \nabla _{\boldsymbol{\theta }}\ln \pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right) \right] \\&=\sum_{\boldsymbol{s},\boldsymbol{a}}{\left( \pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right) A^{\pi _{\boldsymbol{\theta }}}\left( \boldsymbol{s},\boldsymbol{a} \right) \nabla _{\boldsymbol{\theta }}\ln \pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right) \right)}\\&=\sum_{\boldsymbol{s},\boldsymbol{a}}{\left( \pi _{\boldsymbol{\theta }'}\left( \boldsymbol{s},\boldsymbol{a} \right) \frac{\pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }'}\left( \boldsymbol{s},\boldsymbol{a} \right)}A^{\pi _{\boldsymbol{\theta }}}\left( \boldsymbol{s},\boldsymbol{a} \right) \nabla _{\boldsymbol{\theta }}\ln \pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right) \right)}\\&=\mathbb{E} _{\left( \boldsymbol{s},\boldsymbol{a} \right) ~\pi _{\boldsymbol{\theta }'}}\left[ \frac{\pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }'}\left( \boldsymbol{s},\boldsymbol{a} \right)}A^{\pi _{\boldsymbol{\theta }'}}\left( \boldsymbol{s},\boldsymbol{a} \right) \nabla _{\boldsymbol{\theta }}\ln \pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right) \right]\end{aligned} ∇θVπθ(s)∝E(s,a) πθ[Aπθ(s,a)∇θlnπθ(s,a)]=s,a∑(πθ(s,a)Aπθ(s,a)∇θlnπθ(s,a))=s,a∑(πθ′(s,a)πθ′(s,a)πθ(s,a)Aπθ(s,a)∇θlnπθ(s,a))=E(s,a) πθ′[πθ′(s,a)πθ(s,a)Aπθ′(s,a)∇θlnπθ(s,a)]
在重要性采样下,设计由行为策略诱导的代理目标函数(surrogate objective function)
J(θ)=E(s,a)πθ′[πθ(s,a)πθ′(s,a)Aπθ′(s,a)]J\left( \boldsymbol{\theta } \right) =\mathbb{E} _{\left( \boldsymbol{s},\boldsymbol{a} \right) ~\pi _{\boldsymbol{\theta }'}}\left[ \frac{\pi _{\boldsymbol{\theta }}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }'}\left( \boldsymbol{s},\boldsymbol{a} \right)}A^{\pi _{\boldsymbol{\theta }'}}\left( \boldsymbol{s},\boldsymbol{a} \right) \right] J(θ)=E(s,a) πθ′[πθ′(s,a)πθ(s,a)Aπθ′(s,a)]
基于代理目标函数,采用相邻两次迭代的策略参数θk\boldsymbol{\theta }_kθk与θk+1\boldsymbol{\theta }_{k+1}θk+1构造有约束优化问题
θk+1=argmaxθk+1E(s,a)πθk[πθk+1(s,a)πθk(s,a)Aπθk(s,a)]s.t.πθk+1≈πθk\boldsymbol{\theta }_{k+1}=\underset{\boldsymbol{\theta }_{k+1}}{\mathrm{arg}\max}\mathbb{E} _{\left( \boldsymbol{s},\boldsymbol{a} \right) ~\pi _{\boldsymbol{\theta }_k}}\left[ \frac{\pi _{\boldsymbol{\theta }_{k+1}}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }_k}\left( \boldsymbol{s},\boldsymbol{a} \right)}A^{\pi _{\boldsymbol{\theta }_k}}\left( \boldsymbol{s},\boldsymbol{a} \right) \right] \,\, \mathrm{s}.\mathrm{t}. \pi _{\boldsymbol{\theta }_{k+1}}\approx \pi _{\boldsymbol{\theta }_k}θk+1=θk+1argmaxE(s,a) πθk[πθk(s,a)πθk+1(s,a)Aπθk(s,a)]s.t.πθk+1≈πθk
即在旧策略πθk\pi _{\boldsymbol{\theta }_k}πθk及其采样样本估计的优势值AπθkA^{\pi _{\boldsymbol{\theta }_k}}Aπθk下,最大化新策略πθk+1\pi _{\boldsymbol{\theta }_{k+1}}πθk+1带来的价值提升
约束条件限制了策略更新幅度太大,防止重要性采样中辅助分布不能近似表示目标分布,导致方差过大训练不稳定。在TRPO算法中,用KL散度衡量相邻迭代步策略的近似性
DKL(πθk∣∣πθk+1)=∫sπθkπθk(s,a)log(πθk(s,a)πθk+1(s,a))dsD_{KL}\left( \pi _{\boldsymbol{\theta }_k}||\pi _{\boldsymbol{\theta }_{k+1}} \right) =\int_{\boldsymbol{s}~\pi _{\boldsymbol{\theta }_k}}{\pi _{\boldsymbol{\theta }_k}\left( \boldsymbol{s},\boldsymbol{a} \right) \log \left( \frac{\pi _{\boldsymbol{\theta }_k}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }_{k+1}}\left( \boldsymbol{s},\boldsymbol{a} \right)} \right)}\mathrm{d}\boldsymbol{s}DKL(πθk∣∣πθk+1)=∫s πθkπθk(s,a)log(πθk+1(s,a)πθk(s,a))ds
结合信赖域方法设置信赖域半径约束KL散度,即
θk+1=argmaxθk+1E(s,a)πθk[πθk+1(s,a)πθk(s,a)Aπθk(s,a)]s.t.DKL(πθk∣∣πθk+1)<Δ\boldsymbol{\theta }_{k+1}=\underset{\boldsymbol{\theta }_{k+1}}{\mathrm{arg}\max}\mathbb{E} _{\left( \boldsymbol{s},\boldsymbol{a} \right) ~\pi _{\boldsymbol{\theta }_k}}\left[ \frac{\pi _{\boldsymbol{\theta }_{k+1}}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }_k}\left( \boldsymbol{s},\boldsymbol{a} \right)}A^{\pi _{\boldsymbol{\theta }_k}}\left( \boldsymbol{s},\boldsymbol{a} \right) \right] \,\, \mathrm{s}.\mathrm{t}. D_{KL}\left( \pi _{\boldsymbol{\theta }_k}||\pi _{\boldsymbol{\theta }_{k+1}} \right) <\Delta θk+1=θk+1argmaxE(s,a) πθk[πθk(s,a)πθk+1(s,a)Aπθk(s,a)]s.t.DKL(πθk∣∣πθk+1)<Δ
在实际应用中,为了简化上述优化问题的求解,对目标函数进行一阶泰勒展开
J(θk+1)=J(θk)+gT(θk+1−θk)J\left( \boldsymbol{\theta }_{k+1} \right) =J\left( \boldsymbol{\theta }_k \right) +\boldsymbol{g}^T\left( \boldsymbol{\theta }_{k+1}-\boldsymbol{\theta }_k \right) J(θk+1)=J(θk)+gT(θk+1−θk)
根据KKT条件的定常方程式和互补松弛条件可得
θk+1=θk+αk2ΔxTHxx\boldsymbol{\theta }_{k+1}=\boldsymbol{\theta }_k+\alpha _k\sqrt{\frac{2\Delta}{\boldsymbol{x}^T\boldsymbol{Hx}}}\boldsymbol{x}θk+1=θk+αkxTHx2Δx

2 近端策略优化
TRPO的求解是带KL散度约束的优化问题,涉及泰勒展开线性化、KKT条件、共轭梯度算法、线搜索法、广义优势估计等,使TRPO的计算复杂度较高。近端策略优化(Proximal Policy Optimization, PPO)的核心思想与TRPO一致,但更轻量有效,成为OpenAI推荐的首选深度强化学习算法之一。
对于有约束优化问题
θk+1=argmaxθk+1E(s,a)πθk[πθk+1(s,a)πθk(s,a)Aπθk(s,a)]s.t.πθk+1≈πθk\boldsymbol{\theta }_{k+1}=\underset{\boldsymbol{\theta }_{k+1}}{\mathrm{arg}\max}\mathbb{E} _{\left( \boldsymbol{s},\boldsymbol{a} \right) ~\pi _{\boldsymbol{\theta }_k}}\left[ \frac{\pi _{\boldsymbol{\theta }_{k+1}}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }_k}\left( \boldsymbol{s},\boldsymbol{a} \right)}A^{\pi _{\boldsymbol{\theta }_k}}\left( \boldsymbol{s},\boldsymbol{a} \right) \right] \,\, \mathrm{s}.\mathrm{t}. \pi _{\boldsymbol{\theta }_{k+1}}\approx \pi _{\boldsymbol{\theta }_k}θk+1=θk+1argmaxE(s,a) πθk[πθk(s,a)πθk+1(s,a)Aπθk(s,a)]s.t.πθk+1≈πθk
PPO设计以下的目标函数进行简化,称为PPO截断(PPO-Clip)
θk+1=argmaxθk+1J(θk+1)\boldsymbol{\theta }_{k+1}=\mathrm{arg}\max _{\boldsymbol{\theta }_{k+1}}J\left( \boldsymbol{\theta }_{k+1} \right) θk+1=argθk+1maxJ(θk+1)
其中
J(θk+1)=E(s,a)πθk[min(πθk+1(s,a)πθk(s,a)Aπθk(s,a),clip(πθk+1(s,a)πθk(s,a),1−ϵ,1+ϵ)Aπθk(s,a))]J\left( \boldsymbol{\theta }_{k+1} \right) =\mathbb{E} _{\left( \boldsymbol{s},\boldsymbol{a} \right) ~\pi _{\boldsymbol{\theta }_k}}\left[ \min \left( \frac{\pi _{\boldsymbol{\theta }_{k+1}}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }_k}\left( \boldsymbol{s},\boldsymbol{a} \right)}A^{\pi _{\boldsymbol{\theta }_k}}\left( \boldsymbol{s},\boldsymbol{a} \right) , \mathrm{clip}\left( \frac{\pi _{\boldsymbol{\theta }_{k+1}}\left( \boldsymbol{s},\boldsymbol{a} \right)}{\pi _{\boldsymbol{\theta }_k}\left( \boldsymbol{s},\boldsymbol{a} \right)},1-\epsilon ,1+\epsilon \right) A^{\pi _{\boldsymbol{\theta }_k}}\left( \boldsymbol{s},\boldsymbol{a} \right) \right) \right] J(θk+1)=E(s,a) πθk[min(πθk(s,a)πθk+1(s,a)Aπθk(s,a),clip(πθk(s,a)πθk+1(s,a),1−ϵ,1+ϵ)Aπθk(s,a))]
截断函数
clip(x,l,r)\mathrm{clip}\left( x,l,r \right)clip(x,l,r)
将xxx限制在[l,r][l, r][l,r]区间内。如图所示
- 若Aπθk>0A^{\pi _{\boldsymbol{\theta }_k}}>0Aπθk>0说明该动作的价值高于平均,最大化J(θk+1)J\left( \boldsymbol{\theta }_{k+1} \right)J(θk+1)需要增大πθk+1/πθk{{\pi _{\boldsymbol{\theta }_{k+1}}}/{\pi _{\boldsymbol{\theta }_k}}}πθk+1/πθk,但不会让其超过1+ϵ1+\epsilon1+ϵ;
- 若Aπθk<0A^{\pi _{\boldsymbol{\theta }_k}}<0Aπθk<0则最大化J(θk+1)J\left( \boldsymbol{\theta }_{k+1} \right)J(θk+1)需要减小πθk+1/πθk{{\pi _{\boldsymbol{\theta }_{k+1}}}/{\pi _{\boldsymbol{\theta }_k}}}πθk+1/πθk,但不会让其超过1−ϵ1-\epsilon1−ϵ

如下所示为PPO算法流程。

🔥 更多精彩专栏:
- 《ROS从入门到精通》
- 《Pytorch深度学习实战》
- 《机器学习强基计划》
- 《运动规划实战精讲》
- …
