natural gradient笔记

自然梯度和梯度的区别

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

~h=G1h

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

|dw|2=gij(w)dwidwj

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

L(w+dw)=L(w)+ϵL(w)Tαs.t.|α|2=gijαiαj=1

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

α=G1L(w)

上式中,α是要找的在黎曼空间下降最快的方向,G表示的是gij组成的矩阵。

Fisher矩阵和自然梯度

Fisher矩阵的定义如下

F=EPx,y[logp(x,y|θ)logp(x,y|θ)T]=EPx,y[Hlogp(x,y|θ)]

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

~h=F1h

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

F=EQx[EPy|x[logp(y|x,θ)logp(y|x,θ)T]]=EQx[EPy|x[Hlogp(y|x,θ)]]

Fisher矩阵和KL散度

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

KL(Qx,yPx,y(θ))=q(x,y)logq(y|x)q(x)p(y|x,θ)q(x)=q(x)q(y|x)logq(y|x)p(y|x,θ)=EQx[KL(Qy|xPy|x(θ))]

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

1|S|logp(y|x,θ)

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

假如损失函数L(y,z)=logr(y|z),Fisher矩阵可以写为

F=1|S|EPy|x[HL(y,f(x,θ))]

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

KL(P(θ)P(θ+δ))12δTFδ

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

根据下式定理

A1hhA1=limϵ01ϵargmind:dAϵh(θ+d)

即在半正定矩阵A定义的范数下,A1h是下降最快方向。自然梯度方向是在分布空间上局部下降最快的方向。

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

Fisher矩阵和Hessian矩阵

如果目标函数L=logr(y|z),Fisher矩阵可以写为

F=1|S|EPy|x[HL(y,f(x,θ))]

而Hessian矩阵表达式为

H=1|S|EQ^x,y[HL(y,f(x,θ))]

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

参考资料

posted @   Neo_DH  阅读(434)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示