<深度学习优化策略-3> 深度学习网络加速器Weight Normalization_WN

来源:互联网 发布:跳跃网络账号注册 编辑:程序博客网 时间:2024/05/17 05:58

    前面我们学习过深度学习中用于加速网络训练、提升网络泛化能力的两种策略:Batch NormalizationBatch Normalization)和Layer NormalizationLN)。今天讨论另一种与它们类似的策略:Weight NormalizationWeight Normalization)。Weight NormalizationBatch Normalization的一种变体,与Batch Normalization最大不同点:对神经网络的权值向量W进行参数重写Reparameterization

    Reparameterization:机器学习/深度学习中常用的一种优化策略,Kingma在提出变分自动编码器(Variational Auto-EncodingVAE)时,用于神经网络中采样的node进行梯度反向传播的一种方法。简单一句话概括一下Reparameterization:用一个简单的参数为Theta分布来逼近一个稍复杂的分布,通过重写目标函数Objective的期望,使目标函数变得更加容易计算的一种方法,下一期将深入介绍。

1、Weight NormalizationBatch Normalization对比

    Weight NormalizationBatch Normalization都属于参数重写(Reparameterization)的方法,只是采用的方式不同,Weight Normalization是对网络权值W进行normalization,因此也称为Weight NormalizationBatch Normalization是对网络某一层输入数据进行normalization。。Weight Normalization相比Batch Normalization有以下三点优势:

    1Weight Normalization通过重写深度学习网络的权重W的方式来加速深度学习网络参数收敛,没有引入minbatch的依赖,适用于RNNLSTM)网络(Batch Normalization不能直接用于RNN,进行normalization操作,原因在于:1RNN处理的Sequence是变长的;2RNN是基于time step计算,如果直接使用Batch Normalization处理,需要保存每个time step下,mini btach的均值和方差,效率低且占内存)。

    2Batch Normalization基于一个mini batch的数据计算均值和方差,而不是基于整个Training set来做,相当于进行梯度计算式引入噪声。因此,Batch Normalization不适用于对噪声敏感的强化学习、生成模型(Generative modelGANVAE)使用。相反,Weight Normalization对通过标量g和向量v对权重W进行重写,重写向量v是固定的,因此,基于Weight NormalizationNormalization可以看做比Batch Normalization引入更少的噪声。

    3、不需要额外的存储空间来保存mini batch的均值和方差,同时实现Weight Normalization时,对深度学习网络进行正向信号传播和反向梯度计算带来的额外计算开销也很小。因此,要比采用Batch Normalization进行normalization操作时,速度快。

    但是, Weight Normalization不具备Batch Normalization把网络每一层的输出Y固定在一个变化范围的作用。因此,采用Weight Normalization进行Normalization时需要特别注意参数初始值的选择。

2、Weight Normalization怎么实现的

 对深度学习网络权值W进行normalization的操作公式如下:

 

    方法很简单,通过一个标量g和一个向量V对权重向量W进行尺度变换。标量g的值一般为||W||,即权重W的大小。

    此时的深度学习网络权值的梯度计算公式为:

    梯度计算公式可以用另外一种方式来表示:

    可见,可以通过向量V的大小||V||的变化对权重W进行norm约束,使得网络参数训练相对Learning rate更加鲁棒,即可以选择一个更大的学习速率来加速网络训练。

3、Weight NormalizationBatch Normalization关系

    可以把Batch Normalization表示成如下公式形式:

    其中,ut)和v(t)分别是t的均值和方差,t = v / ||v|| * x。可见,当网络只有一层且每一层的输入x服从0均值且方差为1的标准正太分布时,ut= 0vt= 1,此时,使用Weight NormalizationBatch Normalization进行Normalization起到的是一样的效果。

4、参考论文

[1] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

[2] Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks

[3] Layer Normalization

 更多深度学习在NLP方面应用的经典论文、实践经验和最新消息,欢迎关注微信公众号“深度学习与NLPDeepLearning_NLP”或扫描二维码添加关注。


原创粉丝点击