强化学习之自然梯度法

自然梯度法,即Natural Gradient,是一种优化算法,其他常见的优化算法比如一维搜索、牛顿法、最速下降法、共轭梯度法等。个人认为自然梯度的思想非常类似于最速下降法,只不过一个是寻找最优的标量 α ∈ R \alpha\in\mathbb{R} αR,而NG是在一定约束下寻找最优的搜索方向 s ∗ = α d s^*=\alpha d s=αd(严格来说搜索方向应该不包括学习率,但是为了便于说明,接下来的搜索方向都暗指包括学习率)。

另外NG算法还被广泛用于强化学习中,比如NPG、TRPO以及PPO算法都涉及到了自然梯度法思想的影响,因此对于强化学习领域的研究者来说,NG还是有必要了解的

参考列表:
费舍尔信息矩阵及自然梯度法英文原版
TRPO与NPG
TRPO共轭梯度优化

1. 优化目标与约束

自然梯度法是梯度下降法的一个分支,因此参数的更新遵从:
θ ( k + 1 ) ← θ ( k ) − α ( k ) ⋅ g ( k ) \theta^{(k+1)}\gets\theta^{(k)}-\alpha^{(k)}\cdot g^{(k)} θ(k+1)θ(k)α(k)g(k)其中 g g g为梯度,作为一个优化算法,这里设目标函数为 f ( θ ) f(\theta) f(θ),则目标函数为:
θ ∗ = arg min ⁡ θ f ( θ ) \theta^* = \argmin_\theta f(\theta) θ=θargminf(θ)那么由于在机器学习中,我们很难直接求得解析解,故一般都是通过迭代的方式去求得数值解,因此梯度下降法里面最重要的自然就是学习率以及搜索方向了,不同的梯度下降法也就是搜索方向或者学习率的选择不同。那么在Natural Gradient中的选择是这样的:
s ∗ = arg min ⁡ d f ( θ k + s ( k ) ) s . t .    D K L ( θ k , θ ( k + 1 ) ) ≤ ϵ s^* = \argmin_d f(\theta^{k}+s^{(k)})\\ s.t. \,\,D_{KL}(\theta^{k},\theta^{(k+1)})\leq \epsilon s=dargminf(θk+s(k))s.t.DKL(θk,θ(k+1))ϵ其表达的意思是:参数搜索范围在参数空间受限的情况下,找到最小化目标函数 f f f的搜索方向 s ∗ s^* s,这就是自然梯度法。在NG里约束参数搜索范围采用了 K L − d i v e r g e n c e KL-divergence KLdivergence

2. 必要知识点

在推导出自然梯度发最优搜索方向 d ∗ d^* d的过程中,还需要了解一些必备知识点,比如①费雪信息矩阵FIM的定义②FIM与黑塞矩阵的关系③FIM与KL散度的关系等等。

2.1 费雪信息矩阵

什么是费雪信息矩阵(Fisher Information Matrix)?
定义某个分布关于模型 θ \theta θ的分布为 p ( x ∣ θ ) p(x|\theta) p(xθ)
记得分函数 s p ( θ ) = ∇ θ log ⁡ p ( x ∣ θ ) , s p ∈ R d s_p(\theta)=\nabla_\theta\log p(x|\theta),s_p\in\mathbb{R}^d sp(θ)=θlogp(xθ),spRd,关于得分函数,在 K S D KSD KSD中也出现过,只不过在 K S D KSD KSD中是 E p [ A p f ( x ) ] = 0 \mathbb{E}_p[\mathcal{A}_pf(x)]=0 Ep[Apf(x)]=0,而在这里我们有 E p [ s p ( θ ) ] = 0 \mathbb{E}_p[s_p(\theta)]=0 Ep[sp(θ)]=0,证明如下:在这里插入图片描述然后给出协方差的定义: c o v ( X , Y ) = E [ ( X − E X ) ⋅ ( Y − E Y ) ] cov(X,Y)=\mathbb{E}[(X-\mathbb{E}X)\cdot(Y-\mathbb{E}Y)] cov(X,Y)=E[(XEX)(YEY)],因此得分函数的协方差表示为:
c o v ( s p , s p ) = E [ ( s p − 0 ) ⋅ ( s p − 0 ) T ] cov(s_p,s_p)=\mathbb{E}[(s_p-0)\cdot(s_p-0)^T] cov(sp,sp)=E[(sp0)(sp0)T]我们可以将其看成一种信息,因此可以说得分函数的协方差就是费雪信息。又因为费雪信息是以矩阵 R d × d \mathbb{R}^{d\times d} Rd×d形式存在的,因此将得分函数展开: F = E p [ ∇ θ log ⁡ p ( x ∣ θ ) ⋅ ∇ θ T log ⁡ p ( x ∣ θ ) ] F=\mathbb{E}_p[\nabla_\theta\log p(x|\theta)\cdot\nabla^T_\theta\log p(x|\theta)] F=Ep[θlogp(xθ)θTlogp(xθ)]
Note:

  1. F F F就是费雪信息矩阵FIM
  2. 用样本估计的方式近似FIM的 F ^ \hat{F} F^经验费雪信息矩阵 F ≈ F ^ = 1 N ∑ i = 1 N ∇ θ log ⁡ p ( x ∣ θ ) ⋅ ∇ θ T log ⁡ p ( x ∣ θ ) F\approx \hat{F}=\frac{1}{N}\sum_{i=1}^N\nabla_\theta\log p(x|\theta)\cdot\nabla^T_\theta\log p(x|\theta) FF^=N1i=1Nθlogp(xθ)θTlogp(xθ)

2.2 FIM&Hessian

这一节讨论FIM与黑塞矩阵 H H H之间的关系。
H log ⁡ p ( x ∣ θ ) = ∂ 2 log ⁡ p ( x ∣ θ ) ∂ θ 2 H_{\log p(x|\theta)}=\frac{\partial^2{\log p(x|\theta)}}{\partial{\theta^2}} Hlogp(xθ)=θ22logp(xθ),则:
H log ⁡ p ( x ∣ θ ) = J ( ∇ θ log ⁡ p ( x ∣ θ ) ) = J ( ∇ θ p ( x ∣ θ ) p ( x ∣ θ ) ) H_{\log p(x|\theta)}=J(\nabla_\theta\log p(x|\theta))=J(\frac{\nabla_\theta p(x|\theta)}{p(x|\theta)}) Hlogp(xθ)=J(θlogp(xθ))=J(p(xθ)θp(xθ))Note:

  1. J J J表示雅克比矩阵(Jocobin-matrix)。

对上式求期望可得:
E x ∼ p [ H log ⁡ p ( x ∣ θ ) ] = − F \mathbb{E}_{x\sim p}[H_{\log p(x|\theta)}]=-F Exp[Hlogp(xθ)]=F证明如下:在这里插入图片描述
记住这个结论:
F = − E p [ H log ⁡ p ( x ∣ θ ) ] F=-\mathbb{E}_p[H_{\log p(x|\theta)}] F=Ep[Hlogp(xθ)],意思就是说得分函数的一阶导数期望取反就是费雪信息矩阵 F F F,接下来会用到。

2.3 FIM&KL-divergence

做强化学习的,对于KL散度应该不陌生了,之前在高斯平滑 Q Q Q函数、TRPO、PPO这些论文中都出现过,这里还是啰嗦的给出其公式:
D K L ( p ( x ) ∣ ∣ q ( x ) ) = ∫ p ( x ) ⋅ log ⁡ p ( x ) q ( x ) d x = E p [ log ⁡ p ( x ) q ( x ) ] = E p [ log ⁡ p ( x ) ] − E p [ log ⁡ q ( x ) ] D_{KL}(p(x)||q(x))=\int p(x)\cdot\log\frac{p(x)}{q(x)}\mathrm{d}x=\mathbb{E}_p[\log\frac{p(x)}{q(x)}]\\ =\mathbb{E}_p[\log p(x)]-\mathbb{E}_p[\log q(x)] DKL(p(x)q(x))=p(x)logq(x)p(x)dx=Ep[logq(x)p(x)]=Ep[logp(x)]Ep[logq(x)]Note:

  1. KL散度衡量的就是两个分布之间相似程度。这里不用距离的概念,是因为KL散度不是对称函数,因此不能算是距离。
  2. KL散度的特性曲线如下:在这里插入图片描述

θ \theta θ为旧参数 θ o l d \theta_{old} θold θ ′ = θ + s \theta'=\theta+s θ=θ+s为新参数 θ n e w \theta_{new} θnew,那么相对熵运用到NG算法中就是:
D K L ( p ( x ∣ θ ) ∣ ∣ p ( x ∣ θ ′ ) ) = E p ( x ∣ θ ) [ log ⁡ p ( x ∣ θ ) ] − E p ( x ∣ θ ) [ log ⁡ p ( x ∣ θ ′ ) ] D_{KL}(p(x|\theta)||p(x|\theta'))=\mathbb{E}_{p(x|\theta)}[\log p(x|\theta)]-\mathbb{E}_{p(x|\theta)}[\log p(x|\theta')] DKL(p(xθ)p(xθ))=Ep(xθ)[logp(xθ)]Ep(xθ)[logp(xθ)]
接下来我们试着求取 K L KL KL散度的一阶导数和二阶导数。
一阶导数和二阶导数所求如下:
在这里插入图片描述
也就是说 K L KL KL散度在 θ ′ = θ \theta'=\theta θ=θ处的Hessian矩阵就是费雪信息矩阵 F F F

3. 最优搜索方向

接下来就开始推导出自然梯度法所优化出的搜索方向 s ∗ s^* s了。
我们把目标函数和约束重新列一下:
min ⁡ θ f ( θ ′ ) s . t .    k l ( θ ′ ) ≤ ϵ \min_\theta f(\theta')\\ s.t.\,\,kl(\theta')\leq\epsilon θminf(θ)s.t.kl(θ)ϵ

接下来我们对目标函数和约束用泰勒公式 θ ′ = θ \theta'=\theta θ=θ处展开
对于目标函数:
f ( θ ′ ) ≈ f ( θ ) + g T ⋅ ( θ ′ − θ ) + 高 阶 项 f(\theta')\approx f(\theta)+g^T\cdot(\theta'-\theta)+高阶项 f(θ)f(θ)+gT(θθ)+Note:

  1. 这里我们忽略高阶项,直接做一阶近似。
  2. 第一项是常数项,一般优化都省略掉。或者你也可以先留着,到后面就会发现常数项没有用。
  3. g = ∂ f ∂ θ ∣ θ ′ = θ g=\frac{\partial{f}}{\partial\theta}|_{\theta'=\theta} g=θfθ=θ

对于约束项:
k l ( θ ∣ ∣ θ ′ ) ≈ k l ( θ ∣ ∣ θ ) + ∇ θ ′ T k l ( θ ∣ ∣ θ ′ ) ∣ θ ′ = θ ( θ ′ − θ ) + 1 2 ( θ ′ − θ ) T ∇ θ ′ 2 k l ( θ ∣ ∣ θ ′ ) ∣ θ ′ = θ ( θ ′ − θ ) + 高 阶 项 kl(\theta||\theta')\approx kl(\theta||\theta)+\nabla^T_{\theta'}kl(\theta||\theta')|_{\theta'=\theta}(\theta'-\theta)+\frac{1}{2}(\theta'-\theta)^T\nabla_{\theta'}^2kl(\theta||\theta')|_{\theta'=\theta}(\theta'-\theta)+高阶项 kl(θθ)kl(θθ)+θTkl(θθ)θ=θ(θθ)+21(θθ)Tθ2kl(θθ)θ=θ(θθ)+Note:

  1. 第一项为0,第二项根据我们2.3节推导来看也是为0,因此只剩下二阶项,因此 K L KL KL散度我们都是做二阶近似的。
  2. s = θ ′ − θ s=\theta'-\theta s=θθ,然后结合2.3节的重要结论,则KL散度可近似为: k l ( θ ∣ ∣ θ ′ ) ≈ 1 2 s T F s kl(\theta||\theta')\approx\frac{1}{2}s^TFs kl(θθ)21sTFs这里的 F F F就是费雪信息矩阵,是一个Hessian矩阵。从这里也可以看出 K L KL KL散度的二阶导数就是FIM。

然后我们将近似后的约束问题通过拉格朗日乘子法转为无约束问题:
m i n i m i z e    L ( θ ′ , λ ) = f ( θ ) + g T ⋅ s + λ ( 1 2 s T F s − ϵ ) minimize\,\,L(\theta',\lambda)=f(\theta)+g^T\cdot s+\lambda(\frac{1}{2}s^TFs-\epsilon) minimizeL(θ,λ)=f(θ)+gTs+λ(21sTFsϵ)整理加入 K K T KKT KKT条件:
m i n i m i z e    L ( θ ′ , λ ) = λ 2 s T F s + g T ⋅ s + f ( θ ) − λ ϵ K K T : { 1 2 s T F s ≤ ϵ λ = 0 λ ( 1 2 s T F s − ϵ ) = 0 minimize\,\,L(\theta',\lambda) = \frac{\lambda}{2}s^TFs+g^T\cdot s+f(\theta)-\lambda\epsilon\\ KKT:\begin{cases} \frac{1}{2}s^TFs\leq\epsilon\\ \lambda=0\\ \lambda(\frac{1}{2}s^TFs-\epsilon)=0 \end{cases} minimizeL(θ,λ)=2λsTFs+gTs+f(θ)λϵKKT21sTFsϵλ=0λ(21sTFsϵ)=0显然我们现在的目的在于优化出最好的 s ∗ s^* s使得拉格朗日函数 L L L达到最小值:因此我们求 ∂ L ∂ s = 0 \frac{\partial{L}}{\partial{s}}=0 sL=0
易得:
λ F s + g = 0 ⇔ s ∗ = − 1 λ F − 1 g \lambda Fs+g=0\\ \Leftrightarrow s^*=-\frac{1}{\lambda}F^{-1}g λFs+g=0s=λ1F1gNote:

  1. 至此我们就推导出了自然梯度法每次迭代的最佳搜索方向 s ∗ s^* s。我们在TRPO里面也得出过这个式子,只不过那个是求 m a x i m i z e maximize maximize,因此不带“负号”。
  2. 前面说过 s s s包含了学习率和梯度 g g g的乘积,因此常数 1 λ \frac{1}{\lambda} λ1可以吸收到学习率里面去,因此NG算法真正意义上的搜索方向为: F − 1 g F^{-1}g F1g
  3. 再来看这个 K K T KKT KKT条件中的第三个, K L KL KL散度用于约束参数搜索范围在满足目标函数最小化的同时不要太大,因此在边界上的 K L KL KL值是最好的,根据 K K T KKT KKT性质所知,此时 λ ≥ 0 \lambda\ge0 λ0,也就是说:
    1 2 s T F s = ϵ ⇔ 1 2 ( α g ) T F ( α g ) = ϵ ⇔ α = 2 ϵ g T F g \frac{1}{2}s^TFs=\epsilon\\ \Leftrightarrow\frac{1}{2}(\alpha g)^TF(\alpha g)=\epsilon\\ \Leftrightarrow\alpha=\sqrt{\frac{2\epsilon}{g^TFg}} 21sTFs=ϵ21(αg)TF(αg)=ϵα=gTFg2ϵ

至此我们总算可以得出NG最重要的更新公式了:
θ ( k + 1 ) ← θ k − 2 ϵ g T F g ⋅ F − 1 g \theta^{(k+1)}\gets\theta^{k}-\sqrt{\frac{2\epsilon}{g^TFg}}\cdot F^{-1}g θ(k+1)θkgTFg2ϵ F1g

4. TRPO&NPG

这里给出了NG算法应用于强化学习中形成的Natural Policy Gradient算法,可以看到它最下面的更新公式,就是我们上述推导出来的。
NPG伪代码:在这里插入图片描述
这一份是TRPO的伪代码,可以说TRPO进一步优化了NPG算法,关键在于TRPO可以推出这么一个式子:
θ − θ o l d = s = 1 λ F − 1 g \theta-\theta_{old}=s=\frac{1}{\lambda}F^{-1}g θθold=s=λ1F1g而TRPO采用共轭梯度优化算法可以通过迭代求出共轭搜索方向 d d d,乘上学习率就可以求得 s s s,因此可以 d d d来近似NPG算法中的搜索方向 F − 1 g F^{-1}g F1g,即 d ≈ F − 1 g d\approx F^{-1}g dF1g。这样最大的好处就是不用计算费雪信息矩阵,因为FIM的计算量是非常大的。
TRPO伪代码:在这里插入图片描述

5. 总结

  1. 将上述整合在一起,就是自然梯度下降法的伪代码:在这里插入图片描述
  2. 自然梯度法(NG)最速下降法(steepest descent)很相似,只是两者优化的目标不一样,前者是为了求出使得 f ( θ + s ) f(\theta+s) f(θ+s)最小的最佳搜索方向,后者是为了求出使得 f ( θ + s ) f(\theta+s) f(θ+s)最小的最佳学习率。此外,共轭梯度算法(CG)可以对NG算法进行改进:CG通过迭代的方式去近似掉NG中的FIM。三者都是梯度下降法的分支,都可以应用到机器学习算法中去。
  3. 此外,在推导出NG算法的过程中,认识到了FIM的定义、FIM与Hessian矩阵的关系、FIM与 K L KL KL散度的关系。
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值