自然梯度和梯度的区别
自然梯度是在梯度前左乘某正定矩阵(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矩阵则是在经验分布之下的。
参考资料