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 从价值近似到策略近似
强化学习算法可以分为两大类:基于值函数的强化学习和基于策略的强化学习。
基于值函数的强化学习通过递归地求解贝尔曼方程来维护Q值函数(可以是离散的列表,也可以是神经网络),每次选择动作时会选择该状态下对应Q值最大的动作,使得未来积累的期望奖励值最大。经典的基于值函数的强化学习算法有Q-Learning、SARSA、DQN算法等。这些算法在学习后的Q值函数不再发生变化,每次做出的策略也是一定的,可以理解为确定性策略。基于策略的强化学习不再通过价值函数来确定选择动作的策略,而是直接学习策略本身,通过一组参数 θ \\theta θ对策略进行参数化,并通过神经网络方法优化 θ \\theta θ。
基于策略的强化学习用参数化概率分布 π θ ( a ∣ s ) = P ( a ∣ s ; θ ) \\pi_\\theta(a|s)=P(a|s;\\theta) πθ(a∣s)=P(a∣s;θ)代替了基于值函数的强化学习中的确定性策略 π : s → a \\pi:s \\to a π:s→a,在返回的动作概率列表中对不同的动作进行抽样选择。
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)
πθ(a∣s)下发生的概率定义为:
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=0∏TP(st+1∣st,at)⋅πθ(at∣st)]表示为状态转移概率和动作选择概率的乘积,因为状态和动作决定轨迹。
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=0∑TlogP(st+1∣st,at)+t=0∑Tlog以上是关于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