在一般的梯度下降中,我们认为目标函数梯度的负方向可以最小化一步更新后的目标函数值,这里隐含地假设了参数空间是欧氏空间,且参数构成了一组正交归一的坐标系统。在很多情况下,这一假设是不成立的,作为结果,优化过程的收敛效率可能受到影响。

作为解决这一问题的一种思路,自然梯度使用Fisher信息矩阵(的逆)作为梯度的pre-conditioner来矫正梯度的方向。本文将分为两篇,在第一篇中,我们从Fisher信息矩阵(FIM)的定义出发,推导出Fisher矩阵与KL散度的关系,并建立如下结论:FIM可以作为概率模型的参数空间的一种黎曼度量。在第二篇中,我们推导自然梯度中为何引入FIM来修正梯度方向,以及自然梯度的一些性质。

Score function与FIM

假设我们有一个由$\theta$参数化的概率模型,模型分布为$p(x|\theta)$,记对数似然函数为$\ell(\theta|x):=\log p(x|\theta)$。与对数似然函数相关的有两个定义,score function和fisher information。

定义1(score function):score function $s(\theta|x)$被定义为对数似然函数关于参数$\theta$的梯度

$$ s(\theta|x)=\nabla_\theta \ell(\theta|x) $$

一些文章会提到score function是用来为参数的好坏打分(score),这是不严谨的。score function中的「score」其实不是为参数打分,而是在Fisher研究的遗传统计问题中给基因异常家庭的「打分」(参见:Interpretation of “score”)。因此,score function只是约定俗成的一种名称,其实质就是似然函数的梯度,描述的是似然函数对于参数变化的敏感程度。

性质1:Score function期望为0 $$ \mathbb{E}_{p(x|\theta)}[s(\theta|x)]=\boldsymbol{0} $$

proof

$$ \begin{align} \mathbb{E}_{p(x|\theta)}[s(\theta|x)] &=\mathbb{E}_{p(x|\theta)}[\nabla_\theta \ell(\theta|x)]\\ &=\int_x p(x|\theta)\nabla_\theta \log p(x|\theta) dx\\ &=\int_x p(x|\theta)\frac{\nabla_\theta p(x|\theta)}{p(x|\theta)} dx\\ &=\int_x \nabla_\theta p(x|\theta) dx\\ &=\nabla_\theta\int_x p(x|\theta) dx\\ &=\nabla_\theta 1 = \boldsymbol{0}\\ \end{align} $$

通过性质1可以很顺利地引出Fisher信息矩阵的定义,由于score function是「零均值」的,因此协方差可以直接定义为score function的外积的期望。

定义2(Fisher information matrix):Fisher矩阵是score function的方差-协方差矩阵: $$ \begin{align} \boldsymbol{F}(\theta) &:= \mathbb{E}_{p(x|\theta)}\left[ \left(s(\theta|x)-\mathbb{E}_{p(x|\theta)}[s(\theta|x)]\right)\left(s(\theta|x)-\mathbb{E}_{p(x|\theta)}[s(\theta|x)]\right)^\top \right]\\ &=\mathbb{E}_{p(x|\theta)}\left[ \nabla_\theta \ell(\theta|x)\nabla_\theta \ell(\theta|x)^\top \right]\quad\triangleright\text{性质1} \end{align} $$

Fisher信息的应用有很多,但我们主要关心它在优化方法中的应用。我们下面会证明,Fisher矩阵是分布$p(x|\theta)$$p(x|\theta')$的KL散度的Hessian在$\theta'=\theta$处的取值。这点结论之所以重要,是因为这提供了衡量概率模型参数在函数流形上的距离的一种方法,也就是自然梯度方法的基础

FIM与KL散度近似

下面我们尝试通过如下路径建立FIM与KL散度的关系:首先我们证明,FIM与似然函数的Hessian的期望的负值相等(性质2),接着我们利用这一性质,进一步得到:FIM是分布$p(x|\theta)$$p(x|\theta')$的KL散度的Hessian在$\theta'=\theta$处的取值(性质3)。通过对KL散度做二阶泰勒展开,可以使用FIM局部近似KL散度,衡量参数在概率模型函数流形上的距离,后面我们会用这个近似关系来推导自然梯度。

性质2:FIM与似然函数的Hessian的期望的负值相等

$$ \boldsymbol{F}(\theta) = -\mathbb{E}_{p(x|\theta)}[\boldsymbol{H}(\ell(\theta|x))] $$

proof

$$ \begin{align} \boldsymbol{H}(\ell(\theta|x)) &=\nabla^2_\theta\left(\log p(x|\theta)\right)\\ &=\nabla_\theta\left(\frac{\nabla_\theta p(x|\theta)}{p(x|\theta)}\right)\\ &=\frac{p(x|\theta)\nabla^2_\theta p(x|\theta)-\nabla_\theta p(x|\theta)\nabla_\theta p(x|\theta)^\top}{p(x|\theta)^2}\\ &=\frac{\nabla^2_\theta p(x|\theta)}{p(x|\theta)}-\frac{\nabla_\theta p(x|\theta)\nabla_\theta p(x|\theta)^\top}{p(x|\theta)^2}\\ &=\frac{\boldsymbol{H}(p(x|\theta))}{p(x|\theta)}-\nabla_\theta\log p(x|\theta)\nabla_\theta\log p(x|\theta)^\top\\ &=\frac{\boldsymbol{H}(p(x|\theta))}{p(x|\theta)}-\nabla_\theta\ell(\theta|x)\nabla_\theta\ell(\theta|x)^\top\\ \end{align} $$

$$ \begin{align} \mathbb{E}_{p(x|\theta)}[\boldsymbol{H}(\ell(\theta|x))] &=\mathbb{E}_{p(x|\theta)}\left[\frac{\boldsymbol{H}(p(x|\theta))}{p(x|\theta)}\right]-\mathbb{E}_{p(x|\theta)}\left[\nabla_\theta\ell(\theta|x)\nabla_\theta\ell(\theta|x)^\top\right]\\ &=\int_x p(x|\theta)\frac{\boldsymbol{H}(p(x|\theta))}{p(x|\theta)}dx-\boldsymbol{F}(\theta)\\ &=\int_x \boldsymbol{H}(p(x|\theta))dx-\boldsymbol{F}(\theta)\\ &=\boldsymbol{H}\left(\int_xp(x|\theta)dx\right)-\boldsymbol{F}(\theta)\\ &=\boldsymbol{H}(1)-\boldsymbol{F}(\theta)\\ &=0-\boldsymbol{F}(\theta)\\ &=-\boldsymbol{F}(\theta)\\ \end{align} $$

性质3:FIM是分布$p(x|\theta)$$p(x|\theta')$的KL散度的Hessian在$\theta'=\theta$处的取值。

$$ \boldsymbol{F}(\theta)=\nabla_{\theta'}^2 D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right)|_{\theta'=\theta} $$

proof

首先将KL散度展开: $$ \begin{align} D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right) &=\mathbb{E}_{p(x|\theta)}\left[ \log\left( \frac{p(x|\theta)}{p(x|\theta')} \right) \right]\\ &=\mathbb{E}_{p(x|\theta)}\left[ \log\left(p(x|\theta) \right) \right]-\mathbb{E}_{p(x|\theta)}\left[ \log\left(p(x|\theta') \right) \right]\\ \end{align} $$

接着,求一阶梯度:

$$ \begin{align} \nabla_{\theta'}D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right) &=\mathbb{E}_{p(x|\theta)}\left[ \nabla_{\theta'}\log\left(p(x|\theta) \right) \right]-\mathbb{E}_{p(x|\theta)}\left[ \nabla_{\theta'}\log\left(p(x|\theta') \right) \right]\\ &=0-\mathbb{E}_{p(x|\theta)}\left[ \nabla_{\theta'}\log\left(p(x|\theta') \right) \right]\\ &=-\mathbb{E}_{p(x|\theta)}\left[ \nabla_{\theta'}\log\left(p(x|\theta') \right) \right]\\ \end{align} $$

继续求导:

$$ \begin{align} \nabla^2_{\theta'}D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right) &=-\mathbb{E}_{p(x|\theta)}\left[ \nabla^2_{\theta'}\log\left(p(x|\theta') \right) \right]\\ &=-\mathbb{E}_{p(x|\theta)}\left[ \boldsymbol{H}(\ell(\theta'|x)) \right]\\ \end{align} $$

代入$\theta'=\theta$$$ \begin{align} \nabla^2_{\theta'}D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right)|_{\theta'=\theta}&=-\mathbb{E}_{p(x|\theta)}\left[ \boldsymbol{H}(\ell(\theta|x)) \right]\\ &=-\boldsymbol{F}(\theta) \quad\triangleright\text{性质2} \end{align} $$

由于FIM是KL散度的Hessian,可以将其用于KL的近似。

性质4:FIM可以用于KL散度的局部二阶近似: $$ D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta+\Delta_\theta)\right)\approx \frac{1}{2}\Delta_\theta^\top\boldsymbol{F}(\theta)\Delta_\theta $$

proof

我们记$\theta'=\theta+\Delta_\theta$ $$ \begin{align} D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right)&\approx D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right)|_{\theta'=\theta} + \Delta_\theta^\top\left(\nabla_{\theta'}D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right)\right)|_{\theta'=\theta}\\ &+\frac{1}{2}\Delta_\theta^\top\left(\nabla^2_{\theta'}D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right)\right)|_{\theta'=\theta}\Delta_\theta\\ &=0 + 0 + \frac{1}{2}\Delta_\theta^\top\boldsymbol{F}(\theta)\Delta_\theta\\ &=\frac{1}{2}\Delta_\theta^\top\boldsymbol{F}(\theta)\Delta_\theta\\ \end{align} $$

其中二阶导到FIM的转化直接利用了性质3;一阶项为0是因为:

$$ \begin{align} \Delta_\theta^\top\left(\nabla_{\theta'}D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta')\right)\right)|_{\theta'=\theta} &= \Delta_\theta^\top\left.\nabla_{\theta'}\mathbb{E}_{p(x|\theta)}\left[\log{\frac{p(x|\theta)}{p(x|\theta')}}\right]\right|_{\theta'=\theta} \\ &= \Delta_\theta^\top\left.\mathbb{E}_{p(x|\theta)}\left[\nabla_{\theta'}{\log\frac{p(x|\theta)}{p(x|\theta')}}\right]\right|_{\theta'=\theta}\\ &= \Delta_\theta^\top\left.\mathbb{E}_{p(x|\theta)}\left[\nabla_{\theta'}{-\log p(x|\theta')}\right]\right|_{\theta'=\theta}\\ &= -\Delta_\theta^\top\left.\mathbb{E}_{p(x|\theta)}\left[\nabla_{\theta'}{\log p(x|\theta')}\right]\right|_{\theta'=\theta} \\ &= 0\quad\triangleright\text{性质1} \end{align} $$

FIM作为黎曼度量

在建立了FIM可用于KL散度近似的结论之后,我们将其放到一个新的框架里来审视——这种近似关系实际上定义了一种黎曼度量。

在黎曼几何中,度量张量(metric tensor)提供了一种将坐标值转化为距离(或内积)的工具。假设在流形上的给定点$p$的切空间$T_pM$上定义了一组基向量$\{e_1,\cdots,e_n\}$,黎曼度量可以定义为基向量两两之间的内积: $$ g_{ij} = \langle \boldsymbol{e}_i, \boldsymbol{e}_j\rangle $$

对于任意切向量$\boldsymbol{u},\boldsymbol{v}\in T_pM$,可以利用这个黎曼度量来定义切向量的内积:

$$ \begin{align} \langle \boldsymbol{u}, \boldsymbol{v}\rangle _p &= \langle \sum_i u_i\boldsymbol{e}_i, \sum_j v_j\boldsymbol{e}_j\rangle _p\\ &=\sum_{ij}u_i v_j \langle \boldsymbol{e}_i, \boldsymbol{e}_j\rangle\\ &=\sum_{ij}u_i v_j g_{ij}\\ &= \boldsymbol{u}^\top \boldsymbol{G}\boldsymbol{v} \end{align} $$

其中$(\boldsymbol{G})_{ij}=g_{ij}$,即将度量组织成一个矩阵的形式。基于这个内积可以衍生出$p$点附近的微小距离(线元)的计算,考虑$p$点上的一个微小位移$\boldsymbol{\delta}$,则对应的线元为: $$ |\boldsymbol{\delta}|^2 = \boldsymbol{\delta}^\top\boldsymbol{G}\boldsymbol{\delta} $$

作为一个特例,考虑常见的欧氏空间,由于基向量都是规范正交的,任意两个不同基向量的内积是0,且基向量与自身的内积为1,因此对应的度量张量是$\boldsymbol{G}=\boldsymbol{I}$,这一点对于任意点都成立。因此欧氏空间对应的内积总是$\boldsymbol{u}^\top \boldsymbol{v}$,线元总是$|\boldsymbol{\delta}|^2 = \boldsymbol{\delta}^\top\boldsymbol{\delta}$

回顾上一节推导得到的性质4($D_{\text{KL}}\left(p(x|\theta)\|p(x|\theta+\Delta_\theta)\right)\approx \frac{1}{2}\Delta_\theta^\top\boldsymbol{F}(\theta)\Delta_\theta$),通过对比上述的线元的计算,可以发现二者的形式是一致的。

现在,如果我们将不同参数$\theta$实例化的分布族$\mathcal{F}=\{p_\theta:\theta\in \Theta\}$拓展为一个流形$\mathcal{M}$,使得流形$\mathcal{M}$上的点与分布族$\mathcal{F}$中的分布构成双射(一一对应关系)。这样,分布中的参数$\theta$可以看做流形上的坐标。如果我们将参数的距离定义为参数引导的概率分布的KL散度1,则由性质4的近似,$\boldsymbol{F}(\theta)$可以看做点$\theta$的黎曼度量张量。

下篇文章中,我们会通过泛化标准梯度下降的距离约束条件为黎曼距离,从而得到自然梯度方法的更新公式,并给出这种新的约束下对应的一些性质。


  1. 这里的距离是广义而言的,因为KL散度不满足距离的约定。 ↩︎