视频链接:https://www.youtube.com/watch?v=fcSYiyvPjm4&list=PLp0tvPwd1T7AD822A9tJ-jfQnMtSKh_Rz&index=3&ab_channel=ShusenWang
TRPO算法重复着两个步骤:
- 近似:我们构建一个
L
(
θ
∣
θ
o
l
d
)
L(\theta|\theta_{old})
L(θ∣θold?)函数,在信赖域内近似于价值函数
J
(
θ
)
J(\theta)
J(θ)。
- 最大化:在信赖域内,找到一组新的参数,使得
L
(
θ
∣
θ
o
l
d
)
L(\theta|\theta_{old})
L(θ∣θold?)最大化。
近似:
V
π
(
s
)
=
∑
a
π
(
a
∣
s
;
θ
)
?
Q
π
(
s
,
a
)
=
∑
a
π
(
a
∣
s
;
θ
o
l
d
)
π
(
a
∣
s
;
θ
)
π
(
a
∣
s
;
θ
o
l
d
)
?
Q
π
(
s
,
a
)
=
E
A
~
π
(
a
∣
s
;
θ
o
l
d
)
[
π
(
a
∣
s
;
θ
)
π
(
a
∣
s
;
θ
o
l
d
)
?
Q
π
(
s
,
a
)
]
V_{\pi}(s) = \sum_a \pi(a|s;\theta) * Q_{\pi}(s,a) \\ = \sum_a \pi(a|s;\theta_{old})\frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{old})} * Q_{\pi}(s,a) \\ = E_{A~\pi(a|s;\theta_{old})}[\frac{\pi(a|s;\theta)}{\pi(a|s;\theta_{old})} * Q_{\pi}(s,a)]
Vπ?(s)=a∑?π(a∣s;θ)?Qπ?(s,a)=a∑?π(a∣s;θold?)π(a∣s;θold?)π(a∣s;θ)??Qπ?(s,a)=EA~π(a∣s;θold?)?[π(a∣s;θold?)π(a∣s;θ)??Qπ?(s,a)]
J
(
θ
)
=
E
S
[
V
π
(
S
)
]
=
E
S
,
A
[
π
(
A
∣
S
;
θ
)
π
(
A
∣
S
;
θ
o
l
d
)
?
Q
π
(
S
,
A
)
]
J(\theta) = E_S[V_{\pi}(S)] \\ = E_{S,A}[\frac{\pi(A|S;\theta)}{\pi(A|S;\theta_{old})} * Q_{\pi}(S,A)]
J(θ)=ES?[Vπ?(S)]=ES,A?[π(A∣S;θold?)π(A∣S;θ)??Qπ?(S,A)]
这是TRPO的最重要的公式。
在实际运用中,我们做蒙特卡洛近似,如果对于旧策略,我们收集到的数据如下:
s
1
,
a
1
,
r
1
,
s
2
,
a
2
,
r
2
,
.
.
.
,
s
n
,
a
n
,
r
n
s_1,a_1,r_1,s_2,a_2,r_2,...,s_n,a_n,r_n
s1?,a1?,r1?,s2?,a2?,r2?,...,sn?,an?,rn? 公式改变如下:
L
(
θ
∣
θ
o
l
d
)
=
1
n
∑
i
=
1
n
π
(
a
i
∣
s
i
;
θ
)
π
(
a
i
∣
s
i
;
θ
o
l
d
)
?
Q
π
(
s
i
,
a
i
)
L(\theta|\theta_{old}) = \frac{1}{n}\sum_{i=1}^{n}\frac{\pi(a_i|s_i;\theta)}{\pi(a_i|s_i;\theta_{old})} * Q_{\pi}(s_i,a_i)
L(θ∣θold?)=n1?i=1∑n?π(ai?∣si?;θold?)π(ai?∣si?;θ)??Qπ?(si?,ai?) 这里L就是对J的近似,但这里还无法对L做最大化,原因在于动作价值函数Q我们并不知道是什么,所以我们也要对它做近似。
对于Q是动作价值的期望,我们对它做蒙特卡洛近似,根据折扣函数,可得:
u
i
=
r
i
+
γ
r
i
+
1
+
γ
2
r
i
+
2
.
.
.
+
γ
n
?
i
r
n
u_i = r_i + \gamma r_{i+1} + \gamma^2r_{i+2}... + \gamma^{n-i} r_n
ui?=ri?+γri+1?+γ2ri+2?...+γn?irn? 我们可以用这种计算方式来代替Q。
最大化
有了上面的近似以后,我们对其在信赖域内作最大化:通过调整策略网络参数,使得新的策略网络的奖励期望越大越好。数学公式表达为:
θ
n
e
w
←
a
r
g
m
a
x
θ
L
(
θ
∣
θ
o
l
d
)
s
.
t
.
θ
∈
N
(
θ
o
l
d
)
\theta_{new} \leftarrow argmax_{\theta}L(\theta|\theta_{old}) \\ s.t. \theta \in N{(\theta_{old})}
θnew?←argmaxθ?L(θ∣θold?)s.t.θ∈N(θold?) 有很多方式表达两组参数的距离,这里介绍两种:
-
二范数距离,即两者的欧式距离,平方和后开方:
∣
∣
θ
?
θ
o
l
d
∣
∣
<
Δ
||\theta - \theta_{old}|| < \Delta
∣∣θ?θold?∣∣<Δ -
KL散度:这不是用来衡量两组参数的,而是用来衡量网络输出的概率分布的,概率分布的区别越大,KL散度越大,区别越小越趋近于0,也叫相对熵。 离散形式
K
L
(
P
∣
∣
Q
)
=
∑
P
(
x
)
l
o
g
P
(
x
)
Q
(
x
)
KL(P||Q) = \sum P(x)log \frac{P(x)}{Q(x)}
KL(P∣∣Q)=∑P(x)logQ(x)P(x)? 连续形式:
K
L
(
P
∣
∣
Q
)
=
∫
P
(
x
)
l
o
g
P
(
x
)
Q
(
x
)
d
x
KL(P||Q) = \int P(x)log \frac{P(x)}{Q(x)}dx
KL(P∣∣Q)=∫P(x)logQ(x)P(x)?dx
那么这里的约束条件就是:
1
n
∑
i
=
1
n
K
L
[
π
(
.
∣
s
i
;
θ
o
l
d
)
∣
∣
π
(
.
∣
s
i
;
θ
)
]
<
Δ
\frac{1}{n} \sum_{i=1}^{n} KL[\pi(.|s_i;\theta_{old})||\pi(.|s_i;\theta)] < \Delta
n1?i=1∑n?KL[π(.∣si?;θold?)∣∣π(.∣si?;θ)]<Δ 至此,游戏完成了一轮episode,我们进行了一次参数更新,往往更新进行很多次才能得到一个比较好的策略网络。
TRPO的优点是曲线稳定不会剧烈波动,对学习率设置不会太敏感。而且观察到更少的奖励就能达到跟策略梯度算法相同的表现。
|