Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始

Posted PPPerry_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始相关的知识,希望对你有一定的参考价值。

近端策略优化(PPO)算法是OpenAI在2017提出的一种强化学习算法,被认为是目前强化学习领域的SOTA方法,也是适用性最广的算法之一。本文将从PPO算法的基础入手,理解从传统策略梯度算法(例如REIFORCE算法)、自然策略梯度算法、信赖域策略优化算法(TRPO)直到PPO算法的演进过程,以及算法迭代过程中的优化细节。整体框图如下图所示。

图1. 本文整体框图

1. 传统策略梯度算法

1.1 从价值近似到策略近似

强化学习算法可以分为两大类:基于值函数的强化学习和基于策略的强化学习。

基于值函数的强化学习通过递归地求解贝尔曼方程来维护Q值函数(可以是离散的列表,也可以是神经网络),每次选择动作时会选择该状态下对应Q值最大的动作,使得未来积累的期望奖励值最大。经典的基于值函数的强化学习算法有Q-Learning、SARSA、DQN算法等。这些算法在学习后的Q值函数不再发生变化,每次做出的策略也是一定的,可以理解为确定性策略。基于策略的强化学习不再通过价值函数来确定选择动作的策略,而是直接学习策略本身,通过一组参数 θ \\theta θ对策略进行参数化,并通过神经网络方法优化 θ \\theta θ

基于策略的强化学习用参数化概率分布 π θ ( a ∣ s ) = P ( a ∣ s ; θ ) \\pi_\\theta(a|s)=P(a|s;\\theta) πθ(as)=P(as;θ)代替了基于值函数的强化学习中的确定性策略 π : s → a \\pi:s \\to a π:sa,在返回的动作概率列表中对不同的动作进行抽样选择。

1.2 定义目标函数

基于参数化策略的思想,我们的目标就是找到那些可能获得更多奖励的动作,使它们对应的概率更大,从而策略就更有可能选择这些动作。为此,我们定义的最大化目标函数 J ( θ ) J(\\theta) J(θ)如下: max ⁡ θ J ( θ ) = max ⁡ θ E τ ∼ π θ R ( τ ) = max ⁡ θ ∑ τ P ( τ ; θ ) R ( τ ) \\max_\\theta J(\\theta)=\\max_\\theta E_\\tau \\sim \\pi_\\theta R(\\tau)=\\max_\\theta \\sum_\\tau P(\\tau ; \\theta) R(\\tau) θmaxJ(θ)=θmaxEτπθR(τ)=θmaxτP(τ;θ)R(τ)其中 τ \\tau τ是agent与环境交互产生的状态-动作轨迹 τ = ( s 1 , a 1 , … , s T , a T ) \\tau=(s_1,a_1,\\dots,s_T,a_T) τ=(s1,a1,,sT,aT),对 τ \\tau τ求和代表的是与环境交互可能产生的所有情况。我们的目标是通过调整 θ \\theta θ,使得获得更大奖励的轨迹出现的概率更高。

其中,轨迹 τ \\tau τ在策略 π θ ( a ∣ s ) \\pi_\\theta(a|s) πθ(as)下发生的概率定义为:
P ( τ ; θ ) = [ ∏ t = 0 T P ( s t + 1 ∣ s t , a t ) ⋅ π θ ( a t ∣ s t ) ] P(\\tau ; \\theta)=\\left[\\prod_t=0^T P\\left(s_t+1 \\mid s_t, a_t\\right) \\cdot \\pi_\\theta\\left(a_t \\mid s_t\\right)\\right] P(τ;θ)=[t=0TP(st+1st,at)πθ(atst)]表示为状态转移概率和动作选择概率的乘积,因为状态和动作决定轨迹。

1.3 导出策略梯度

与神经网络的优化思路相同,为了通过参数 θ \\theta θ优化目标函数,我们需要计算目标函数 J ( θ ) J(\\theta) J(θ) θ \\theta θ的导数:
∇ θ J ( θ ) = ∑ τ ∇ θ P ( τ ; θ ) R ( τ ) = ∑ τ P ( τ ; θ ) ∇ θ P ( τ ; θ ) P ( τ ; θ ) R ( τ ) = ∑ τ P ( τ ; θ ) ∇ θ log ⁡ P ( τ ; θ ) R ( τ ) = E τ ∼ π θ ∇ θ log ⁡ P ( τ ; θ ) R ( τ ) \\beginaligned\\nabla_\\theta J(\\theta)&=\\sum_\\tau \\nabla_\\theta P(\\tau ; \\theta) R(\\tau)\\\\&=\\sum_\\tau P(\\tau ; \\theta) \\frac\\nabla_\\theta P(\\tau ; \\theta)P(\\tau ; \\theta) R(\\tau)\\\\&=\\sum_\\tau P(\\tau;\\theta)\\nabla_\\theta\\log P(\\tau;\\theta)R(\\tau)\\\\&=\\mathbbE_\\tau\\sim\\pi_\\theta\\nabla_\\theta\\log P(\\tau;\\theta)R(\\tau)\\endaligned θJ(θ)=τθP(τ;θ)R(τ)=τP(τ;θ)P(τ;θ)θP(τ;θ)R(τ)=τP(τ;θ)θlogP(τ;θ)R(τ)=EτπθθlogP(τ;θ)R(τ)推导过程中使用了对数导数技巧,将 P ( τ ; θ ) P(\\tau ; \\theta) P(τ;θ)表示为对数的形式,从而可以方便的重写为:
∇ θ log ⁡ P ( τ ; θ ) = ∇ θ [ ∑ t = 0 T log ⁡ P ( s t + 1 ∣ s t , a t ) + ∑ t = 0 T log ⁡ π θ ( a t ∣ s t ) ] = ∑ t = 0 T ∇ θ log ⁡ π θ ( a t ∣ s t ) \\beginaligned\\nabla_\\theta \\log P(\\tau ; \\theta)&=\\nabla_\\theta\\left[\\sum_t=0^T \\log P\\left(s_t+1 \\mid s_t, a_t\\right)+\\sum_t=0^T \\log \\pi_\\theta\\left(a_t \\mid s_t\\right)\\right]\\\\&=\\sum_t=0^T \\nabla_\\theta\\log \\pi_\\theta(a_t \\mid s_t)\\endaligned θlogP(τ;θ)=θ[t=0TlogP(st+1st,at)+t=0Tlog以上是关于Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始的主要内容,如果未能解决你的问题,请参考以下文章

基于强化学习PPO(Proximal Policy Optimization)算法的无人机姿态控制系统

Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始

PPO姿态控制基于强化学习(Proximal Policy Optimization)PPO训练的无人机姿态控制simulink仿真

Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimizat

Proximal Algorithms 3 Interpretation

Proximal Algorithms 1 介绍