前言: 本文介绍自然梯度算法, 这种方法考虑到许多问题的参数空间具有某种结构, 因此考虑放在非欧式空间中优化(但实际优化计算过程仍然在欧式空间), 有兴趣的同学可以读一读原论文Natural Gradient.
欧式空间与黎曼空间
什么是欧式空间?
A finite dimensional real vector space equipped with an inner product \(\left< x,y \right>\), is called a Eulidean space, if it is endowed with the norm \(\left\Vert x\right\Vert=\sqrt{\left< x,x \right>}\), which is referred to as Eulidean norm.
通俗的讲, 首先得有一个向量空间\(\mathbb{R}^n\), 接着在这个空间上定义内积(inner product), 这个内积可以是常见的内积点乘, 也可以是其它内积:
- dot product: \(\left< x,y \right>=\sum_{i=1}^nx_iy_i\), 其中\(x_i\)为\(x\)的第\(i\)个分量.
- \(Q\) inner: \(\left< x,y \right>=x^TQy\), 其\(Q\)为\(n\)阶正定阵.
然后由内积可以诱导出对应的范数:
- \(l_2\) norm: \(\left\Vert x\right\Vert=\sqrt{\left< x,x \right>}=\sqrt{ \sum_{i=1}^n x_i^2 }\), 一般记为\(\left\Vert x\right\Vert_2\).
- \(Q\) norm: \(\left\Vert x\right\Vert=\sqrt{\left< x,x \right>}=\sqrt{x^TQx}\), 一般记为\(\left\Vert x\right\Vert_Q\).
有了范数, 我们就可以度量两个点\(x,x+dx\)之间的距离(点乘内积): \[\Vert x + dx-x\Vert=\Vert dx\Vert=\sqrt{ \sum_{i=1}^n dx_i^2 }.\]
小结一下:
- 欧式空间是一个向量空间, 且带有内积和范数;
- 最重要的是, 该范数一定是要由内积根据上式诱导出来的.
什么是黎曼空间?
A differentiable manifold provided with a Riemannian metric.
微分流形(differentiable manifold又名光滑流形, 其最简单的例子就是三维空间中的球面, 在这里可简单理解为向量空间; 黎曼度量(Riemannian metric.)又名度量张量, 黎曼度量张量或是度规张量, 这里可简单理解为某\(n\)阶方阵\(G\)或是\((g_{ij})\). 有了它我们就可以用它来度量空间中两点\(x,x+dx\)之间的距离: \[dx^2=\sum_{ij}g_{ij}dx_i dx_j=dx^TGdx\]其中\(dx_i\)为\(dx\)的第\(i\)个分量. 特别的, 若取\(G\)为\(n\)阶单位阵(对角线上元素为1, 其余为0), 此时\(dx^2=\sum_{i}^ndx_i^2\). 这就与带有正交坐标系的欧式空间一致了(点乘内积). 小结一下:
- 黎曼空间可视为欧式空间的推广, 但一般情况下, 黎曼空间为非欧空间.
- 确定了\(G\)就相当于确定了一个黎曼空间, 另外形式上类似欧式空间中的\(Q\) norm但没有正定性的要求.
自然梯度
带正交坐标系的欧式空间中, 我们知道负梯度方向\(-\nabla L(w)\)为\(L(w)\)的最速下降方向; 类似的, 黎曼空间中的\(L(w)\)最速下降方向为\(-G^{-1}(w)\nabla L(w)\), 这被称为是自然梯度, 证明可见Natural Gradient Works Efficiently in Learning的定理1. 下面举个例子加以说明:
- 现有一族带参的分布族\(\{p(z\mid w)\}\), 目标是找到最优参数\(w=w^*\)使得\(p(z\mid w)\)尽可能的接近未知的密度函数\(q(z)\).
- 事实上, 很多机器学习任务可归结为上述问题, 比方说\(q(z)=q(x,y)\)表示某监督学习任务的样本真实分布, \(w\)表示某个NN的参数.
- 一个常用的损失函数就是最小化交叉熵的负数:\[L(w)=-\mathbb{E}_{q(z)}[\log p(z\mid w)]=\mathcal{KL}(q(z)\Vert p(z\mid w))-\mathbb{E}_{q(z)}[\log q(z)]\]其中\(\mathcal{KL}(q(z)\Vert p(z\mid w))=\mathbb{E}_{q(z)}[\log\frac{q(z)}{p(z\mid w)}]=\int q(z)\log\frac{q(z)}{p(z\mid w)}dz\), 且第二项与\(w\)无关.
- Information geometry (Amari, 1985)给出了利用Fisher信息阵定义\(G\)(概率密度函数族可以看做与参数空间同胚的黎曼流形, Fisher信息矩阵可以看做是该流形上的黎曼度量, 可以证明这一度量是外围欧式空间在该流形上的诱导度量): \[G_{ij}(w)=I_{ij}(w)=-\mathbb{E}_{p(z\mid w)}\left [\frac{\partial \log p(z\mid w)}{\partial w_i}\frac{\partial \log p(z\mid w)}{\partial w_j}\right]\]
- 最后假设有一堆独立同分布样本\(z_i \sim p(z)\), 就可用stochastic或batch的思路去优化. 此时\(L(w)\)的自然梯度方向即为\(-I^{-1}(w)\nabla L(w)\), 这又被称为是Fisher scoring algorithm.
回过头来看, 对\(q(z)\)的参数化近似\(p(z,w)\)必定赋予了它某种结构(比方说对\(w\)迈出一大步未必能导致\(p(z,w)\)的大的变化), 而要想利用这种结构, 最大的难点就是如何找到对应的黎曼空间, 或者说\(G\).
- 第6节给出了感知机模型的参数空间的相对应\(G, G^{-1}\)的详细求解过程, 同时还有多层感知机模型的\(G\).
- 第7节给出了\(m\)阶非奇异方阵构成的空间中自然梯度的求法; 第8节给出了系统空间中的自然梯度.
自然梯度与牛顿类法
形式上, 自然梯度法类似于牛顿法: \[G(w)=-\mathbb{E}_{p(z\mid w)}\left[ \frac{\partial^2\log p(z\mid w)}{\partial w^2}\right], \nabla ^2L (w)=-\mathbb{E}_{q(z)}\left[ \frac{\partial^2\log p(z\mid w)}{\partial w^2}\right]\]且随着优化算法的进行, \(p(z\mid w)\)会越来越接近\(q(z)\), 此时两者的表现会相近.当然, 实际任务中因为实际分布一般不知道因此再多一层近似, 即用batch或是stochastic近似上述右式. 最后, 由于Fisher信息阵的一个特殊性质, 在满足CR条件的前提下, 有\[\mathbb{E}_{p(z\mid w)}\left[ \frac{\partial^2\log p(z\mid w)}{\partial w^2}\right]=\mathbb{E}_{p(z\mid w)}\left[ (\frac{\partial\log p(z\mid w)}{\partial w})(\frac{\partial\log p(z\mid w)}{\partial w})^T\right]\]若我把上式中的\(p(z\mid w)\)换成\(q(z)\), Gauss-Newton法就跃然纸上.