natural gradient笔记

自然梯度和梯度的区别

自然梯度是在梯度前左乘某正定矩阵(G),即

[ ilde{ abla} h=G^{-1} abla h ]

自然梯度和梯度的区别在于使用的距离度量空间不同,梯度使用的是欧几里得空间,而自然梯度使用的是黎曼空间,即

[egin{align*} vert dwvert^2 = sum\, g_{ij}(w)dw_idw_j end{align*} ]

根据梯度的定义,即在给定(epsilon)范围内下降速度最快的方向即为梯度,将(epsilon)范围定义在黎曼空间即可推导出自然梯度,即

[egin{align*} L(w+dw) &= L(w)+epsilon abla L(w)^T alpha\ s.t.quad vert alphavert^2&= sum g_{ij}alpha_ialpha_j=1 end{align*} ]

应用拉格朗日对偶可以得到

[alpha = G^{-1} abla L(w) ]

上式中,(alpha)是要找的在黎曼空间下降最快的方向,(G)表示的是(g_{ij})组成的矩阵。

Fisher矩阵和自然梯度

Fisher矩阵的定义如下

[egin{align*} F &= E_{P_{x,y}}[ ablalog p(x,y| heta) abla{log p(x,y| heta)}^T]\ &= -E_{P_{x,y}}[H_{log p(x,y| heta)}] end{align*} ]

自然梯度中的(G)使用Fisher矩阵的逆,即

[ ilde abla h = F^{-1} abla h ]

上式中(p(x,yvert heta))表示的是数据特征(x)和标签(y)的联合分布,而通常的监督学习(x)是给定的,学习的算法是要得到(p(yvert x, heta))的分布。对上式中的联合分布进行拆分,得到

[egin{align*} F& = E_{Q_x}[E_{P_{yvert x}}[ ablalog p(y|x, heta) abla{log p(y|x, heta)}^T]]\ &= -E_{Q_x}[E_{P_{yvert x}}[H_{log p(y|x, heta)}]] end{align*} ]

Fisher矩阵和KL散度

对于一个监督学习算法,我们要得到(q(yvert x))的估计(p(yvert x, heta)),我们希望两个分布的距离尽可能的小,即

[egin{align*} KL(Q_{x,y}Vert P_{x,y}( heta))&=int q(x,y)log frac{q(yvert x)q(x)}{p(yvert x, heta)q(x)}\ &=int q(x) int q(yvert x)log frac{q(yvert x)}{p(yvert x, heta)}\ &=E_{Q_x}[KL(Q_{yvert x}Vert P_{yvert x}( heta))] end{align*} ]

在实际的训练过程中,我们通常是无法得到输入(q(x,y))分布的,通常使用的是(hat{Q}_{x,y}),即经验分布,因此上述的目标可以简化为最小化下式

[-frac{1}{vert Svert}sum log p(yvert x, heta) ]

上式也可以看作最小化负对数似然。

假如损失函数(L(y,z)=-log r(yvert z)),Fisher矩阵可以写为

[F= frac{1}{|S|}sum E_{P_{yvert x}}[H_{L(y, f(x, heta))}] ]

通过对于KL散度的泰勒展开,我们可以得到Fisher矩阵为下式的近似

[KL(P( heta)Vert P( heta+delta))approx frac{1}{2}delta^T Fdelta ]

因此Fisher矩阵是对两个分布local的近似(一定要注意是在local情况下)

根据下式定理

[frac{-A^{-1} abla h}{Vert abla hVert_{A^{-1}}}=lim_{epsilon o0} frac 1 epsilon argmin_{d:Vert dVert_{A}leq epsilon} h( heta+d) ]

即在半正定矩阵(A)定义的范数下,(-A^{-1} abla h)是下降最快方向。自然梯度方向是在分布空间上局部下降最快的方向。

自然梯度和二阶优化的关系

Fisher矩阵和Hessian矩阵

如果目标函数(L=-log r(yvert z)),Fisher矩阵可以写为

[F=frac {1}{ vert Svert} sum E_{Pyvert x}[H_{L(y, f(x, heta))}] ]

而Hessian矩阵表达式为

[H=frac{1}{|S|}sum E_{hat{Q}_{x,y}}[H_{L(y,f(x, heta))}] ]

可以看到只是两者是在不同分布下的期望,Fisher矩阵是在预测器给定(x)关于(y)的条件分布,是跟参数( heta)有关的。而Hessian矩阵则是在经验分布之下的。

参考资料

原文地址:https://www.cnblogs.com/DemonHunter/p/13288010.html