概述
一、TRPO优化目标公式建立
根据策略梯度方法,很难选择步长使参数更新向着策略变好的方向变化,如果步长不合适,可能导致越学越差致使系统崩溃。
如何选择一个合适的步长,或者说,如何找到新的策略使新的回报函数的值单调递增,或单调不减。这是TRPO解决的问题。
强化学习的回报函数定义为:
η
(
π
~
)
=
E
π
~
[
∑
t
=
0
∞
γ
t
(
r
(
s
t
)
)
]
eta(tilde{pi} )=E_{tilde{pi}}[sum_{t=0}^{infty}gamma^t(r(s_t))]
η(π~)=Eπ~[t=0∑∞γt(r(st))]
将新策略的回报函数拆分为,[旧策略回报函数+其他项]的方式,如果其他项>=0则,新的回报函数单调不减。如下所示
η
(
π
~
)
=
η
(
π
)
+
E
s
0
,
a
0
,
π
~
[
∑
t
=
0
∞
γ
t
A
π
(
s
t
,
a
t
)
]
(
1
)
eta(tilde{pi})=eta(pi)+E_{s_0,a_0,tilde{pi}}[sum_{t=0}^inftygamma^tA_pi(s_t,a_t)]qquad (1)
η(π~)=η(π)+Es0,a0,π~[t=0∑∞γtAπ(st,at)](1)
用
π
pi
π表示旧策略,
π
~
tildepi
π~表示新策略
A
π
(
s
,
a
)
=
Q
π
(
s
,
a
)
−
V
π
(
s
)
=
E
s
′
∼
P
(
s
′
∣
s
,
a
)
[
r
(
s
)
+
γ
V
π
(
s
′
)
−
V
π
(
s
)
]
begin{aligned} A_pi(s,a)&=Q_pi(s,a)-V_pi(s)\ &=E_{s'sim P(s'|s,a)}[r(s)+gamma V_pi(s')-V_pi(s)] end{aligned}
Aπ(s,a)=Qπ(s,a)−Vπ(s)=Es′∼P(s′∣s,a)[r(s)+γVπ(s′)−Vπ(s)]
给出(1)的证明:
E
π
~
[
∑
t
=
0
∞
γ
t
A
π
(
s
t
,
a
t
)
]
=
E
π
~
[
∑
t
=
0
∞
γ
t
(
r
(
s
t
)
+
γ
V
π
(
s
t
+
1
)
−
V
π
(
s
t
)
)
]
=
E
π
~
[
∑
t
=
0
∞
γ
t
r
(
s
t
)
]
+
E
π
~
[
∑
t
=
0
∞
γ
t
(
γ
V
π
(
s
t
+
1
)
−
V
π
(
s
t
)
)
]
=
E
π
~
[
∑
t
=
0
∞
γ
t
r
(
s
t
)
]
+
E
π
~
[
−
V
π
(
s
0
)
]
=
η
(
π
~
)
−
η
(
π
)
begin{aligned} E_{tilde pi}[sum_{t=0}^infty gamma^t A_{pi}(s_t,a_t)]&=E_{tilde pi}[sum_{t=0}^inftygamma^t(r(s_t)+gamma V_pi(s_{t+1})-V_{pi}(s_t))]\ &=E_{tilde pi}[sum_{t=0}^inftygamma^tr(s_t)]+E_{tilde pi}[sum_{t=0}^inftygamma^t(gamma V_pi(s_{t+1})-V_{pi}(s_t))]\ &=E_{tilde pi}[sum_{t=0}^inftygamma^tr(s_t)]+E_{tilde pi}[-V_{pi}(s_0)]\ &=eta(tilde pi) - eta(pi) end{aligned}
Eπ~[t=0∑∞γtAπ(st,at)]=Eπ~[t=0∑∞γt(r(st)+γVπ(st+1)−Vπ(st))]=Eπ~[t=0∑∞γtr(st)]+Eπ~[t=0∑∞γt(γVπ(st+1)−Vπ(st))]=Eπ~[t=0∑∞γtr(st)]+Eπ~[−Vπ(s0)]=η(π~)−η(π)
将(1)展开
η
(
π
~
)
=
η
(
π
)
+
∑
t
∞
∑
s
P
(
s
t
=
s
∣
π
~
)
∑
a
π
~
(
a
∣
s
)
γ
t
A
π
(
s
,
a
)
=
η
(
π
)
+
∑
s
ρ
π
~
(
s
)
∑
a
π
~
(
a
∣
s
)
A
π
(
s
,
a
)
(
2
)
begin{aligned} eta(tilde pi)& = eta(pi)+sum_t^{infty}sum_{s}P(s_t=s|tilde pi)sum_{a}tilde pi(a|s)gamma^tA_pi(s,a)\ &=eta(pi)+sum_{s}rho_{tilde pi(s)}sum_{a}tilde pi(a|s)A_pi(s,a)qquad (2) end{aligned}
η(π~)=η(π)+t∑∞s∑P(st=s∣π~)a∑π~(a∣s)γtAπ(s,a)=η(π)+s∑ρπ~(s)a∑π~(a∣s)Aπ(s,a)(2)
其中
ρ
π
~
(
s
)
=
∑
t
=
0
∞
γ
t
P
(
s
t
=
s
∣
π
~
)
rho_{tilde pi}(s) = sum_{t=0}^infty gamma^t P(s_t=s|tilde pi)
ρπ~(s)=∑t=0∞γtP(st=s∣π~)
技巧一
引入TRPO的第一个技巧对状态分布进行处理,我们忽略状态分布的变化,依然采用旧的策略所对应的状态分布。这个技巧是对原代价函数的一次近似。其实,当新旧参数很接近的时候,我们将用旧的状态分布替代新的状态分布是合理的。此时,原来的代价函数近似为:
η
(
π
~
)
=
η
(
π
)
+
∑
s
ρ
π
(
s
)
∑
a
π
~
(
a
∣
s
)
A
π
(
s
t
,
a
t
)
(
3
)
eta(tilde pi) = eta(pi) + sum_{s}rho_{pi}(s)sum_a tilde pi(a|s)A_pi(s_t,a_t) qquad (3)
η(π~)=η(π)+s∑ρπ(s)a∑π~(a∣s)Aπ(st,at)(3)
式(3)中,第二项策略部分,这时的动作是由新策略
π
~
tilde pi
π~产生的,可新策略是带参数
θ
theta
θ的,这个参数的是未知的,无法用来产生动作。此时引入TRPO的第二个技巧。
技巧二
TRPO第二个技巧是利用重要性采样对动作分布进行处理,后文将会介绍新旧策略之间的差异非常小,因此使用重要性采样能够取得非常好的效果
∑
a
π
~
(
a
∣
s
)
A
π
(
s
t
,
a
t
)
=
E
a
∼
q
(
a
∣
s
)
[
π
~
(
a
∣
s
)
q
(
a
∣
s
)
A
π
(
s
t
,
a
t
)
]
sum_a tilde pi(a|s)A_pi(s_t,a_t)=E_{asim q(a|s)}[frac{tilde pi(a|s)}{q(a|s)}A_pi(s_t,a_t)]
a∑π~(a∣s)Aπ(st,at)=Ea∼q(a∣s)[q(a∣s)π~(a∣s)Aπ(st,at)]
在将s求和写为期望形式如下:
L
π
(
π
~
)
=
η
(
π
)
+
E
s
∼
ρ
θ
o
l
d
(
s
)
,
a
∼
π
θ
o
l
d
(
a
∣
s
)
[
π
~
θ
(
a
∣
s
)
π
θ
o
l
d
(
a
∣
s
)
A
π
θ
o
l
d
(
s
t
,
a
t
)
]
(
4
)
L_pi(tilde pi) = eta(pi) +E_{ssim rho_{theta_{old}(s)},asim pi_{theta_{old}}(a|s)}[frac{tilde pi_theta(a|s)}{pi_{theta_{old}}(a|s)}A_{pi_{theta_{old}}}(s_t,a_t)]qquad (4)
Lπ(π~)=η(π)+Es∼ρθold(s),a∼πθold(a∣s)[πθold(a∣s)π~θ(a∣s)Aπθold(st,at)](4)
步长选择
我们观察一下(4)与(2)的区别,
L
π
(
π
~
)
L_pi(tilde pi)
Lπ(π~)与
η
(
π
~
)
eta(tilde pi)
η(π~)的区别就是状态分布不同,他们都是
π
~
tilde pi
π~的函数,他们在策略
π
θ
o
l
d
pi_{theta_{old}}
πθold处一阶近似,即:
L
π
θ
o
l
d
(
π
θ
o
l
d
)
=
η
(
π
θ
o
l
d
)
∇
θ
L
π
θ
o
l
d
(
π
)
∣
θ
=
θ
o
l
d
=
∇
θ
η
(
π
θ
)
∣
θ
=
θ
o
l
d
begin{aligned} L_{pi_{theta_{old}}}(pi_{theta_{old}})=eta(pi_{theta_{old}})\ nabla_{theta}L_{pi_{theta_{old}}}(pi)|_{theta=theta_{old}} = nabla_{theta}eta(pi_theta)|_{theta=theta_{old}} end{aligned}
Lπθold(πθold)=η(πθold)∇θLπθold(π)∣θ=θold=∇θη(πθ)∣θ=θold
如上所示,在
θ
o
l
d
theta_{old}
θold有限的范围内,两个目标函数相差十分近似,梯度也相同,因此可以用近似函数
L
π
θ
o
l
d
(
π
)
L_{pi_{theta_{old}}}(pi)
Lπθold(π)替代原先的目标函数。我们可以沿着近似函数的导数方向做有限步长的参数更新,同样可以提升策略梯度。
可问题是步长多大能够保证单调不减。既然近似函数与原目标函数是在策略附近一个很小的区域可以做到近似,那么就加入一个约束用于限定新旧策略的差异。如果把策略看做是一个概率分布,那么就可以使用KL散度表示两个分布之间的差异 D K L m a x ( π , π ~ ) = max s D K L ( π ( ⋅ ∣ s ) ∥ π ~ ( ⋅ ∣ s ) ) D_{KL}^{max}(pi,tilde pi)=max_s D_{KL}(pi(cdot|s)|tilde pi(cdot|s)) DKLmax(π,π~)=maxsDKL(π(⋅∣s)∥π~(⋅∣s)),并且原文中证明,当 π ~ = a r g m a x π ′ L π ( π ′ ) tilde pi = {rm argmax}_{pi'}L_pi(pi') π~=argmaxπ′Lπ(π′)时,下式成立
η
(
π
~
)
≥
L
π
(
π
~
)
−
C
×
D
K
L
m
a
x
(
π
,
π
~
)
w
h
e
r
e
C
=
2
ε
γ
(
1
−
γ
)
2
begin{aligned} eta({tilde pi} )ge L_{pi}(tilde pi)-Ctimes D_{KL}^{max}({pi},{tilde pi })\ where qquad C=frac{2varepsilon gamma}{(1-gamma)^2} end{aligned}
η(π~)≥Lπ(π~)−C×DKLmax(π,π~)whereC=(1−γ)22εγ
其中$ D_{KL}^{max}({pi},{tilde pi })$是KL散度,限制了策略模型更新前后的差异,则定义如下等式
M
i
(
π
)
=
L
π
i
(
π
)
−
C
×
D
K
L
m
a
x
(
π
i
,
π
)
M_i(pi) = L_{pi_i}(pi) - Ctimes D_{KL}^{max}(pi_i, pi)
Mi(π)=Lπi(π)−C×DKLmax(πi,π)
利用这个等式,我们证明策略的单调性
η
(
π
i
+
1
)
≥
M
i
(
π
i
+
1
)
η
(
π
i
)
=
M
i
(
π
i
)
begin{aligned} eta( pi_{i+1})ge M_i(pi_{i+1})\ eta(pi_i) = M_i(pi_{i}) end{aligned}
η(πi+1)≥Mi(πi+1)η(πi)=Mi(πi)
上两式相减得
η
(
π
i
+
1
)
−
η
(
π
i
)
≥
M
i
(
π
i
+
1
)
−
M
i
(
π
i
)
eta( pi_{i+1}) - eta(pi_i)ge M_i(pi_{i+1})- M_i(pi_{i})
η(πi+1)−η(πi)≥Mi(πi+1)−Mi(πi)
如上,要让值函数单调不减,则新策略
π
i
+
1
pi_{i+1}
πi+1能使得
M
i
M_i
Mi最大即可。该问题转化为优化问题为
max
θ
[
L
π
θ
o
l
d
(
π
θ
)
−
C
D
K
L
m
a
x
(
π
θ
o
l
d
,
π
θ
)
]
max_{theta}[L_{pi_{theta_{old}}}(pi_theta)-CD_{KL}^{max}(pi_{theta_{old}},pi_theta)]
θmax[Lπθold(πθ)−CDKLmax(πθold,πθ)]
上式直接优化KL散度,使得每一轮迭代的更新量很少,我们可以放宽KL散度的条件,将其写到约束中。并且如果利用惩罚因子C并使步长很小,问题可转化为
max
θ
E
s
∼
ρ
θ
o
l
d
,
a
∼
π
θ
o
l
d
[
π
θ
(
a
∣
s
)
π
θ
o
l
d
(
a
∣
s
)
A
π
θ
o
l
d
(
s
,
a
)
]
s
t
D
K
L
m
a
x
(
π
θ
o
l
d
,
π
θ
)
≤
δ
begin{aligned} max_{theta} E_{ssim rho_{theta_{old}},asim pi_{theta_{old}}}[frac{pi_{theta}(a|s)}{pi_{theta_{old}}(a|s)}A_{pi_{theta_{old}}}(s,a)]\ st quad D_{KL}^{max}(pi_{theta_{old}},pi_theta)le delta end{aligned}
θmaxEs∼ρθold,a∼πθold[πθold(a∣s)πθ(a∣s)Aπθold(s,a)]stDKLmax(πθold,πθ)≤δ
如上,将原代价函数的KL散度部分写到了约束中,虽然表面上看是对KL散度最大的状态S进行的约束,其实是对所有状态S的约束,这样优化方程的求解将变得非常复杂。为了便于运算,将max变为平均值,将约束条件放宽了,运算难度相应降低,但是实际优化效果并没有多大影响。
技巧三
在约束中,利用平均KL散度代替最大KL散度
s
t
D
ˉ
K
L
ρ
θ
o
l
d
(
π
θ
o
l
d
,
π
θ
)
≤
δ
st quad bar D_{KL}^{rho_{theta_{old}}}(pi_{theta_{old}},pi_theta)le delta
stDˉKLρθold(πθold,πθ)≤δ
其中
D
ˉ
K
L
ρ
θ
o
l
d
(
π
θ
o
l
d
,
π
θ
)
=
E
s
∼
ρ
θ
o
l
d
[
D
K
L
(
π
θ
o
l
d
(
⋅
∣
s
)
∥
π
θ
(
⋅
∣
s
)
)
]
bar D_{KL}^{rho_{theta_{old}}}(pi_{theta_{old}},pi_theta)=E_{ssimrho_{theta_{old}}}[D_{KL}(pi_{theta_{old}}(cdot|s)|pi_{theta}(cdot|s))]
DˉKLρθold(πθold,πθ)=Es∼ρθold[DKL(πθold(⋅∣s)∥πθ(⋅∣s))]
技巧四
s
∼
ρ
θ
o
l
d
→
s
∼
π
θ
o
l
d
ssim rho_{theta_{old}}to ssim pi_{theta_{old}}
s∼ρθold→s∼πθold
最终TRPO问题转化为
max
θ
E
s
∼
ρ
θ
o
l
d
,
a
∼
π
θ
o
l
d
[
π
θ
(
a
∣
s
)
π
θ
o
l
d
(
a
∣
s
)
A
π
θ
o
l
d
(
s
,
a
)
]
s
t
E
s
∼
ρ
θ
o
l
d
[
D
K
L
(
π
θ
o
l
d
(
⋅
∣
s
)
∣
∣
π
θ
(
⋅
∣
s
)
)
]
≤
δ
begin{aligned} max_{theta} E_{ssim rho_{theta_{old}},asim pi_{theta_{old}}}[frac{pi_{theta}(a|s)}{pi_{theta_{old}}(a|s)}A_{pi_{theta_{old}}}(s,a)]\ st quad E_{ssim rho_{theta_{old}}}[D_{KL}(pi_{theta_{old}}(cdot|s)||pi_{theta}(cdot|s))]le delta end{aligned}
θmaxEs∼ρθold,a∼πθold[πθold(a∣s)πθ(a∣s)Aπθold(s,a)]stEs∼ρθold[DKL(πθold(⋅∣s)∣∣πθ(⋅∣s))]≤δ
二、自然梯度法求解优化问题
1. 自然梯度法介绍
在一些优化问题中,常规的梯度下降法只对参数更新量进行量化,当优化问题参数的两个坐标轴的尺度差异比较大时,使用统一的学习率会产生问题,其中的某一个坐标可能发散,另一个坐标还无法收敛,这样就会产生模型更新不均匀的现象。自然梯度法就是为了解决这种情况而产生的。自然梯度法不简单的使用学习率对参数更新进行量化,而是对模型效果进行量化。这里不详细介绍。自然梯度法的目标函数
min
Δ
ω
f
(
ω
)
+
∇
ω
f
(
ω
)
Δ
ω
s
.
t
.
1
2
Δ
ω
T
I
f
ω
Δ
ω
≤
ϵ
begin{aligned} min_{Delta omega}f(omega)+nabla_{omega}f(omega)Delta omega\ s.t. qquadfrac{1}{2} Deltaomega^T I_{f_omega}Delta omegale epsilon end{aligned}
Δωminf(ω)+∇ωf(ω)Δωs.t.21ΔωTIfωΔω≤ϵ
其中
ω
omega
ω表示参数,
f
f
f表示待优化的函数,
I
f
ω
I_{f_omega}
Ifω表示Fisher信息矩阵。
2. 自然梯度法应用
下面我们将TRPO的目标函数转换为自然梯度法的标准形式,首先对目标函数进行一阶泰勒展开
L
π
o
l
d
(
π
)
=
L
π
o
l
d
(
π
;
θ
+
Δ
θ
)
≈
L
π
o
l
d
(
π
o
l
d
;
θ
o
l
d
)
+
∇
θ
L
π
o
l
d
(
π
;
θ
o
l
d
)
∣
π
=
π
o
l
d
(
Δ
θ
)
begin{aligned} L_{pi_{old}}(pi) &= L_{pi_{old}}(pi;theta+Delta theta)\ &approx L_{pi_{old}}(pi_{old};theta_{old}) + nabla_{theta} L_{pi_{old}}(pi;theta_{old})|_{pi=pi_{old}}(Delta theta) end{aligned}
Lπold(π)=Lπold(π;θ+Δθ)≈Lπold(πold;θold)+∇θLπold(π;θold)∣π=πold(Δθ)
对约束条件进行变化
D
K
L
(
π
o
l
d
∣
π
)
=
−
1
2
Δ
θ
T
E
π
o
l
d
[
∇
θ
2
log
π
(
θ
o
l
d
)
]
Δ
θ
D_{KL}(pi_{old}|pi)=-frac{1}{2}Deltatheta^TE_{pi_{old}}[nabla^2_thetalog pi(theta_{old})]Deltatheta
DKL(πold∣π)=−21ΔθTEπold[∇θ2logπ(θold)]Δθ
上式证明过程如下
D
K
L
(
f
(
ω
)
∥
f
(
ω
+
Δ
ω
)
)
=
E
f
ω
[
log
f
(
ω
)
f
(
ω
+
Δ
ω
)
]
=
E
f
ω
[
log
f
(
ω
)
−
log
f
(
ω
+
Δ
ω
)
]
≈
E
f
ω
[
log
f
(
ω
)
]
−
E
f
ω
[
log
f
(
ω
)
+
∇
ω
log
f
ω
(
ω
)
Δ
ω
+
1
2
Δ
ω
T
∇
ω
2
log
f
(
ω
)
Δ
ω
]
=
−
E
f
ω
[
∇
ω
log
f
ω
(
ω
)
Δ
ω
]
−
E
f
ω
[
1
2
Δ
ω
T
∇
ω
2
log
f
(
ω
)
Δ
ω
]
=
−
E
f
ω
[
1
2
Δ
ω
T
∇
ω
2
log
f
(
ω
)
Δ
ω
]
begin{aligned} D_{KL}(f(omega)|f(omega+Delta omega))&=E_{f_omega}[log frac{f(omega)}{f(omega+Deltaomega)}]\ &=E_{f_omega}[log f(omega)-log f(omega+Delta omega)]\ &approx E_{f_omega}[log f(omega)]-E_{f_omega}[log f(omega)+nabla_omegalog f_omega(omega)Delta omega+frac{1}{2}Deltaomega^Tnabla_omega^2log f(omega)Deltaomega]\ &=-E_{f_omega}[nabla_omegalog f_omega( omega)Deltaomega]-E_{f_omega}[frac{1}{2}Deltaomega^Tnabla_omega^2log f(omega)Deltaomega]\ &=-E_{f_omega}[frac{1}{2}Deltaomega^Tnabla_omega^2log f(omega)Deltaomega] end{aligned}
DKL(f(ω)∥f(ω+Δω))=Efω[logf(ω+Δω)f(ω)]=Efω[logf(ω)−logf(ω+Δω)]≈Efω[logf(ω)]−Efω[logf(ω)+∇ωlogfω(ω)Δω+21ΔωT∇ω2logf(ω)Δω]=−Efω[∇ωlogfω(ω)Δω]−Efω[21ΔωT∇ω2logf(ω)Δω]=−Efω[21ΔωT∇ω2logf(ω)Δω]
上式约等于是通过对第二项泰勒展开,最终结果的第一项可约减如下
E
f
ω
[
∇
ω
log
f
ω
(
ω
)
Δ
ω
]
=
∫
ω
f
(
ω
)
∇
ω
log
f
ω
(
ω
)
Δ
ω
d
ω
=
∫
ω
f
(
ω
)
∇
ω
f
ω
(
ω
)
f
ω
(
ω
)
Δ
ω
d
ω
=
Δ
ω
∫
ω
∇
ω
f
ω
(
ω
)
d
ω
=
Δ
ω
∇
ω
∫
ω
f
ω
(
ω
)
d
ω
=
Δ
ω
∇
ω
1
=
0
begin{aligned} E_{f_omega}[nabla_omegalog f_omega( omega)Deltaomega]&=int_omega f(omega)nabla_omegalog f_omega( omega)Deltaomega domega \ &=int_omega f(omega)frac{nabla_omega f_omega( omega)}{f_omega( omega)} Deltaomega domega \ &=Deltaomega int_omega nabla_omega f_omega( omega)domega\ &=Deltaomega nabla_omega int_omega f_omega( omega)domega\ &=Deltaomega nabla_omega1\ &=0 end{aligned}
Efω[∇ωlogfω(ω)Δω]=∫ωf(ω)∇ωlogfω(ω)Δωdω=∫ωf(ω)fω(ω)∇ωfω(ω)Δωdω=Δω∫ω∇ωfω(ω)dω=Δω∇ω∫ωfω(ω)dω=Δω∇ω1=0
约束条件最终变为
D
‾
K
L
ρ
π
o
l
d
(
π
o
l
d
,
π
)
=
D
‾
K
L
ρ
π
o
l
d
(
π
(
θ
o
l
d
)
,
π
(
θ
o
l
d
+
Δ
θ
)
)
=
E
s
∼
ρ
π
o
l
d
[
D
K
L
(
π
(
θ
o
l
d
∣
s
)
∥
π
(
θ
o
l
d
+
Δ
θ
∣
s
)
)
]
=
E
s
∼
ρ
π
o
l
d
[
−
1
2
Δ
θ
T
E
π
o
l
d
[
∇
θ
2
log
π
(
θ
o
l
d
)
]
Δ
θ
]
begin{aligned} overline D_{KL}^{rho_{pi_{old}}}(pi_{old},pi)&=overline D_{KL}^{rho_{pi_{old}}}(pi(theta_{old}),pi(theta_{old}+Delta theta))\ &=E_{ssimrho_{pi_{old}}}[D_{KL}(pi(theta_{old}|s)|pi(theta_{old}+Deltatheta|s))]\ &=E_{ssimrho_{pi_{old}}}[-frac{1}{2}Deltatheta^TE_{pi_{old}}[nabla^2_thetalog pi(theta_{old})]Deltatheta] end{aligned}
DKLρπold(πold,π)=DKLρπold(π(θold),π(θold+Δθ))=Es∼ρπold[DKL(π(θold∣s)∥π(θold+Δθ∣s))]=Es∼ρπold[−21ΔθTEπold[∇θ2logπ(θold)]Δθ]
又因为
I
π
θ
o
l
d
=
−
E
π
o
l
d
[
∇
θ
2
log
π
(
θ
o
l
d
)
]
I_{pi_{theta_{old}}}=-E_{pi_{old}}[nabla^2_thetalog pi(theta_{old})]
Iπθold=−Eπold[∇θ2logπ(θold)]上式可以进一步化简为
D
‾
K
L
ρ
π
o
l
d
(
π
o
l
d
,
π
)
=
E
s
∼
ρ
π
o
l
d
[
1
2
Δ
θ
T
I
π
θ
o
l
d
Δ
θ
]
=
1
N
∑
i
=
1
N
1
2
Δ
θ
T
I
π
θ
o
l
d
(
s
i
)
Δ
θ
=
1
2
Δ
θ
T
[
1
N
∑
i
=
1
N
I
π
θ
o
l
d
(
s
i
)
]
Δ
θ
begin{aligned} overline D_{KL}^{rho_{pi_{old}}}(pi_{old},pi)&=E_{ssimrho_{pi_{old}}}[frac{1}{2}Deltatheta^TI_{pi_{theta_{old}}}Deltatheta]\ &=frac{1}{N}sum_{i=1}^Nfrac{1}{2}Deltatheta^TI_{pi_{theta_{old}}}(s_i)Deltatheta\ &=frac{1}{2}Deltatheta^T[frac{1}{N}sum_{i=1}^NI_{pi_{theta_{old}}}(s_i)]Deltatheta\ end{aligned}
DKLρπold(πold,π)=Es∼ρπold[21ΔθTIπθoldΔθ]=N1i=1∑N21ΔθTIπθold(si)Δθ=21ΔθT[N1i=1∑NIπθold(si)]Δθ
令
A
(
θ
o
l
d
)
=
1
N
∑
i
=
1
N
I
π
θ
o
l
d
(
s
i
)
A(theta_{old})=frac{1}{N}sum_{i=1}^NI_{pi_{theta_{old}}}(s_i)
A(θold)=N1∑i=1NIπθold(si),最终TRPO优化问题可写为
max
Δ
θ
∇
θ
L
π
o
l
d
(
π
;
θ
o
l
d
)
∣
π
=
π
o
l
d
(
Δ
θ
)
s
.
t
.
1
2
Δ
θ
T
A
(
θ
o
l
d
)
Δ
θ
≤
ϵ
begin{aligned} max_{Deltatheta}nabla_{theta}L_{pi_{old}}(pi;theta_{old})|_{pi=pi_{old}}(Deltatheta)\ s.t.qquadfrac{1}{2}Deltatheta^TA(theta_{old})Deltathetaleepsilon end{aligned}
Δθmax∇θLπold(π;θold)∣π=πold(Δθ)s.t.21ΔθTA(θold)Δθ≤ϵ
上述将TRPO问题化为了一个标准的自然梯度法形式。下面介绍上述优化问题的求解算法。
3. 共轭梯度法求解
上述问题采用拉格朗日乘子法可以得到模型更新量的解析形式
A
(
θ
o
l
d
)
Δ
θ
=
∇
θ
L
π
o
l
d
A(theta_{old})Deltatheta=nabla_{theta}L_{pi_{old}}
A(θold)Δθ=∇θLπold
上述问题需要计算Fisher信息矩阵
A
(
θ
o
l
d
)
A(theta_{old})
A(θold)的逆矩阵,但是逆矩阵的计算量非常大,会降低模型的训练速度。我们更想用迭代的方式进行求解,共轭梯度法就是一个非常好的工具。
我们知道共轭梯度法就是用来求解形如
A
x
=
g
Ax=g
Ax=g这样的问题,只要直接使用共轭梯度法就可求解。但是其中可以用到一个简化计算的小技巧。在共轭梯度法的每一轮迭代中,优化步长为
α
k
=
r
k
T
r
k
p
k
T
A
(
θ
o
l
d
)
p
k
alpha_k=frac{r_k^Tr_k}{p_k^TA(theta_{old})p_k}
αk=pkTA(θold)pkrkTrk
虽然每次迭代
A
A
A只进行一次计算,但是还是会带来非常大的计算量。矩阵
A
A
A和向量
p
k
p_k
pk进行乘法会得到一个向量,向量的每一个值是通过矩阵的行向量与
p
k
p_k
pk相乘得到的,我们可以将这个过程进行分解
(
A
p
)
[
i
]
=
∑
j
=
1
N
(
∂
∂
θ
i
∂
∂
θ
j
f
(
π
θ
)
)
[
i
,
j
]
×
p
[
j
]
=
∂
∂
θ
i
∑
j
=
1
N
(
∂
∂
θ
j
f
(
π
θ
)
)
[
j
]
×
p
[
j
]
begin{aligned} (Ap)[i]&=sum_{j=1}^N(frac{partial}{partial theta_i}frac{partial}{partialtheta_{j}}f(pi_{theta}))[i,j]times p[j]\ &=frac{partial}{partial theta_i}sum_{j=1}^N(frac{partial}{partialtheta_{j}}f(pi_{theta}))[j]times p[j]\ end{aligned}
(Ap)[i]=j=1∑N(∂θi∂∂θj∂f(πθ))[i,j]×p[j]=∂θi∂j=1∑N(∂θj∂f(πθ))[j]×p[j]
上述方法将一个二阶导问题化为了两个一阶导问题,大大降低了运算量,提高了计算速度。
通过共轭梯度法可以求出更新方向,但是在使用拉格朗日乘子法时,我们忽略了拉格朗日乘子的大小,只计算出了参数更新方向,下面我们求取参数更新步长。
4. 置信区域计算步长
在自然梯度法优化的标准形式中,我们定义了一个二阶约束,这个约束条件定义为参数更新的置信区域,一定程度上反映了模型更新前后的差距,通过这个约束,我们可以确定每一次的更新步长。假设刚求出的参数更新方向为
s
s
s,现在令最大步长为
β
beta
β,代入约束得
1
2
(
β
s
)
T
A
(
θ
o
l
d
)
(
β
s
)
≤
ϵ
β
≤
2
ϵ
1
N
∑
n
=
1
N
s
T
A
(
θ
o
l
d
)
s
begin{aligned} frac{1}{2}(beta s)^TA(theta_{old})(beta s)leepsilon\ betalesqrt{frac{2epsilon}{frac{1}{N}sum_{n=1}^Ns^TA(theta_{old})s}} end{aligned}
21(βs)TA(θold)(βs)≤ϵβ≤N1∑n=1NsTA(θold)s2ϵ
上述根号下分母也可以采用两个一阶导替代二阶导的方法计算。步长的选取方法为:先将
β
beta
β代入尝试,观察策略是否提升,如果提升了则选取步长结束;如果策略没有提升,则将步长减少一半,才进行测试,直到满足要求为止。
最后
以上就是仁爱奇异果为你收集整理的【强化学习】随机策略梯度强化学习-TRPO置信域策略优化推导分析《Trust Region Policy Optimization》的全部内容,希望文章能够帮你解决【强化学习】随机策略梯度强化学习-TRPO置信域策略优化推导分析《Trust Region Policy Optimization》所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复