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

Posted 大饼博士X

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了入门神经网络优化算法:一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)相关的知识,希望对你有一定的参考价值。

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

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

文章目录

二阶优化算法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θ)1p(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=1Nlogp(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)的主要内容,如果未能解决你的问题,请参考以下文章

入门神经网络优化算法:二阶优化算法K-FAC

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

神经网络优化算法综述

入门科普:一文看懂NLP和中文分词算法(附代码举例)

入门神经网络优化算法:Gradient Descent,Momentum,Nesterov accelerated gradient

PSO算法解决带约束条件的优化问题