策略梯度算法(PG)
策略梯度迭代,通过计算策略梯度的估计,并利用随机梯度上升算法进行迭代。其常用的梯度估计形式为:
E
^
t
[
∇
θ
l
o
g
π
θ
(
a
t
∣
s
t
)
A
^
t
]
hat{mathbb{E}}_t[
abla_ heta log pi_ heta(a_t | s_t)hat{A}_t]
E^t[∇θlogπθ(at∣st)A^t]
其中
π
θ
pi_ heta
πθ为随机策略,
A
^
t
hat{A}_t
A^t是优势函数在时间步t的估计,其损失函数为:
L
P
G
(
θ
)
=
E
^
t
[
l
o
g
π
θ
(
a
t
∣
s
t
)
A
^
t
]
L^{PG}( heta)=hat{mathbb{E}}_t[log_{pi_ heta}(a_t|s_t)hat{A}_t]
LPG(θ)=E^t[logπθ(at∣st)A^t]
信赖域策略优化(TRPO)
TRPO要优化的目标函数如下:
m
a
x
i
m
i
z
e
θ
E
^
[
π
θ
(
a
t
∣
s
t
)
π
θ
o
l
d
(
a
t
∣
s
t
)
A
^
t
]
maximize_ heta hat{mathbb{E}}[frac{pi_{ heta(a_t|s_t)}}{pi_{ heta_{old}}(a_t|s_t)}hat{A}_t]
maximizeθE^[πθold(at∣st)πθ(at∣st)A^t]
s
u
b
j
e
c
t
t
o
E
t
^
[
K
L
[
π
θ
o
l
d
(
⋅
∣
s
t
)
∣
∣
π
θ
(
⋅
∣
s
t
)
]
]
≤
U
subject to hat{mathbb{E}_t}[KL[pi_{ heta_{old}}(·|s_t)||pi_ heta(·|s_t)]] leq U
subject to Et^[KL[πθold(⋅∣st)∣∣πθ(⋅∣st)]]≤U
*端策略优化算法(PPO)
截断替代目标(PPO1)
令
r
t
(
θ
)
=
π
θ
(
a
t
∣
s
t
)
π
o
l
d
(
a
t
∣
s
t
)
r_t({ heta})=frac{pi_{ heta(a_t|s_t)}}{pi_{old}(a_t|s_t)}
rt(θ)=πold(at∣st)πθ(at∣st),那么
r
t
(
θ
o
l
d
)
=
1
r_t( heta_{old})=1
rt(θold)=1。TRPO把目标函数替换为:
L
C
P
L
(
θ
)
=
E
^
[
π
θ
(
a
t
∣
s
t
)
π
θ
o
l
d
(
a
t
∣
s
t
)
A
^
t
]
=
E
^
t
[
r
t
(
θ
)
A
^
t
]
L^{CPL}( heta) =hat{mathbb{E}}[frac{pi_{ heta(a_t|s_t)}}{pi_{ heta_{old}}(a_t|s_t)}hat{A}_t]=hat{mathbb{E}}_t[r_t( heta)hat{A}_t]
LCPL(θ)=E^[πθold(at∣st)πθ(at∣st)A^t]=E^t[rt(θ)A^t]
L
C
P
L
L^{CPL}
LCPL指的是前述TRPO中的保守策略迭代,如果不加约束,最大化
L
C
P
L
L^{CPL}
LCPL会产生较大幅度的梯度更新。为了惩罚策略的变化(使得
r
t
(
θ
)
r_t( heta)
rt(θ)远离1,新旧策略的KL散度不能太大),使用了以下的目标函数:
L
C
L
I
P
(
θ
)
=
E
^
[
m
i
n
(
r
t
(
θ
)
A
^
t
,
c
l
i
p
(
r
t
(
θ
)
,
1
−
ϵ
,
1
+
ϵ
)
A
^
t
)
]
L^{CLIP}( heta)=hat{mathbb{E}}[min(r_t( heta)hat{A}_t, clip(r_t({ heta}),1-epsilon, 1+epsilon)hat{A}_t)]
LCLIP(θ)=E^[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
原论文中取
ϵ
=
0.2
epsilon=0.2
ϵ=0.2,直观示意图如下:
即:
当A>0时,如果 r t ( θ ) > 1 + ϵ r_t( heta)>1+epsilon rt(θ)>1+ϵ,则 L C L I P ( θ ) = ( 1 + ϵ ) A ^ t L^{CLIP}( heta)=(1+epsilon)hat{A}_t LCLIP(θ)=(1+ϵ)A^t;如果 r t ( θ ) < 1 + ϵ r_t( heta)<1+epsilon rt(θ)<1+ϵ,则 L C L I P ( θ ) = r t ( θ ) A ^ t L^{CLIP}( heta)=r_t( heta)hat{A}_t LCLIP(θ)=rt(θ)A^t;
当A<0时,如果 r t ( θ ) > 1 − ϵ r_t( heta)>1-epsilon rt(θ)>1−ϵ,则 L C L I P ( θ ) = r t ( θ ) A ^ t L^{CLIP}( heta)=r_t( heta)hat{A}_t LCLIP(θ)=rt(θ)A^t;如果 r t ( θ ) < 1 − ϵ r_t( heta)<1-epsilon rt(θ)<1−ϵ,则 L C L I P ( θ ) = ( 1 − ϵ ) A ^ t L^{CLIP}( heta)=(1-epsilon)hat{A}_t LCLIP(θ)=(1−ϵ)A^t;
自适应KL惩罚系数 (PPO2)
在TRPO中,使用"自适应惩罚系数" β eta β来约束KL散度,在该算法的最简单实例中,在每一步策略更新中执行以下步骤:
-
使用多个minibatch SGD,优化KL惩罚的目标
L K L P E N ( θ ) = E ^ t [ π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) A ^ t − β K L [ π θ o l d ( ⋅ ∣ s t ) , π ( ⋅ ∣ s t ) ] ] L^{KLPEN}( heta)=hat{mathbb{E}}_t[frac{pi_{ heta(a_t|s_t)}}{pi_{ heta_{old}}}(a_t|s_t)hat{A}_t-eta KL[pi_{ heta_{old}}(·|s_t), pi(·|s_t)]] LKLPEN(θ)=E^t[πθoldπθ(at∣st)(at∣st)A^t−βKL[πθold(⋅∣st),π(⋅∣st)]] -
计算 d = E ^ [ K L [ π θ o l d ( ⋅ ∣ s t ) , π ( ⋅ ∣ s t ) ] ] d=hat{mathbb{E}}[KL[pi_{ heta_{old}}(·|s_t), pi(·|s_t)]] d=E^[KL[πθold(⋅∣st),π(⋅∣st)]]
如果
d
<
d
t
a
r
g
/
1.5
,
β
<
−
β
/
2
d<d_{targ}/1.5, eta <-eta/2
d<dtarg/1.5,β<−β/2
如果
d
>
d
t
a
r
g
∗
1.5
,
β
<
−
β
∗
2
d>d_{targ}*1.5, eta<-eta*2
d>dtarg∗1.5,β<−β∗2
实验中,PPO2的效果可能没有PPO1的效果好。
更复杂的版本
L
t
C
L
I
P
+
V
F
+
S
(
θ
)
=
E
^
t
[
L
t
C
L
I
P
(
θ
)
−
c
1
L
t
V
F
(
θ
)
]
+
c
2
S
[
π
θ
]
(
s
t
)
]
L_t^{CLIP+VF+S}( heta) = hat{E}_t[L_t^{CLIP}( heta)-c_1L_t^{VF}( heta)]+c_2 S[pi_{ heta}](s_t)]
LtCLIP+VF+S(θ)=E^t[LtCLIP(θ)−c1LtVF(θ)]+c2S[πθ](st)]
其中
c
1
c1
c1,
c
2
c2
c2是系数,
S
S
S表示熵奖励,
L
t
V
F
L_t^{VF}
LtVF是平方误差损失
(
V
θ
(
s
t
)
−
V
t
t
a
r
g
)
2
(V_ heta(s_t)-V_t^{targ})^2
(Vθ(st)−Vttarg)2
优势估计函数为
A
^
t
=
−
V
(
s
t
)
+
r
t
+
γ
r
t
+
1
+
.
.
.
+
γ
T
−
t
+
1
r
T
−
1
+
γ
T
−
t
V
(
s
T
)
hat{A}_t = -V(s_t)+r_t+gamma r_{t+1}+...+gamma^{T-t+1}r_{T-1}+gamma^{T-t}V(s^T)
A^t=−V(st)+rt+γrt+1+...+γT−t+1rT−1+γT−tV(sT)
另外,我们可以使用广义优势函数来扩广
A
^
t
hat{A}_t
A^t,当
λ
=
1
lambda=1
λ=1时,它趋*于上面的等式
A
^
t
=
δ
+
(
γ
λ
)
δ
t
+
1
+
.
.
.
+
.
.
.
+
γ
λ
T
−
t
+
1
δ
T
−
1
hat{A}_t=delta+(gammalambda)delta_{t+1}+...+...+{gammalambda^{T-t+1}}delta_{T-1}
A^t=δ+(γλ)δt+1+...+...+γλT−t+1δT−1
w
h
e
r
e
δ
t
=
r
t
+
γ
V
(
s
t
+
1
−
V
(
s
t
)
)
where delta_t = r_t+gamma V(s_{t+1}-V(s_t))
where δt=rt+γV(st+1−V(st))
使用固定长度轨迹的*端策略优化(PPO)算法
如下所示:
A
l
g
o
r
i
t
h
m
P
P
O
,
A
c
t
o
r
−
C
r
i
t
i
c
S
t
y
l
e
Algorithm PPO, Actor-Critic Style
Algorithm PPO,Actor−Critic Style
f
o
r
i
t
e
r
a
t
i
o
n
=
1
,
2
,
.
.
.
,
d
o
for iteration=1,2,...,do
for iteration=1,2,...,do
f
o
r
a
c
t
o
r
=
1
,
2
,
.
.
.
,
N
,
d
o
qquad for actor=1,2,...,N, do
for actor=1,2,...,N,do
R
u
n
p
o
l
i
c
y
π
θ
o
l
d
qquad qquad Run policy pi_{ heta_{old}}
Run policy πθold in environment for T timesteps
C
o
m
p
u
t
e
a
d
v
a
n
t
a
g
e
e
s
t
i
m
a
t
e
s
A
^
1
,
.
.
.
,
A
^
T
qquad qquad Compute advantage estimates hat{A}_1,...,hat{A}_{T}
Compute advantage estimatesA^1,...,A^T
e
n
d
f
o
r
qquad end for
endfor
O
p
t
i
m
i
z
e
s
u
r
r
o
g
a
t
e
L
w
r
t
θ
,
w
i
t
h
K
e
p
o
c
h
s
a
n
d
m
i
n
i
b
a
t
c
h
s
i
z
e
M
<
=
N
T
Optimize surrogate L wrt heta, with K epochs and minibatch size M <= NT
Optimize surrogate L wrt θ,with K epochs and minibatch size M<=NT
e
n
d
f
o
r
end for
end for
推荐阅读:
李宏毅机器学*系列-强化学*之*端策略优化PPO
该博文从Import Sampling的角度叙述了PPO的演化。
个人认为写得最好的TRPO讲解
该博文从数学方面叙述了PPO的推导。