入门神经网络优化算法:一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)
Posted 大饼博士X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门神经网络优化算法:一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)相关的知识,希望对你有一定的参考价值。
欢迎查看我的博客文章合集:我的Blog文章索引::机器学习方法系列,深度学习方法系列,三十分钟理解系列等
这个系列会有多篇神经网络优化方法的复习/学习笔记,主要是一些优化器。目前有计划的包括:
- 入门神经网络优化算法(一):Gradient Descent,Momentum,Nesterov accelerated gradient
- 入门神经网络优化算法(二):Adaptive Optimization Methods:Adagrad,RMSprop,Adam
- 入门神经网络优化算法(三):待定
- 入门神经网络优化算法(四):AMSGrad,Radam等一些Adam变种
- 入门神经网络优化算法(五):二阶优化算法Natural Gradient Descent(Fisher Information)
- 入门神经网络优化算法(六):二阶优化算法K-FAC
- 入门神经网络优化算法(七):二阶优化算法Shampoo
文章目录
二阶优化算法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.
证明:
E
p
(
x
∣
θ
)
[
s
(
θ
)
]
=
E
p
(
x
∣
θ
)
[
∇
log
p
(
x
∣
θ
)
]
=
∫
∇
log
p
(
x
∣
θ
)
p
(
x
∣
θ
)
d
x
=
∫
1
p
(
x
∣
θ
)
∇
p
(
x
∣
θ
)
p
(
x
∣
θ
)
d
x
=
∫
∇
p
(
x
∣
θ
)
d
x
=
∇
∫
p
(
x
∣
θ
)
d
x
=
∇
1
=
0
\\mathop\\mathbbE_p(x \\vert \\theta) \\left[ s(\\theta) \\right] = \\mathop\\mathbbE_p(x \\vert \\theta) \\left[ \\nabla \\log p(x \\vert \\theta) \\right] \\\\[5pt] = \\int \\nabla \\log p(x \\vert \\theta) \\, p(x \\vert \\theta) \\, \\textdx \\\\[5pt] = \\int \\frac1p(x \\vert \\theta) \\nabla p(x \\vert \\theta) p(x \\vert \\theta) \\textdx \\\\[5pt] = \\int \\nabla p(x \\vert \\theta) \\, \\textdx \\\\[5pt] = \\nabla \\int p(x \\vert \\theta) \\, \\textdx \\\\[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的不确定性,我们采用协方差矩阵的期望(针对模型本身):
E
p
(
x
∣
θ
)
[
(
s
(
θ
)
−
0
)
(
s
(
θ
)
−
0
)
T
]
\\mathop\\mathbbE_p(x \\vert \\theta) \\left[ (s(\\theta) - 0) \\, (s(\\theta) - 0)^\\textT \\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 = E p ( x ∣ θ ) [ ∇ log p ( x ∣ θ ) ∇ log p ( x ∣ θ ) T ] \\textF = \\mathop\\mathbbE_p(x \\vert \\theta) \\left[ \\nabla \\log p(x \\vert \\theta) \\, \\nabla \\log p(x \\vert \\theta)^\\textT \\right] F=Ep(x∣θ)[∇logp(x∣θ)∇logp(x∣θ)T]
但是呢,往往
p
(
x
∣
θ
)
p(x \\vert \\theta)
p(x∣θ) 形式是比较复杂的,甚至是一个模型的输出,要计算期望是不太可能的。因此,实际上我们用的比较多的情况是,采用training data
X
=
x
1
,
x
2
,
⋯
,
x
N
X = \\ x_1, x_2, \\cdots, x_N \\
X=x1,x2,⋯,xN计算得到的Empirical Fisher:
F
=
1
N
∑
i
=
1
N
∇
log
p
(
x
i
∣
θ
)
∇
log
p
(
x
i
∣
θ
)
T
\\textF = \\frac1N \\sum_i=1^N \\nabla \\log p(x_i \\vert \\theta) \\, \\nabla \\log p(x_i \\vert \\theta)^\\textT
F=N1i=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:
H
log
p
(
x
∣
θ
)
=
J
[
∇
p
(
x
∣
θ
)
p
(
x
∣
θ
)
]
=
H
p
(
x
∣
θ
)
p
(
x
∣
θ
)
−
∇
p
(
x
∣
θ
)
∇
p
(
x
∣
θ
)
T
p
(
x
∣
θ
)
p
(
x
∣
θ
)
=
H
p
(
x
∣
θ
)
p
(
x
∣
θ
)
p
(
x
∣
θ
)
p
(
x
∣
θ
)
−
∇
p
(
x
∣
θ
)
∇
p
(
x
∣
θ
)
T
p
(
x
∣
θ
)
p
(
x
∣
θ
)
=
H
p
(
x
∣
θ
)
p
(
x
∣
θ
)
−
(
∇
p
(
x
∣
θ
)
p
(
x
∣
θ
)
)
(
∇
p
(
x
∣
θ
)
p
(
x
∣
θ
)
)
T
\\textH_\\log p(x \\vert \\theta) = \\textJ \\left[\\frac\\nabla p(x \\vert \\theta)p(x \\vert \\theta)\\right] \\\\[8pt] = \\frac \\textH_p(x \\vert \\theta) \\, p(x \\vert \\theta) - \\nabla p(x \\vert \\theta) \\, \\nabla p(x \\vert \\theta)^\\textTp(x \\vert \\theta) \\, p(x \\vert \\theta) \\\\[8pt] = \\frac\\textH_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)^\\textTp(x \\vert \\theta) \\, p(x \\vert \\theta) \\\\[8pt] = \\frac\\textH_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)^\\textT
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∣θ)以上是关于入门神经网络优化算法:一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)的主要内容,如果未能解决你的问题,请参考以下文章
入门神经网络优化算法:Gradient Descent,Momentum,Nesterov accelerated gradient