ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kaldi的自然梯度理论基础

2020-08-31 09:01:51  阅读:372  来源: 互联网

标签:训练 梯度 理论 矩阵 单位矩阵 Kaldi Fisher SGD


简介

随机梯度下降

一般梯度(最陡下降方向)

当参数面具有隐含的特定结构时,最陡的方向并非一般梯度,而是自然梯度。

在欧几里得正交空间中,G是单位矩阵I

自然梯度

自然梯度表示延着雷曼(Riemannian)参数面的梯度迈出一步,这相当于在常规参数空间的一条弯曲路径,并且很难计算。

   

   

   

   

《基于自然梯度以及模型平均的DNNs并行训练》的部分章节翻译与补充

将替换SGD中的标量学习率替换为矩阵形式

可以将该标量替换为一个对称正定矩阵:

   

通常,学习率矩阵不应该是当前训练样本的函数,否则将收敛至局部最优。例如,对于特定类型的训练数据,过小的矩阵将使得数据权重降低,导致学习出现偏差。

   

   

逆Fisher矩阵是合适的学习率矩阵

Fisher矩阵的定义与 学习一个分布 十分相关。

的外积期望

   

在信息论中,该偏导被称为"得分"。

使用Fisher矩阵的部分理由是,在某些条件下,Fisher矩阵等价于Hessian矩阵:

这相当于牛顿法,这也是为什么逆Fisher矩阵表示一个好的梯度下降方向。

   

但即使上述条件无法满足,在某种维度的意义上,Fisher信息矩阵与Hessian矩阵相同

即,考虑参数化的变换,对梯度的转换方式是相同的,这样,Fisher信息矩阵的逆任然是一个好的学习率矩阵。

需要对Fisher矩阵进行近似

   

Roux et al., 2007将Fisher矩阵分解为多个对角块,其中每个对角块用一个低秩矩阵来近似。

Bastian et al., 2011也使用了对角块的思想,一个对角块对应于一个权重矩阵;本文的方法使用了相同的思想。

在Yang & Amari, 1997未发表的手稿中,在某些假设情况下,单隐层神经网络的Fisher矩阵有克罗内克积的形式。

克罗内克积也出现在本文的 Fisher矩阵的因子分解中

   

注意:若接受每次迭代中显著增加的时间,也可以使用若干种不对Fisher信息矩阵进行因子分解的自然梯度方法。比如,Pascanu & Bengio, 2013使用了截断牛顿法对 与Fisher矩阵的逆相乘 进行近似。

需要对Fisher矩阵进行近似。

对Fisher矩阵进行因子分解

   

如何估计Fisher矩阵

  1. 简单方法:根据当前训练的minibatch中的其他样本估计Fisher矩阵(这意味着要往minibatch中添加额外的样本,用于估计Fisher矩阵);
  2. 在线方法:根据所有之前的minibatches估计Fisher矩阵,使用一个遗忘因子降低较早的minbatches的权重;

对向量的计算

虽然我们将Fisher矩阵描述为一个克罗内克积,但是,在代码中,我们无需显式地构建这一乘积。

   

对于一个线性映射,第i个样本的前向计算与梯度反向传播可表示为(以行为主序,与Kaldi一致):

其中

   

   

在自然梯度方法中,上式被修改为:

其中:

即:

由于两个向量的外积可看作是矩阵的克罗内克积的特殊情况:

因此,上式可写为:

根据克罗内克积的混合乘积性质:

如果A、B、CD是四个矩阵,且矩阵乘积ACBD存在,那么:

上式可写为:

   

对minibatches的计算

实际上,并不是一次处理一个训练样本,而是以minibatch为单位进行处理。

在自然梯度方法中:

或可简化为:

   

用编程术语,我们可以将自然梯度的核心代码接口描述为:

  1. 这相当于调用OnlineNaturalGradient::PreconditionDirections(CuMatrixBase<BaseFloat> *X_t, BaseFloat *scale)

YA的计算类似。对于每个minibatch,需要调用上述接口2I次。

对因子进行缩放

在上述两种自然梯度更新方法中,都需要避免Fisher矩阵乘过度影响更新的尺度(与标注SGD相比)。原因如下:

  1. 对于传统的收敛证明方法,要求提前知道 学习率矩阵的组分的特征值的上界和下界,但对于未修改的Fisher矩阵,无法保证其上下界;
  2. 从经验上,若使用未缩放的实数Fisher矩阵,难以避免参数出现发散;

   

   

但这也带来了一个收敛证明上的问题。缩放后,每个样本能够对自身的学习率矩阵产生影响(由样本尺度影响缩放因子,进一步影响学习率矩阵),文献的前面章节提到过,不能使得 逐样本学习率 是 样本本身的函数。然而,我们不认为这个问题会影响实际的训练,因为我们从不使用小于100的minibatch,因此对结果造成的偏差很小。

对Fisher矩阵通过单位矩阵进行平滑

在上述两种自然梯度更新方法中,在对因子进行取逆之前,会加上若干倍的单位矩阵,以实现对因子矩阵的平滑处理。在简单方法中,这是有必要的,因为从minibatch中估计的Fisher矩阵可能不是满秩的(非满秩矩阵没有对应的逆矩阵);而在在线方法中则不需要这么做,因为Fisher矩阵中已经包含了数倍的单位矩阵。不过,我们发现,加上数倍的单位矩阵后,能提升SGD训练的收敛性。

   

   

也就是说,我们以S的对角元素的平均的α倍,对单位矩阵进行缩放,然后对Fisher矩阵进行平滑。

   

实验结果与结论

与SGD相比,NG-SGD能使得训练收敛得更好,识别率上好2个点。

   

当多机数N小于4时,参数平均方法能取得线性的训练速度提升

当多机数N大于4时,参数平均方法能取得次线性的训练速度提升

在单机或多机的情况下,在线NG-SGD均优于普通SGD

单机训练时,NG-SGD比SGD好1.86%

多机训练时,NG-SGD比SGD好3.89-8.16%

   

NG-SGD比SGD好的原因:

NG避免产生较大尺度的梯度,且对训练集的使用顺序更鲁棒。

Pascanu & Bengio, 2013

   

   

参考文献

  1. Amari, Shun-Ichi. "Natural gradient works efficiently in learning." Neural computation 10.2 (1998): 251-276.
  2. Povey, Daniel, Xiaohui Zhang, and Sanjeev Khudanpur. "Parallel training of DNNs with natural gradient and parameter averaging." arXiv preprint arXiv:1410.7455 (2014).

   

标签:训练,梯度,理论,矩阵,单位矩阵,Kaldi,Fisher,SGD
来源: https://www.cnblogs.com/JarvanWang/p/13587752.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有