NPG,即Natural Policy Gradient(自然策略梯度),是一篇2002年的老文章了,后来的TRPO、PPO都是基于NPG的思想。个人认为NPG和TRPO提供了比较扎实的理论基础,而PPO是最佳的实践版本。
论文地址,点这里
参考列表:
①费舍尔信息矩阵及自然梯度法或者英文原作者
②自然梯度法
③Natural Policy Gradient
④Natural PG
⑤强化学习之自然梯度法
NPG是NG和PG的结合(即NPG=NG+PG),NPG是以 J ( θ ) = ∑ s , a ρ π ( s ) π ( a ; s , θ ) Q π ( s , a ) J(\theta)=\sum_{s,a}\rho^\pi(s)\pi(a;s,\theta)Q^\pi(s,a) J(θ)=s,a∑ρπ(s)π(a;s,θ)Qπ(s,a)为目标函数的NG算法(这里的NG用于梯度上升)。
A Natural Policy Gradient
Abstract
自然梯度算法(NG)在搜索范围受限的约束下提供了使得目标函数 f ( θ + s ) f(\theta+s) f(θ+s)最小的最佳搜索方向 s ∗ s^* s∗。该论文将NG用于强化学习中,从而找到最贪婪( m a x i m i z e maximize maximize)的动作而不是标准策略提升中更好的动作。贪婪动作也是通过策略迭代、可兼容的值函数近似获取的。
1 Introduction
略
2 A Natural Gradient
这一节主要是介绍自然梯度法以及几个重要式子在RL上的表示方法,关于NG算法,可以参考我的另一篇——强化学习之自然梯度法。
回顾下策略梯度算法的核心公式:
∇
η
(
θ
)
=
∑
s
,
a
ρ
π
(
s
)
∇
π
(
a
;
s
,
θ
)
Q
π
(
s
,
a
)
(1)
\nabla\eta(\theta)=\sum_{s,a}\rho^\pi(s)\nabla\pi(a;s,\theta)Q^\pi(s,a)\tag{1}
∇η(θ)=s,a∑ρπ(s)∇π(a;s,θ)Qπ(s,a)(1)
接下来就是费雪信息矩阵FIM
在RL中的表示:
F
i
,
j
s
(
θ
)
=
E
a
∼
π
(
a
;
s
,
θ
)
[
∂
log
π
(
a
;
s
,
θ
)
∂
θ
i
⋅
∂
log
π
(
a
;
s
,
θ
)
∂
θ
j
]
(2)
F_{i,j}^s(\theta)=\mathbb{E}_{a\sim\pi(a;s,\theta)}[\frac{\partial{\log\pi(a;s,\theta)}}{\partial{\theta_i}}\cdot\frac{\partial{\log\pi(a;s,\theta)}}{\partial{\theta_j}}]\tag{2}
Fi,js(θ)=Ea∼π(a;s,θ)[∂θi∂logπ(a;s,θ)⋅∂θj∂logπ(a;s,θ)](2)
完整地表达:
F
(
θ
)
=
E
s
∼
ρ
π
(
s
)
[
F
i
,
j
s
(
θ
)
]
(3)
F(\theta)=\mathbb{E}_{s\sim\rho^\pi(s)}[F_{i,j}^s(\theta)]\tag{3}
F(θ)=Es∼ρπ(s)[Fi,js(θ)](3)
说到NG,最重要的就是其搜索方向了:
d
∗
=
∇
~
η
(
θ
)
≡
F
−
1
(
θ
)
∇
η
(
θ
)
(4)
d^*=\tilde{\nabla}\eta(\theta)\equiv F^{-1}(\theta)\nabla\eta(\theta)\tag{4}
d∗=∇~η(θ)≡F−1(θ)∇η(θ)(4)
3 The Natural Gradient and Policy Iteration
3.1 Compatible Function Approximation
可兼容值函数近似的意思用这个估计的价值函数替换策略梯度中的真实价值函数去计算式(1),即使有参数化带来的误差,得到的策略梯度也是准确的,这里作者做了一个线性值函数近似。
设
θ
,
ω
∈
R
m
\theta,\omega\in\mathbb{R}^m
θ,ω∈Rm,则得分函数以及近似值函数分别为:
ψ
π
(
s
,
a
)
=
∇
θ
log
π
(
a
;
s
,
θ
)
,
f
π
(
s
,
a
;
ω
)
=
ω
T
ψ
π
(
s
,
a
)
(5)
\psi^\pi(s,a)=\nabla_\theta\log\pi(a;s,\theta),\\ f^\pi(s,a;\omega)=\omega^T\psi^\pi(s,a)\tag{5}
ψπ(s,a)=∇θlogπ(a;s,θ),fπ(s,a;ω)=ωTψπ(s,a)(5)Theorem 1:
设
ω
~
=
arg min
ω
∑
s
,
a
ρ
π
(
s
)
π
(
a
;
s
,
θ
)
(
f
π
(
s
,
a
;
ω
)
−
Q
π
(
s
,
a
)
)
2
\tilde{\omega}=\argmin_\omega\sum_{s,a}\rho^\pi(s)\pi(a;s,\theta)(f^\pi(s,a;\omega)-Q^\pi(s,a))^2
ω~=ωargmin∑s,aρπ(s)π(a;s,θ)(fπ(s,a;ω)−Qπ(s,a))2,则
ω
~
=
∇
~
η
(
θ
)
\tilde{\omega}=\tilde{\nabla}\eta(\theta)
ω~=∇~η(θ)。
证明如下:
Note:
- 从 ω ~ = F − 1 ( θ ) ∇ θ η ( θ ) \tilde{\omega}=F^{-1}(\theta)\nabla_\theta\eta(\theta) ω~=F−1(θ)∇θη(θ)可以看出,NG算法可以用来求取线性值函数网络的参数。
3.2 Greedy Policy Improvement
经典的策略梯度算法对于值函数提升的方式是一种选择状态
s
s
s处比之前更好的动作
a
′
∼
π
θ
′
(
s
)
a'\sim\pi_{\theta'}(s)
a′∼πθ′(s)。而NPG想要的是经典策略提升那样的:
a
′
∈
arg max
a
f
π
(
s
,
a
;
ω
~
)
a'\in\argmax_af^\pi(s,a;\tilde{\omega})
a′∈aargmaxfπ(s,a;ω~)也就是贪婪策略(greedy-policy)。
现在假设我们的策略属于
e
x
p
exp
exp数簇,即
π
(
a
;
s
,
θ
)
∝
exp
(
θ
T
ϕ
s
a
)
\pi(a;s,\theta)\propto\exp(\theta^T\phi_{sa})
π(a;s,θ)∝exp(θTϕsa),
ϕ
s
a
∈
R
m
\phi_{sa}\in\mathbb{R^m}
ϕsa∈Rm是特征向量。
Theorem 2:
设
π
(
a
;
s
,
θ
)
∝
exp
(
θ
T
ϕ
s
a
)
\pi(a;s,\theta)\propto\exp(\theta^T\phi_{sa})
π(a;s,θ)∝exp(θTϕsa),
∇
~
η
(
θ
)
≠
0
\tilde{\nabla}\eta(\theta)\ne0
∇~η(θ)=0,令
π
∞
(
a
;
s
)
=
lim
α
→
∞
π
(
a
;
s
.
θ
+
α
∇
~
η
(
θ
)
)
\pi_\infty(a;s)=\lim_{\alpha\to\infty}\pi(a;s.\theta+\alpha\tilde{\nabla}\eta(\theta))
π∞(a;s)=limα→∞π(a;s.θ+α∇~η(θ)),则:
π
∞
(
a
;
s
)
≠
0
,
当
且
仅
当
a
∈
arg max
a
′
f
π
(
s
,
a
′
;
ω
~
)
\pi_\infty(a;s)\ne0,当且仅当a\in\argmax_{a'}f^\pi(s,a';\tilde{\omega})
π∞(a;s)=0,当且仅当a∈a′argmaxfπ(s,a′;ω~)证明如下:
Note:
- 定理2表明,在NG的更新规则下,一个足够大的step所更新出来的策略等效于贪婪策略。也就是说自然策略旨在寻找最佳动作(greedy-action)。这里的 α → ∞ \alpha\to\infty α→∞可以这么理解,就像监督学习里那样,一个batch会重复更新好几次,这里也是一样,定理2告诉我们只要一直沿着NG告诉我们的方向更新下去,则算法就会找到贪婪策略下的最佳动作。
- 这里选用 e x p exp exp策略仅仅是用来便于使用学习率的极端情况。
Theorem 3:
设策略网络参数更新为:
θ
′
=
θ
+
α
∇
~
θ
η
(
θ
)
,
则
\theta'=\theta+\alpha\tilde{\nabla}_\theta\eta(\theta),则
θ′=θ+α∇~θη(θ),则
π
(
a
;
s
,
θ
′
)
=
π
(
a
;
s
,
θ
)
(
1
+
f
π
(
s
,
a
;
ω
~
)
+
O
(
α
2
)
)
\pi(a;s,\theta')=\pi(a;s,\theta)(1+f^\pi(s,a;\tilde{\omega})+O(\alpha^2))
π(a;s,θ′)=π(a;s,θ)(1+fπ(s,a;ω~)+O(α2))证明如下:Note:
- 这里泰勒展开只做一阶近似。
- 更新规则显然就是自然梯度法。
- 定理3将面向通用的策略,而不仅限于 e x p exp exp策略,它揭示了自然梯度法是如何选择最佳动作(greedy-action)的。
- 从最后一个等式可以看出,如果状态动作对 < s , a > <s,a> <s,a>的值函数值是一个相对较大的值的话,那么自然梯度法的更新会使得在这个状态 s s s选择到动作 a a a的概率得到提升;同理如果 f ( s , a ) f(s,a) f(s,a)比较小,那么接下去就很难被选到了,总的来说,强的会更强,弱的会更弱,倒是有“强化”学习的意思在里面。那么当动作 a a a是贪婪动作的时候,则 π \pi π一定会得到提升!
- 作者指出,之前许多研究都表明贪婪动作 a ∗ a^* a∗的选择并不能提升 π ( a ∗ ∣ s ) \pi(a^*|s) π(a∗∣s)。但是定理三告诉我们,自然梯度法可以做到选择贪婪动作 a ∗ a^* a∗,同样可以提升 π \pi π(这里作者提到了线性搜索,但个人认为自然梯度法里面并没有包含线性搜索的成分,但是最速下降法里是有一维搜索的)。
4 Metrics and Curvatures
略
5 Experiments
略
6 Discussion
7 总结
-
完整NPG伪代码如下:
-
NPG是自然梯度法和策略梯度的结合,我们之前介绍的策自然梯度算啊只是一种优化方式,相当于一个框架,NPG即相当于把强化学习的策略梯度给塞进框架里进行优化。
-
TRPO就是要约束两个分布之间的距离。那么现在NPG通过一步一步的转换,将约束两个分布之间的距离转换成约束 s = 1 λ F − 1 g s=\frac{1}{\lambda}F^{-1}g s=λ1F−1g这个事情,那么只要约束了 s s s就相当于约束了两个分布的距离。总之,Natural Policy Gradient把约束通过FIM隐式的写在了搜索方向里,和TRPO一样,给人一种更新步伐不大不小、正合适的感觉。
-
NPG和TRPO一样,给后来的PPO算法提供了一个很好的理论基础。他的优点在于①产生了策略梯度版本的greedy-policy,两者很相似。②收敛速度快,因为Agent朝着相对所估计到价值函数greedy-policy的方向更新,不走弯路。③如果当前里收敛点较远的话,收敛速度也不会慢,因为NPG算法里的NG天生就是以最大化目标函数的结果为搜索方向,而一般来说离收敛点较远的时候,performance的提高反倒会很迅猛。
-
NPG算法区别于PG算法最大的地方在于,NPG就好像最速下降法一样,知道自己该阶段应该到达的最佳位置(准确的说应该是估计的最佳位置,因为NPG仍是基于采样的算法),而PG算法的学习率通常是人为设置的,因此PG该阶段所到达的位置肯定是不尽如人意的,有时候确实在提升,但可能提升幅度很小,可能NPG一步到位,PG要分好几步来做,造成收敛速度慢,有时候学习率太大,反倒过头了,就会造成收敛过程回环曲折,更加减缓了收敛速度。