zoukankan      html  css  js  c++  java
  • Kaldi的自然梯度理论基础

    简介

    随机梯度下降

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

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

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

    自然梯度

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

       

       

       

       

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

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

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

       

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

       

       

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

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

    的外积期望

       

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

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

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

       

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

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

    需要对Fisher矩阵进行近似

       

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

    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一致):

    其中

       

       

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

    其中:

    即:

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

    因此,上式可写为:

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

    如果ABCD是四个矩阵,且矩阵乘积ACBD存在,那么:

    上式可写为:

       

    minibatches的计算

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

    在自然梯度方法中:

    或可简化为:

       

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

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

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

    对因子进行缩放

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

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

       

       

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

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

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

       

       

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

       

    实验结果与结论

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

       

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

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

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

    单机训练时,NG-SGDSGD1.86%

    多机训练时,NG-SGDSGD3.89-8.16%

       

    NG-SGDSGD好的原因:

    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).

       

  • 相关阅读:
    过滤器判断请求参数中是否含有某一字段
    vscode开发vue项目实现pc端自适应_cssrem_rem_reset.scss,pc端媒体查询常用设置
    element_ui的datePicker修改样式
    TCP/IP 卷一 APR、RAPR、ICMP
    TCP/IP 卷一:协议(IP层)
    常见负载均衡策略
    TCP/IP 卷一:协议(链路层)
    TCP/IP 卷一:协议(概述)
    RokcetMQ
    Zookeeper集群
  • 原文地址:https://www.cnblogs.com/JarvanWang/p/13587752.html
Copyright © 2011-2022 走看看