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[(