欢迎查看我的博客文章合集:我的Blog文章索引::机器学习方法系列,深度学习方法系列,三十分钟理解系列等

这个系列会有多篇神经网络优化方法的复习/学习笔记,主要是一些优化器。目前有计划的包括:

  • 入门神经网络优化算法(一):Gradient Descent,Momentum,Nesterov accelerated gradient
  • 入门神经网络优化算法(二):Adaptive Optimization Methods:Adagrad,RMSprop,Adam
  • 入门神经网络优化算法(三):待定
  • 入门神经网络优化算法(四):AMSGrad,Radam等一些Adam变种
  • 入门神经网络优化算法(五):二阶优化算法Natural Gradient Descent(Fisher Information)
  • 入门神经网络优化算法(六):二阶优化算法K-FAC
  • 入门神经网络优化算法(七):二阶优化算法Shampoo

文章目录

  • 1. Fisher Information Matrix
    • 1.1 Score function
    • 1.2 Fisher Information
    • 1.3 Fisher矩阵和Hessian矩阵的关系
  • 2. 自然梯度下降法Natural Gradient Descent
    • 2.1 分布空间中的最速下降,Natural gradient方法
  • 与Adam关系的类比讨论
  • 参考资料

二阶优化算法Natural Gradient Descent,是从分布空间推导最速梯度下降方向的方法,和牛顿方法有非常紧密的联系。Fisher Information Matrix往往可以用来代替牛顿法的Hessian矩阵计算。下面详细道来。

1. Fisher Information Matrix

了解Natural Gradient Descent方法,需要先了解Fisher Information Matrix的定义。参考资料主要有[1][2],加上我自己的理解。

1.1 Score function

假设我们有一个模型参数向量是θ\thetaθ,似然函数一般表示成p(x∣θ)p(x | \theta)p(x∣θ)。在很多算法中,我们经常需要学习参数θ\thetaθ以最大化似然函数(likelihood)p(x∣θ)p(x | \theta)p(x∣θ)。这个时候,定义Score function s(θ)s(\theta)s(θ),the gradient of log likelihood function:
s(θ)=∇θlog⁡p(x∣θ)s(\theta) = \nabla_{\theta} \log p(x \vert \theta) \\ s(θ)=∇θ​logp(x∣θ)

这个Score function在很多地方都要用到,特别的,在强化学习Policy Gradient类方法中,我们会直接用到Score function求参数梯度来更新policy参数。

Score function的性质:The expected value of score function wrt. the model is zero.

证明:
Ep(x∣θ)[s(θ)]=Ep(x∣θ)[∇log⁡p(x∣θ)]=∫∇log⁡p(x∣θ)p(x∣θ)dx=∫1p(x∣θ)∇p(x∣θ)p(x∣θ)dx=∫∇p(x∣θ)dx=∇∫p(x∣θ)dx=∇1=0\mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ s(\theta) \right] = \mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \nabla \log p(x \vert \theta) \right] \\[5pt] = \int \nabla \log p(x \vert \theta) \, p(x \vert \theta) \, \text{d}x \\[5pt] = \int \frac{1}{p(x \vert \theta)} \nabla p(x \vert \theta) p(x \vert \theta) \text{d}x \\[5pt] = \int \nabla p(x \vert \theta) \, \text{d}x \\[5pt] = \nabla \int p(x \vert \theta) \, \text{d}x \\[5pt] = \nabla 1 \\[5pt] = 0 Ep(x∣θ)​[s(θ)]=Ep(x∣θ)​[∇logp(x∣θ)]=∫∇logp(x∣θ)p(x∣θ)dx=∫p(x∣θ)1​∇p(x∣θ)p(x∣θ)dx=∫∇p(x∣θ)dx=∇∫p(x∣θ)dx=∇1=0

1.2 Fisher Information

虽然期望为零,但是我们需要评估Score function的不确定性,我们采用协方差矩阵的期望(针对模型本身):
Ep(x∣θ)[(s(θ)−0)(s(θ)−0)T]\mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ (s(\theta) - 0) \, (s(\theta) - 0)^{\text{T}} \right] Ep(x∣θ)​[(s(θ)−0)(s(θ)−0)T]
上述定义(协方差矩阵的期望,针对model p(x∣θ)p(x \vert \theta)p(x∣θ) )称之为Fisher Information,如果θ\thetaθ是表示成一个列向量,那么Score function也是一个列向量,而Fisher Information是一个矩阵形式,我们称之为Fisher Information Matrix

F=Ep(x∣θ)[∇log⁡p(x∣θ)∇log⁡p(x∣θ)T]\text{F} = \mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \nabla \log p(x \vert \theta) \, \nabla \log p(x \vert \theta)^{\text{T}} \right] F=Ep(x∣θ)​[∇logp(x∣θ)∇logp(x∣θ)T]

但是呢,往往p(x∣θ)p(x \vert \theta)p(x∣θ) 形式是比较复杂的,甚至是一个模型的输出,要计算期望是不太可能的。因此,实际上我们用的比较多的情况是,采用training data X={x1,x2,⋯,xN}X = \{ x_1, x_2, \cdots, x_N \}X={x1​,x2​,⋯,xN​}计算得到的Empirical Fisher:
F=1N∑i=1N∇log⁡p(xi∣θ)∇log⁡p(xi∣θ)T\text{F} = \frac{1}{N} \sum_{i=1}^{N} \nabla \log p(x_i \vert \theta) \, \nabla \log p(x_i \vert \theta)^{\text{T}} F=N1​i=1∑N​∇logp(xi​∣θ)∇logp(xi​∣θ)T

1.3 Fisher矩阵和Hessian矩阵的关系

前面是背景介绍,下面进入正题,Fisher矩阵和Hessian矩阵的关系。可以证明:log似然函数的海森矩阵的期望的负数,等于Fisher Information Matrix.

Claim: The negative expected Hessian of log likelihood is equal to the Fisher Information Matrix F

证明:核心思想是,The Hessian of the log likelihood is given by the Jacobian of its gradient:
Hlog⁡p(x∣θ)=J[∇p(x∣θ)p(x∣θ)]=Hp(x∣θ)p(x∣θ)−∇p(x∣θ)∇p(x∣θ)Tp(x∣θ)p(x∣θ)=Hp(x∣θ)p(x∣θ)p(x∣θ)p(x∣θ)−∇p(x∣θ)∇p(x∣θ)Tp(x∣θ)p(x∣θ)=Hp(x∣θ)p(x∣θ)−(∇p(x∣θ)p(x∣θ))(∇p(x∣θ)p(x∣θ))T\text{H}_{\log p(x \vert \theta)} = \text{J} \left[\frac{\nabla p(x \vert \theta)}{p(x \vert \theta)}\right] \\[8pt] = \frac{ \text{H}_{p(x \vert \theta)} \, p(x \vert \theta) - \nabla p(x \vert \theta) \, \nabla p(x \vert \theta)^{\text{T}}}{p(x \vert \theta) \, p(x \vert \theta)} \\[8pt] = \frac{\text{H}_{p(x \vert \theta)} \, p(x \vert \theta)}{p(x \vert \theta) \, p(x \vert \theta)} - \frac{\nabla p(x \vert \theta) \, \nabla p(x \vert \theta)^{\text{T}}}{p(x \vert \theta) \, p(x \vert \theta)} \\[8pt] = \frac{\text{H}_{p(x \vert \theta)}}{p(x \vert \theta)} - \left( \frac{\nabla p(x \vert \theta)}{p(x \vert \theta)} \right) \left( \frac{\nabla p(x \vert \theta)}{p(x \vert \theta)}\right)^{\text{T}} Hlogp(x∣θ)​=J[p(x∣θ)∇p(x∣θ)​]=p(x∣θ)p(x∣θ)Hp(x∣θ)​p(x∣θ)−∇p(x∣θ)∇p(x∣θ)T​=p(x∣θ)p(x∣θ)Hp(x∣θ)​p(x∣θ)​−p(x∣θ)p(x∣θ)∇p(x∣θ)∇p(x∣θ)T​=p(x∣θ)Hp(x∣θ)​​−(p(x∣θ)∇p(x∣θ)​)(p(x∣θ)∇p(x∣θ)​)T

推导的时候主要注意,p(x∣θ)p(x \vert \theta)p(x∣θ)是一个标量;而∇p(x∣θ)\nabla p(x \vert \theta)∇p(x∣θ)是对参数的梯度,是一个列向量。
然后Taking expectation wrt. the model, we have:

Ep(x∣θ)[Hlog⁡p(x∣θ)]=Ep(x∣θ)[Hp(x∣θ)p(x∣θ)−(∇p(x∣θ)p(x∣θ))(∇p(x∣θ)p(x∣θ))T]=Ep(x∣θ)[Hp(x∣θ)p(x∣θ)]−Ep(x∣θ)[(∇p(x∣θ)p(x∣θ))(∇p(x∣θ)p(x∣θ))T]=∫Hp(x∣θ)p(x∣θ)p(x∣θ)dx−Ep(x∣θ)[∇log⁡p(x∣θ)∇log⁡p(x∣θ)T]=H∫p(x∣θ)dx−F=H1−F=−F.\mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \text{H}_{\log p(x \vert \theta)} \right] = \mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \frac{\text{H}_{p(x \vert \theta)}}{p(x \vert \theta)} - \left( \frac{\nabla p(x \vert \theta)}{p(x \vert \theta)} \right) \left( \frac{\nabla p(x \vert \theta)}{p(x \vert \theta)} \right)^{\text{T}} \right] \\[5pt] = \mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \frac{\text{H}_{p(x \vert \theta)}}{p(x \vert \theta)} \right] - \mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \left( \frac{\nabla p(x \vert \theta)}{p(x \vert \theta)} \right) \left( \frac{\nabla p(x \vert \theta)}{p(x \vert \theta)}\right)^{\text{T}} \right] \\[5pt] = \int \frac{\text{H}_{p(x \vert \theta)}}{p(x \vert \theta)} p(x \vert \theta) \, \text{d}x \, - \mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \nabla \log p(x \vert \theta) \, \nabla \log p(x \vert \theta)^{\text{T}} \right] \\[5pt] = \text{H}_{\int p(x \vert \theta) \, \text{d}x} \, - \text{F} \\[5pt] = \text{H}_{1} - \text{F} \\[5pt] = -\text{F} \, . Ep(x∣θ)​[Hlogp(x∣θ)​]=Ep(x∣θ)​[p(x∣θ)Hp(x∣θ)​​−(p(x∣θ)∇p(x∣θ)​)(p(x∣θ)∇p(x∣θ)​)T]=Ep(x∣θ)​[p(x∣θ)Hp(x∣θ)​​]−Ep(x∣θ)​[(p(x∣θ)∇p(x∣θ)​)(p(x∣θ)∇p(x∣θ)​)T]=∫p(x∣θ)Hp(x∣θ)​​p(x∣θ)dx−Ep(x∣θ)​[∇logp(x∣θ)∇logp(x∣θ)T]=H∫p(x∣θ)dx​−F=H1​−F=−F.

因此我们得到了:F=−Ep(x∣θ)[Hlog⁡p(x∣θ)]\text{F} = -\mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \text{H}_{\log p(x \vert \theta)} \right]F=−Ep(x∣θ)​[Hlogp(x∣θ)​],证明完毕。我们可以将F的作用看作是对数似然函数曲率的度量。一种很自然的想法就是,在二阶优化算法中,比如牛顿法中,需要计算Hessian矩阵,那么是否可以用Fisher矩阵来代替Hessian举证呢?这就引出了下面要讲的natural gradient方法了。

2. 自然梯度下降法Natural Gradient Descent

先来讲一讲parameter space和distribution space的概念,导致了对梯度下降的不同理解。

  • parameter space:一般我们解决优化问题最常用的方法是用梯度下降,每一步优化方向采用负梯度方向,−∇θL(θ)-\nabla_\theta \mathcal{L}(\theta)−∇θ​L(θ)。可以知道,负梯度方向是在当前的参数值θ\thetaθ的local neighborhood里loss在参数空间的最速下降方向。
    −∇θL(θ)∥∇θL(θ)∥=lim⁡ϵ→01ϵarg minds.t. ∥d∥≤ϵL(θ+d).\frac{-\nabla_\theta \mathcal{L}(\theta)}{\lVert \nabla_\theta \mathcal{L}(\theta) \rVert} = \lim_{\epsilon \to 0} \frac{1}{\epsilon} \mathop{\text{arg min}}_{d \text{ s.t. } \lVert d \rVert \leq \epsilon} \mathcal{L}(\theta + d) \, . ∥∇θ​L(θ)∥−∇θ​L(θ)​=ϵ→0lim​ϵ1​arg mind s.t. ∥d∥≤ϵ​L(θ+d).
    上面的表达式是,参数空间中最陡的下降方向是选取一个向量ddd,使得新参数θ+d\theta+dθ+d在当前参数θ\thetaθ的ϵ\epsilonϵ-邻域内,并且我们选取使损失最小的ddd。注意我们用欧几里德范数来表示这个邻域。因此,梯度下降的优化依赖于参数空间的欧氏几何度量。

  • distribution space:同时,如果我们的目标是最小化损失函数(最大化似然),那么我们自然会在所有可能的似然空间中采取优化步骤,通过参数θ\thetaθ来实现。由于似然函数本身是一个概率分布,我们称它所在的空间为分布空间(distribution space)。因此,在分布空间中采用最陡下降方向,而不是参数空间,是有道理的。

在distribution space中,用什么距离度量呢?常用的选择就是用KL散度(KL-divergence),KL散度常用语评估两个分布的接近程度。但是,实际上KL散度是不对称的,因此理论上不是一个distance metric,但是呢,很多地方还是用KL散度来衡量两个分布的接近程度。(as ddd goes to zero, KL-divergence is asymptotically symmetric. So, within a local neighbourhood, KL-divergence is approximately symmetric [3].)

2.1 分布空间中的最速下降,Natural gradient方法

前面讲了那么多,终于要引出自然梯度方法的基本推导了。

先推导KL散度的泰勒展开有如下形式:
KL[p(x∣θ)∥p(x∣θ+d)]≈12dTFd\text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta + d)] \approx \frac{1}{2} d^\text{T} \text{F} dKL[p(x∣θ)∥p(x∣θ+d)]≈21​dTFd

证明:写出二阶泰勒展开:

KL[p(x∣θ)∥p(x∣θ+d)]≈KL[p(x∣θ)∥p(x∣θ′)]∣θ′=θ+(∇θ′KL[p(x∣θ)∥p(x∣θ′)]∣θ′=θ)Td+12dT∇θ′2KL[p(x∣θ)∥p(x∣θ′)]∣θ′=θd=KL[p(x∣θ)∥p(x∣θ)]−Ep(x∣θ)[∇θlog⁡p(x∣θ)]Td+12dTFd=12dTFd\text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta+d)] \\[5pt] \approx \text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta')]\vert_{\theta' = \theta} + (\left. \nabla_{\theta'} \text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta')] \right\vert_{\theta' = \theta})^\text{T} d + \frac{1}{2} d^\text{T} \nabla_{\theta'}^2 \, \text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta')]\vert_{\theta' = \theta}d \\[5pt] =\text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta)] - \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \nabla_\theta \log p(x \vert \theta) ]^\text{T} d + \frac{1}{2} d^\text{T} \text{F} d = \frac{1}{2} d^\text{T} \text{F} d\\[5pt] KL[p(x∣θ)∥p(x∣θ+d)]≈KL[p(x∣θ)∥p(x∣θ′)]∣θ′=θ​+(∇θ′​KL[p(x∣θ)∥p(x∣θ′)]∣θ′=θ​)Td+21​dT∇θ′2​KL[p(x∣θ)∥p(x∣θ′)]∣θ′=θ​d=KL[p(x∣θ)∥p(x∣θ)]−Ep(x∣θ)​[∇θ​logp(x∣θ)]Td+21​dTFd=21​dTFd

这样理解为什么引入θ′\theta'θ′:把KL散度第一个p(x∣θ)p(x \vert \theta)p(x∣θ)看成一个确定的分布,而变化的是在第二个分布的参数上。我们依次来看下约等号≈\approx≈后面这三项:

  • 泰勒展开的第一项 KL[pθ∥pθ]=0\text{KL}[p_{\theta} \, \Vert \, p_{\theta}] = 0KL[pθ​∥pθ​]=0

  • 第二项的推导:
    ∇θ′KL[p(x∣θ)∥p(x∣θ′)]=∇θ′Ep(x∣θ)[log⁡p(x∣θ)]−∇θ′Ep(x∣θ)[log⁡p(x∣θ′)]=−Ep(x∣θ)[∇θ′log⁡p(x∣θ′)]=0\nabla_{\theta'} \text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta')] = \nabla_{\theta'} \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \log p(x \vert \theta) ] - \nabla_{\theta'} \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \log p(x \vert \theta') ] \\[8pt] = - \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \nabla_{\theta'} \log p(x \vert \theta') ] =0\\[5pt] ∇θ′​KL[p(x∣θ)∥p(x∣θ′)]=∇θ′​Ep(x∣θ)​[logp(x∣θ)]−∇θ′​Ep(x∣θ)​[logp(x∣θ′)]=−Ep(x∣θ)​[∇θ′​logp(x∣θ′)]=0
    考虑∣θ′=θ\vert_{\theta' = \theta}∣θ′=θ​的话,第二项包含了Score function的期望。正好是本章节前面Fisher Matrix部分讲过的,Score function的期望,已经证明过是0。

  • 第三项,需要用到前面第一章证明过的,F=−Ep(x∣θ)[Hlog⁡p(x∣θ)]\text{F} = -\mathop{\mathbb{E}}_{p(x \vert \theta)} \left[ \text{H}_{\log p(x \vert \theta)} \right]F=−Ep(x∣θ)​[Hlogp(x∣θ)​],以及如下性质:Fisher Information Matrix F is the Hessian of KL-divergence between two distributions p(x∣θ)p(x \vert \theta)p(x∣θ) and p(x∣θ′)p(x \vert \theta')p(x∣θ′), with respect to θ′\theta'θ′, evaluated at θ′=θ\theta' = \thetaθ′=θ,下面是推导过程:
    KL[p(x∣θ)∥p(x∣θ′)]=Ep(x∣θ)[log⁡p(x∣θ)]−Ep(x∣θ)[log⁡p(x∣θ′)]\text{KL} [p(x \vert \theta) \, \Vert \, p(x \vert \theta')] = \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \log p(x \vert \theta) ] - \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \log p(x \vert \theta') ] KL[p(x∣θ)∥p(x∣θ′)]=Ep(x∣θ)​[logp(x∣θ)]−Ep(x∣θ)​[logp(x∣θ′)]
    The first derivative wrt. θ′\theta'θ′ is:
    ∇θ′KL[p(x∣θ)∥p(x∣θ′)]=∇θ′Ep(x∣θ)[log⁡p(x∣θ)]−∇θ′Ep(x∣θ)[log⁡p(x∣θ′)]=−Ep(x∣θ)[∇θ′log⁡p(x∣θ′)]=−∫p(x∣θ)∇θ′log⁡p(x∣θ′)dx\nabla_{\theta'} \text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta')] = \nabla_{\theta'} \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \log p(x \vert \theta) ] - \nabla_{\theta'} \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \log p(x \vert \theta') ] \\[5pt] = - \mathop{\mathbb{E}}_{p(x \vert \theta)} [ \nabla_{\theta'} \log p(x \vert \theta') ] \\[5pt] = - \int p(x \vert \theta) \nabla_{\theta'} \log p(x \vert \theta') \, \text{d}x ∇θ′​KL[p(x∣θ)∥p(x∣θ′)]=∇θ′​Ep(x∣θ)​[logp(x∣θ)]−∇θ′​Ep(x∣θ)​[logp(x∣θ′)]=−Ep(x∣θ)​[∇θ′​logp(x∣θ′)]=−∫p(x∣θ)∇θ′​logp(x∣θ′)dx
    The second derivative is:
    ∇θ′2KL[p(x∣θ)∥p(x∣θ′)]∣θ′=θ=−∫p(x∣θ)∇θ′2log⁡p(x∣θ′)∣θ′=θdx=−∫p(x∣θ)Hlog⁡p(x∣θ)dx=−Ep(x∣θ)[Hlog⁡p(x∣θ)]=F\nabla_{\theta'}^2 \, \text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta')]\vert_{\theta' = \theta} = - \int p(x \vert \theta) \, \nabla_{\theta'}^2 \log p(x \vert \theta')\vert_{\theta' = \theta} \, \text{d}x \\[5pt] = - \int p(x \vert \theta) \, \text{H}_{\log p(x \vert \theta)} \, \text{d}x \\[5pt] = - \mathop{\mathbb{E}}_{p(x \vert \theta)} [\text{H}_{\log p(x \vert \theta)}] \\[5pt] = \text{F} ∇θ′2​KL[p(x∣θ)∥p(x∣θ′)]∣θ′=θ​=−∫p(x∣θ)∇θ′2​logp(x∣θ′)∣θ′=θ​dx=−∫p(x∣θ)Hlogp(x∣θ)​dx=−Ep(x∣θ)​[Hlogp(x∣θ)​]=F

所以得到KL散度的二阶泰勒展开形式:
KL[p(x∣θ)∥p(x∣θ+d)]≈12dTFd\text{KL}[p(x \vert \theta) \, \Vert \, p(x \vert \theta + d)] \approx \frac{1}{2} d^\text{T} \text{F} dKL[p(x∣θ)∥p(x∣θ+d)]≈21​dTFd

现在,我们想知道什么是使分布空间中的损失函数L最小化的更新向量d,以便我们知道哪个方向的KL散度减小得最多。这类似于最速下降法,但在以KL散度为度量的分布空间,而不是通常的以欧氏度量的参数空间。为此,我们将最小化:

d∗=arg minds.t. KL[pθ∥pθ+d]≤cL(θ+d),d^* = \mathop{\text{arg min}}_{d \text{ s.t. } \text{KL}[p_\theta \Vert p_{\theta + d}] \leq c} \mathcal{L} (\theta + d) \, , d∗=arg mind s.t. KL[pθ​∥pθ+d​]≤c​L(θ+d),

如果我们写出上面的最小化问题在拉格朗日乘子法形式,用二阶泰勒展开近似KL散度,用一阶泰勒级数展开近似L\mathcal{L}L:

d∗=arg mindL(θ+d)+λ(KL[pθ∥pθ+d]−c)≈arg mindL(θ)+∇θL(θ)Td+12λdTFd−λcd^* = \mathop{\text{arg min}}_d \, \mathcal{L} (\theta + d) + \lambda \, (\text{KL}[p_\theta \Vert p_{\theta + d}] - c) \\[8pt] \approx \mathop{\text{arg min}}_d \, \mathcal{L}(\theta) + \nabla_\theta \mathcal{L}(\theta)^\text{T} d + \frac{1}{2} \lambda \, d^\text{T} \text{F} d - \lambda c d∗=arg mind​L(θ+d)+λ(KL[pθ​∥pθ+d​]−c)≈arg mind​L(θ)+∇θ​L(θ)Td+21​λdTFd−λc
其中λ\lambdaλ是拉格朗日系数,要求解这个优化问题,我们求ddd的梯度等于0:
0=∂∂d[L(θ)+∇θL(θ)Td+12λdTFd−λc]=∇θL(θ)+λFdλFd=−∇θL(θ)d=−1λF−1∇θL(θ)0 = \frac{\partial}{\partial d} \left[\mathcal{L}(\theta) + \nabla_\theta \mathcal{L}(\theta)^\text{T} d + \frac{1}{2} \lambda \, d^\text{T} \text{F} d - \lambda c\right] \\[8pt] = \nabla_\theta \mathcal{L}(\theta) + \lambda \, \text{F} d \\[8pt] \lambda \, \text{F} d = -\nabla_\theta \mathcal{L}(\theta) \\[8pt] d = -\frac{1}{\lambda} \text{F}^{-1} \nabla_\theta \mathcal{L}(\theta) \\[8pt] 0=∂d∂​[L(θ)+∇θ​L(θ)Td+21​λdTFd−λc]=∇θ​L(θ)+λFdλFd=−∇θ​L(θ)d=−λ1​F−1∇θ​L(θ)

因此,先不看1λ\frac{1}{\lambda}λ1​(可以一起考虑吸收到learning rate部分),我们得到在分布空间中,最优的更新方向是−F−1∇θL(θ)-\text{F}^{-1} \nabla_\theta \mathcal{L}(\theta)−F−1∇θ​L(θ)。(类比二阶优化方法的牛顿法,更新方向是−H−1∇θL(θ)-\text{H}^{-1} \nabla_\theta \mathcal{L}(\theta)−H−1∇θ​L(θ),非常类似吧)。

我们把Natural gradient 定义成:∇~θL(θ)=F−1∇θL(θ)\tilde{\nabla}_\theta \mathcal{L}(\theta) = \text{F}^{-1} \nabla_\theta \mathcal{L}(\theta)∇~θ​L(θ)=F−1∇θ​L(θ). 自然梯度下降算法的基本流程如下:(一般我们会采用batch模式的Empirical Fisher Matrix:F=1N∑i=1N∇log⁡p(xi∣θ)∇log⁡p(xi∣θ)T\text{F} = \frac{1}{N} \sum_{i=1}^{N} \nabla \log p(x_i \vert \theta) \, \nabla \log p(x_i \vert \theta)^{\text{T}}F=N1​∑i=1N​∇logp(xi​∣θ)∇logp(xi​∣θ)T)

与Adam关系的类比讨论

在数据量较少的非常简单的模型中,我们看到可以很容易地实现自然梯度下降。但众所周知,深度学习模型中的参数数目非常大,千万甚至亿级参数量模型很常见,即使一层都有上百万参数。这类模型的Fisher信息矩阵难以计算、存储、以及求逆。这和二阶优化方法在深度学习中不受欢迎的原因是一样的。

解决这个问题的一种方法是计算近似的Fisher/Hessian。像ADAM[5]这样的方法计算梯度的一阶和二阶moving average(m和v)。m是动量momentum,这里不讨论。而v可以看成是Fisher信息矩阵的近似——但将其约束为对角矩阵(协方差的对角线元素是梯度的平方)。因此,在ADAM中,我们只需要O(n)O(n)O(n)空间来存储(F的近似值)而不是O(n2)O(n^2)O(n2),并且可以在O(n)O(n)O(n)而不是O(n3)O(n^3)O(n3)中进行求逆运算。在实践中,ADAM工作得非常好,是目前优化深层神经网络的基准优化方法。

OK,这一篇终于基本写好了,后面会继续这个话题,再记录一下如何加速自然梯度方法的工作,主要是比较知名的K-FAC算法。这篇可能还有一些关于自然梯度的引申讨论,过几天再补。参考[6][7]。TBD…

参考资料

[1] https://wiseodd.github.io/techblog/2018/03/11/fisher-information/
[2] https://wiseodd.github.io/techblog/2018/03/14/natural-gradient/
[3] Martens, James. “New insights and perspectives on the natural gradient method.” arXiv preprint arXiv:1412.1193 (2014).
[4] Ly, Alexander, et al. “A tutorial on Fisher information.” Journal of Mathematical Psychology 80 (2017): 40-55
[5] ADAM A METHOD FOR STOCHASTIC OPTIMIZATION. 2015
[6] 多角度理解自然梯度,https://zhuanlan.zhihu.com/p/82934100
[7] 如何理解 natural gradient descent?,https://www.zhihu.com/question/266846405

入门神经网络优化算法(五):一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)相关推荐

  1. 判别两棵树是否相等 设计算法_一文看懂生成对抗网络 - GANs?(附:10种典型算法+13种应用)...

    生成对抗网络 – GANs 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频.我们手机里的照片处理软件中就会使用到它. 本文将详细介绍生成对抗网络 – GANs 的设计初衷.基 ...

  2. 一文看懂页面置换算法

    页面置换算法分为两类 1.局部页面置换算法 最优页面置换算法(OPT.optimal) 先进先出算法(FIFO) 最近最久未使用算法(LRU,Least Recently Used) 时钟页面置换算法 ...

  3. 匈牙利算法——你一定可以看懂的图论算法

    第一次讲解一个算法,也是最近才学到的一个算法,我的语言表达能力可能不是很强,排版也不是特别好,但是真的有认真在做一篇文章,如果有好的意见可以告诉我,非常感谢. 匈牙利算法是一种在多项式时间内求解任务分 ...

  4. 用三维Demo看懂各种优化算法,还有C++程序员福音

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 机器学习里的优化算法很多,比如SGD.Adam.AdaGrad.AdaDelta等等,光是它们的迭代公式就已经够让人头疼. 好在Tenso ...

  5. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  6. 一文看懂谷歌 NYC 算法与优化业务全景:三大项目组12个子领域详解(附重点论文下载)

    雷锋网 AI 科技评论消息,众所周知,谷歌的研究团队遍布世界各地,而纽约自然也是非常重要的一个地点,尤其是多个谷歌算法研究小组的孕育地.目前,谷歌算法优化团队为谷歌产品的顺利诞生提供了非常多的算法支持 ...

  7. 目标检测算法图解:一文看懂RCNN系列算法

    在生活中,经常会遇到这样的一种情况,上班要出门的时候,突然找不到一件东西了,比如钥匙.手机或者手表等.这个时候一般在房间翻一遍各个角落来寻找不见的物品,最后突然一拍大脑,想到在某一个地方,在整个过程中 ...

  8. 神经网络模型 基本概念 一文看懂

    1. 神经元 Xi为一项输入,Wi为对应的参数 先求和W0*X0+W1*X1+W2*X2+....=sum 再使用激活函数得到f(sum)=y 2. 神经网络 输入层 :负责将输入向量传递给神经网络. ...

  9. 最短路径算法 Floyd-傻子也能看懂的弗洛伊德算法(转)

    讲的清楚的1 https://www.cnblogs.com/wangyuliang/p/9216365.html 讲的清楚的2 ahttps://zhuanlan.zhihu.com/p/13911 ...

  10. 从梯度下降到 Adam!一文看懂各种神经网络优化算法

    来源丨量子位 编辑丨极市平台 导读 在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯度下降,还是Adam方法?这篇文章介绍了不同优化算 ...

最新文章

  1. c++获取可用端口号_PG高可用架构实施方案
  2. 死磕Java并:J.U.C之ConcurrentHashMap红黑树转换分析
  3. tableau实战系列(二十八)-以可视化的方式打开关联分析算法购物篮分析(Market Basket Analysis)
  4. Spring Cloud GatewayAPI网关服务
  5. mybatis No enum const class org.apache.ibatis.type.JdbcType.Date 坑爹的配置
  6. 毕啸南专栏 | 对话旷视CEO印奇:AI产业2018年将迎来转折
  7. java es scroll,Elasticsearch Scroll分页检索案例分享
  8. 只需订阅“全部文章”专栏便可查看所有文章
  9. python获取子窗口句柄
  10. 115怎么利用sha1下载东西_如何不登陆115网盘也能使用迅雷下载其文件?教你手动解析115网盘文件真实的直接下载地址【转】...
  11. CentOS 8 下载安装stress实际操作以及实际应用,以及遇到的问题
  12. 9.5 用算法和数学奠定专业基础——《逆袭大学》连载
  13. 买“背包“吗?送“手臂”的那种!卡耐基梅隆大学可穿戴机械臂问世
  14. 电源线的噪声共模干扰和差模干扰优化设计
  15. cym : BaseQuickAdapter.setOnItemChildClickListener失效点击没反应
  16. A.C.E的JAVA学习笔记--5/14/21
  17. linux服务器上的项目读取本地文件,java访问linux服务器读取文件路径
  18. VRBT视频彩铃解决方案
  19. Excel插入时间(精确到秒)
  20. 嵌入式软件工程师有必要精通算法,参加各种编程大赛吗?

热门文章

  1. 精益创业 (创业理念)
  2. c#.net开发金融行情分析软件k线图蜡烛图之布林线指标计算
  3. 百度地图 3.0 WEB离线开发
  4. 面试总结(1)---7.28
  5. 地震 位错模型 matlab,地球物理学论文范文参考 地球物理学毕业论文范文[精选]...
  6. 在html创建色块,浅谈网页制作中色块使用
  7. 可以打印快递电子面单的表格
  8. 2019年系统分析师考试总结
  9. 两次碰到编译错误: crosses initialization of...
  10. 封装win7系统,安装系统时提示:windows无法完成系统配置,若要尝试恢复配置,请重新启动计算机?