【强化学习】PPO:近端策略优化算法
论文地址:https://arxiv.org/pdf/1707.06347.pdf
一、 置信域方法(Trust Region Methods)
? 设
π
θ
o
l
d
\pi_{\theta_{old}}
πθold??是先前参数为
θ
o
l
d
\theta_{old}
θold?的策略网络,
π
θ
\pi_{\theta}
πθ?则是当前待优化的策略网络,则TRPO的优化目标是:
maximize
θ
E
^
t
[
π
θ
(
a
t
∣
s
t
)
π
θ
o
l
d
(
a
t
∣
s
t
)
A
^
t
]
subject
??
to
E
^
t
[
KL
[
π
θ
o
l
d
(
?
∣
s
t
)
,
π
θ
(
?
∣
s
t
)
]
]
≤
δ
\begin{align} &\mathop{\text{maximize}}_{\theta}\quad\hat{\mathbb{E}}_t\Big[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t \Big] \\ &\mathop{\text{subject}\;\text{to}}\quad\hat{\mathbb{E}}_t[\text{KL}[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]]\leq\delta \end{align}
?maximizeθ?E^t?[πθold??(at?∣st?)πθ?(at?∣st?)?A^t?]subjecttoE^t?[KL[πθold??(?∣st?),πθ?(?∣st?)]]≤δ??
其中,
A
^
t
\hat{A}_t
A^t?是
t
t
t时刻的优势函数估计值。
r
t
(
θ
)
=
π
θ
(
a
t
∣
s
t
)
π
θ
o
l
d
(
a
t
∣
s
t
)
r_t(\theta)=\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}
rt?(θ)=πθold??(at?∣st?)πθ?(at?∣st?)?是用来控制新旧策略的差异,若差异到则会增加更新幅度,反之则降低更新幅度。约束条件则是新旧策略函数的KL散度,该约束会控制新旧策略的差距不会太大。但是,求解这个带约束的优化问题实现复杂且计算量大。
? 理论上证明TRPO在实践中,建议使用惩罚项而不是约束,即转换为无约束优化问题。
maximize
θ
E
^
t
[
π
θ
(
a
t
∣
s
t
)
π
θ
o
l
d
(
a
t
∣
s
t
)
A
^
t
?
β
KL
[
π
θ
o
l
d
(
?
∣
s
t
)
,
π
θ
(
?
∣
s
t
)
]
]
\mathop{\text{maximize}}_{\theta}\quad\hat{\mathbb{E}}_t\Big[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t-\beta\text{KL}[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]\Big]
maximizeθ?E^t?[πθold??(at?∣st?)πθ?(at?∣st?)?A^t??βKL[πθold??(?∣st?),πθ?(?∣st?)]]
其中,
β
\beta
β是超参数。TRPO使用硬约束而不是惩罚项,是因为很难选择单个
β
\beta
β在所有不同问题上均表现良好。实验也表明,简单选择固定的惩罚系数
β
\beta
β并用SGD优化惩罚目标是不够的,需要额外的修改。
二、Clipped Surrogate Objective
? 由于
r
t
(
θ
)
=
π
θ
(
a
t
∣
s
t
)
π
θ
o
l
d
(
a
t
∣
s
t
)
r_t(\theta)=\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}
rt?(θ)=πθold??(at?∣st?)πθ?(at?∣st?)?,显然
r
t
(
θ
o
l
d
)
=
1
r_t(\theta_{old})=1
rt?(θold?)=1。TRPO最大化”代理“目标函数:
L
CPI
(
θ
)
=
E
^
t
[
π
θ
(
a
t
∣
s
t
)
π
θ
o
l
d
(
a
t
∣
s
t
)
A
^
t
]
=
E
^
t
[
r
t
(
θ
)
A
^
t
]
L^{\text{CPI}}(\theta)=\hat{\mathbb{E}}_t\Big[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t\Big]=\hat{\mathbb{E}}_t[r_t(\theta)\hat{A}_t]
LCPI(θ)=E^t?[πθold??(at?∣st?)πθ?(at?∣st?)?A^t?]=E^t?[rt?(θ)A^t?]
在没有约束的情况下,最大化
L
CPI
L^{\text{CPI}}
LCPI有可能会大幅度更新策略;因此,需要修改目标函数来惩罚
r
t
(
θ
)
r_t(\theta)
rt?(θ)远离1。
? 因此提出目标函数
L
CLIP
(
θ
)
=
E
^
t
[
min
?
(
r
t
(
θ
)
A
^
t
,
clip
(
r
t
(
θ
)
,
1
?
?
,
1
+
?
)
A
^
t
]
L^{\text{CLIP}}(\theta)=\hat{\mathbb{E}}_t\Big[\min(r_t(\theta)\hat{A}_t,\text{clip}(r_t(\theta),1-\epsilon,1+\epsilon)\hat{A}_t\Big]
LCLIP(θ)=E^t?[min(rt?(θ)A^t?,clip(rt?(θ),1??,1+?)A^t?]
?
\epsilon
?截断超参数,通常设置为0.2。
clip()
\text{clip()}
clip()代表截断函数,负责将
r
t
r_t
rt?限制在
[
1
?
?
,
1
+
?
]
[1-\epsilon,1+\epsilon]
[1??,1+?],以保证收敛性。最后,使用无截断和截断目标函数的最小值,从而形成未截断目标函数的下界。
? 优势函数A可以分为正负两种情况。若优势函数为正,当
r
t
>
1
+
?
r_t>1+\epsilon
rt?>1+?时,将不提供额外的奖励;若优势函数为负,当
r
t
<
1
?
?
r_t<1-\epsilon
rt?<1??时,同样不提供额外的奖励,这样就能限制新旧策略的差异。
三、自适应KL惩罚系数
? 另一种代替或者补充clipped surrogate objective的方案是使用KL散度惩罚,并调整惩罚系数,每次策略更新时使得KL散度 d targ d_{\text{targ}} dtarg?达到某个目标值。在作者的实验中,KL惩罚的表现要差于clipped surrogate objective,但其可以作为重要的baseline。
? 在每次策略更新中执行下面的步骤:
-
利用若干个minibatch SGD的epochs,优化KL惩罚目标
L KLPEN ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t ? β KL [ π θ o l d ( ? ∣ s t ) , π θ ( ? ∣ s t ) ] ] L^{\text{KLPEN}}(\theta)=\hat{\mathbb{E}}_t\Big[\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}\hat{A}_t-\beta\text{KL}[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]\Big] LKLPEN(θ)=E^t?[πθold??(at?∣st?)πθ?(at?∣st?)?A^t??βKL[πθold??(?∣st?),πθ?(?∣st?)]] -
计算 d = E ^ t [ KL [ π θ o l d ( ? ∣ s t ) , π θ ( ? ∣ s t ) ] ] d=\hat{\mathbb{E}}_t[\text{KL}[\pi_{\theta_{old}}(\cdot|s_t),\pi_{\theta}(\cdot|s_t)]] d=E^t?[KL[πθold??(?∣st?),πθ?(?∣st?)]]
若 d < d targ / 1.5 , β ← β / 2 d<d_{\text{targ}}/1.5,\beta\leftarrow\beta/2 d<dtarg?/1.5,β←β/2
若 d > d targ × 1.5 , β ← β × 2 d>d_{\text{targ}}\times1.5,\beta\leftarrow\beta\times 2 d>dtarg?×1.5,β←β×2
? 更新后的 β \beta β用于下一次的策略更新。
四、完整算法
? 前面推导的surrogate损失函数能够在典型的策略梯度上简单改动即可实现。大多数的优势函数都使用一个可学习的状态价值函数
V
(
s
)
V(s)
V(s)。若策略网络和价值网络共享神经网络架构,那么需要使用一个结合了策略函数和值函数误差项的损失函数。目标函数可以进一步添加熵正则来确保充分的探索。合并这些项,就能够获得下面的目标函数:
L
CLIP+VF+S
(
θ
)
=
E
^
t
[
L
t
CLIP
(
θ
)
?
c
1
L
t
VF
(
θ
)
+
c
2
S
[
π
θ
]
(
s
t
)
]
L^{\text{CLIP+VF+S}}(\theta)=\hat{\mathbb{E}}_t[L_t^{\text{CLIP}}(\theta)-c_1L_t^{\text{VF}}(\theta)+c_2S[\pi_{\theta}](s_t)]
LCLIP+VF+S(θ)=E^t?[LtCLIP?(θ)?c1?LtVF?(θ)+c2?S[πθ?](st?)]
其中,
c
1
c_1
c1?和
c
2
c_2
c2?是控制各个项比例的超参数,
S
S
S是熵正则项,
L
t
SF
L^{\text{SF}}_t
LtSF?是均方误差损失
(
V
θ
(
s
t
)
?
V
t
targ
)
2
(V_{\theta}(s_t)-V_t^{\text{targ}})^2
(Vθ?(st?)?Vttarg?)2。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!