Fisher矩阵与自然梯度法

文章目录

Fisher矩阵及自然梯度法

自然梯度法相比传统的梯度下降法具有以下优势:

更好的适应性:自然梯度法通过引入黎曼流形上的梯度概念,能够更好地适应参数空间的几何结构。这使得自然梯度法在求解具有复杂几何结构的参数优化问题时具有更高的效率。

更高的收敛速度:由于自然梯度法考虑了参数空间的几何结构,因此它在参数更新过程中能够更准确地找到下降方向。这有助于加快算法的收敛速度,提高优化效率。

避免局部最优解:自然梯度法通过调整参数空间的几何结构,有助于避免陷入局部最优解。这使得自然梯度法在求解全局优化问题时具有更好的性能。

Fisher矩阵

我们使用迭代法求解问题时,计算每个参数相对于损失函数的导数,即雅可比矩阵。这些导数表示可以更新参数,以获得损失函数最大变化的方向,称为梯度。

得到梯度后,我们在梯度方向的负方向上,更新参数,从而减少损失函数。但是由于参数所带的噪声的不同,不同的参数应该据此调整步长。


如上两个图,同样的期望差异,但是明显参数的差异对符合第二图中的分布的函数影响更大。

因此,定义Fisher矩阵用来衡量参数空间的曲率,即参数对函数模型的敏感性。

定义一个最大似然问题: max ⁡ p ( x ∣ θ ) \max p(x|\theta) maxp(x∣θ)

再设立一个得分函数 s ( θ ) s(\theta) s(θ),定义为似然函数的对数梯度,
s ( θ ) = ∇ θ log ⁡ p ( x ∣ θ ) s(\theta)=\nabla_\theta\log p(x\mid\theta) s(θ)=∇θlogp(x∣θ)

用来评估我们最大化似然函数的好坏以及参数对似然函数的敏感度。其期望值为0, E p ( x ∣ θ ) s ( θ ) = 0 \mathbb{E}_{p(x|\theta)}s(\\theta)=0 Ep(x∣θ)s(θ)=0,证明过程见参考文献。

Fisher矩阵定义为函数 s ( θ ) s(\theta) s(θ)的方差: F ( θ ) = E p ( x ∣ θ ) ( s ( θ ) − 0 ) ( s ( θ ) − 0 ) T = E p ( x ∣ θ ) ∇ θ log ⁡ p ( x ∣ θ ) ∇ θ log ⁡ p ( x ∣ θ ) T F(\theta) =\mathbb{E}{p(x|\theta)}\left(s(\\theta)-0)(s(\\theta)-0)\^\\mathrm{T}\\right =\mathbb{E}{p(x|\theta)}\left\\nabla_\\theta\\log p(x\\mid\\theta)\\nabla_\\theta\\log p(x\\mid\\theta)\^\\mathrm{T}\\right F(θ)=Ep(x∣θ)(s(θ)−0)(s(θ)−0)T=Ep(x∣θ)∇θlogp(x∣θ)∇θlogp(x∣θ)T

= E ( ∂ log ⁡ p ( x , θ ) ∂ θ ) ( ∂ log ⁡ p ( x , θ ) ∂ θ ) T = E\left\\left(\\frac{\\partial \\log p(x, \\theta)}{\\partial \\theta}\\right)\\left(\\frac{\\partial \\log p(x, \\theta)}{\\partial \\theta}\\right)\^{\\rm T} \\right =E(∂θ∂logp(x,θ))(∂θ∂logp(x,θ))T

其中 E E E表示期望操作。Fisher矩阵可以帮助我们理解参数对模型的影响,以及在优化过程中如何调整参数以更有效地学习函数。

自然梯度法

同样使用传统的Euclidean 距离来衡量参数的差异时,参数的噪声分布并未被考虑。使用KL散度用来衡量,然而,同样观察文中的两图,如果我们只在参数空间中工作,我们就不能考虑关于参数实现的分布的这些信息。但在分布空间中,即当我们考虑高斯的形状时,第一和第二图像中的距离是不同的。在第一幅图像中,KL散度应该更低,因为这些高斯之间有更多的重叠。因而,我们使用KL散度来衡量参数的正确性:
D K L ( p ∥ q ) = ∑ i = 1 n p ( x i ) log ⁡ ( p ( x i ) q ( x i ) ) D_{KL}\left(p\|q\right)=\sum_{i=1}^{n}p\left(x_{i}\right)\log\left(\frac{p(x_{i})}{q(x_{i})}\right) DKL(p∥q)=i=1∑np(xi)log(q(xi)p(xi))

设 θ \theta θ为参数期望, θ ′ \theta' θ′为参数估计,则定义其损失函数(KL散度)如下:
L ( θ ) = K L p ( x ∣ θ ) ∥ p ( x ∣ θ ′ ) = E ⁡ p ( x ∣ θ ) log ⁡ p ( x ∣ θ ) − E ⁡ p ( x ∣ θ ) log ⁡ p ( x ∣ θ ′ ) \mathcal{L}(\theta)=\mathrm{KL}\leftp(x\\mid\\theta)\\\|p\\left(x\\mid\\theta\^{\\prime}\\right)\\right=\underset{p(x\mid\theta)}{\operatorname*{\mathbb{E}}}\left\\log p(x\\mid\\theta)\\right-\underset{p(x\mid\theta)}{\operatorname*{\mathbb{E}}}\left\\log p\\left(x\\mid\\theta\^{\\prime}\\right)\\right L(θ)=KLp(x∣θ)∥p(x∣θ′)=p(x∣θ)Elogp(x∣θ)−p(x∣θ)Elogp(x∣θ′)

Fisher信息矩阵 F F F等同于两个分布 p ( x ∣ θ ) p(x|\theta) p(x∣θ)和 p ( x ∣ θ ′ ) p(x|\theta') p(x∣θ′)之间关于 θ ′ \theta' θ′的KL散度的Hessian矩阵。 证明过程见参考文献

算法伪代码:

自然梯度下降循环:

  对我们的模型进行正向传递,并计算损失 L ( θ ) \mathcal{L}(\theta) L(θ)。

  计算梯度 ∇ θ L ( θ ) \nabla_\theta \mathcal{L}(\theta) ∇θL(θ)。

  计算Fisher信息矩阵 F F F或其经验版本。

  计算自然梯度 ∇ ~ θ L ( θ ) = F − 1 ∇ θ L ( θ ) \tilde{\nabla}\theta\mathcal{L}(\theta)=\mathrm{F}^{-1}\nabla\theta\mathcal{L}(\theta) ∇~θL(θ)=F−1∇θL(θ)。

  更新参数: θ = θ − α ∇ ~ θ L ( θ ) \theta = \theta - \alpha\tilde{\nabla}_\theta\mathcal{L}(\theta) θ=θ−α∇~θL(θ),其中 α \alpha α是学习率。

  直到收敛。

Fisher矩阵和自然梯度法是机器学习中重要的概念和方法,用于优化问题的求解。Fisher矩阵可以帮助我们理解参数空间的曲率,而自然梯度法则利用Fisher矩阵的信息来更好地学习函数。通过结合这两个概念,我们可以更有效地优化模型参数,并提高学习的效率和性能。

马氏距离&高斯牛顿

马氏距离可以考虑变量的概率情况来构造误差方程:
e ( x ) = ∣ ∣ r ( x ) ∣ ∣ Σ = r ( x ) Σ r T ( x ) e(x) = \vert\vert r(x)\vert\vert_\Sigma = r(x)\Sigma r^{\rm T}(x) e(x)=∣∣r(x)∣∣Σ=r(x)ΣrT(x)

泰勒展开式:
e ( x ) = e ( x 0 ) + J ( x 0 ) Δ x + 1 2 Δ x ⋅ H ( x 0 ) ⋅ Δ x T e(x) =e(x_0)+J(x_0)\Delta x + \frac{1}{2}\Delta x\cdot H(x_0)\cdot \Delta x^{\rm T} e(x)=e(x0)+J(x0)Δx+21Δx⋅H(x0)⋅ΔxT
r ( x ) = r ( x 0 ) + J r ( x 0 ) Δ x r(x) = r(x_0)+J_r(x_0)\Delta x r(x)=r(x0)+Jr(x0)Δx
e ( x ) = r ( x ) Σ r T ( x ) = r ( x 0 ) Σ r T ( x 0 ) + 2 J r T ( x 0 ) Σ r ( x 0 ) + J r T ( x 0 ) Σ J r ( x 0 ) e(x) = r(x)\Sigma r^{\rm T}(x)=r(x_0)\Sigma r^{\rm T}(x_0)+2J_r^{\rm T}(x_0)\Sigma r(x_0)+J_r^{\rm T}(x_0)\Sigma J_r(x_0) e(x)=r(x)ΣrT(x)=r(x0)ΣrT(x0)+2JrT(x0)Σr(x0)+JrT(x0)ΣJr(x0)

从而可知:
J = 2 J r T Σ r , H = 2 J r T Σ J r J = 2J_r^{\rm T}\Sigma r, \ \ H=2J_r^{\rm T}\Sigma J_r J=2JrTΣr, H=2JrTΣJr
Δ x = ( J r T Σ J r ) − 1 J r T Σ r \Delta x = (J_r^{\rm T}\Sigma J_r)^{-1}J_r^{\rm T}\Sigma r Δx=(JrTΣJr)−1JrTΣr

参考链接

Fisher矩阵 https://agustinus.kristia.de/techblog/2018/03/11/fisher-information/
自然梯度法 https://agustinus.kristia.de/techblog/2018/03/14/natural-gradient/
自然梯度法 https://kvfrans.com/what-is-the-natural-gradient-and-where-does-it-appear-in-trust-region-policy-optimization/
https://zhuanlan.zhihu.com/p/546885304

相关推荐
xqqxqxxq4 小时前
LeetCode Hot100 矩阵专题题解笔记
笔记·leetcode·矩阵
Dylan的码园6 小时前
求平均成绩 矩阵数据处理 【循环处理 二维数组】
c++·线性代数·矩阵
苏打豆1 天前
CRISP源码阅读——基于ROS2力矩反馈控制器与速度加速度零空间
c++·线性代数·算法·矩阵·机器人
梦帮科技1 天前
LoRA / QLoRA 低秩矩阵流形更新:SVD 分解、秩与缩放因子 α 的物理意义与梯度稳定性保障
网络·深度学习·神经网络·线性代数·矩阵·架构·数据挖掘
苏打豆2 天前
Pinocchio源码阅读——刚体运动物理量空间变换及求导
c++·线性代数·算法·矩阵·机器人
梦帮科技2 天前
量子张量网络破局大模型:从矩阵乘积态 (MPS) 到张量列 (TT-SVD) 低秩收缩全推导
网络·数据结构·数据库·线性代数·矩阵·架构·模拟退火算法
xailorliu2 天前
矩阵定性-正定负定不定半正定半负定
c++·opencv·线性代数·计算机视觉·矩阵
代数狂人2 天前
机器学习数学基础──第 4 章 矩阵:数据的仓库与批量计算的引擎
人工智能·机器学习·矩阵
梦帮科技3 天前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
wzdark3 天前
矩阵快速幂算法在图路径计算中的应用4
线性代数·算法·矩阵