Weight Normalization
最后更新于
最后更新于
tags:Normalization
之前介绍的BN[2]和LN[3]都是在数据的层面上做的归一化,而这篇文章介绍的Weight Normalization(WN)是在权值的维度上做的归一化。WN的做法是将权值向量在其欧氏范数和其方向上解耦成了参数向量和参数标量后使用SGD分别优化这两个参数。
WN也是和样本量无关的,所以可以应用在batchsize较小以及RNN等动态网络中;另外BN使用的基于mini-batch的归一化统计量代替全局统计量,相当于在梯度计算中引入了噪声。而WN则没有这个问题,所以在生成模型,强化学习等噪声敏感的环境中WN的效果也要优于BN。
WN没有一如额外参数,这样更节约显存。同时WN的计算效率也要优于要计算归一化统计量的BN。
神经网络的一个节点计算可以表示为:
其中是一个-维的特征向量,是该神经节点的输出,所以是一个标量。在得到损失值后,我们会根据损失函数的值使用SGD等优化策略更新和。WN提出的归一化策略是将分解为一个参数向量和一个参数标量,分解方法为
从上面WN的计算公式中我们可以看出WN并没有引入新的参数,
1.1节的梯度更新公式也可以写作:
推导方式如下:
这两个特征都会加速模型的收敛。
由于WN不像BN有规范化特征尺度的作用,所以WN的初始化需要慎重。作者建议的初始化策略是:
由于使用了样本进行初始化,所以这种初始化方法不适用于RNN等动态网络。
基于WN的动机,文章提出了Mean-Only BN。这种方法是一个只进行减均值而不进行除方差的BN,动机是考虑到BN的除方差操作会引入额外的噪声,实验结果表明WN+Mean-Only BN虽然比标准BN收敛得慢,但它们在测试集的精度要高于BN。
和目前主流归一化方法不同的是,WN的归一化操作作用在了权值矩阵之上。从其计算方法上来看,WN完全不像是一个归一化方法,更像是基于矩阵分解的一种优化策略,它带来了四点好处:
更快的收敛速度;
更强的学习率鲁棒性;
可以应用在RNN等动态网络中;
对噪声更不敏感,更适用在GAN,RL等场景中。
说WN不像归一化的原因是它并没有对得到的特征范围进行约束的功能,所以WN依旧对参数的初始值非常敏感,这也是WN一个比较严重的问题。
上式中表示的欧氏范数。当且时,WN还原为普通的计算方法,所以WN的网络容量是要大于普通神经网络的。
图1:权值向量的分解可视化
当我们将固定为时,我们只优化,这时候相当于只优化的方向而保留其范数。当固定为时,这时候相当于只优化的范数,而保留其方向,这样为我们优化权值提供了更多可以选择的空间,且解耦方向与范数的策略也能加速其收敛。
在优化时,我们一般通过优化的log级参数来完成,即。
和的更新值可以通过SGD计算得到:
其中为损失函数,为在下的梯度值。
倒数第二步的推导是因为是的方向向量。上面公式反应了WN两个重要特征:
表明WN会对权值梯度进行的缩放;
表明WN会将梯度投影到一个远离于的方向。
具体原因论文的说法比较复杂,其核心思想有两点:1.由于垂直于,所以非常接近于垂直参数方向,这样对于矫正梯度更新方向是非常有效的;2.和梯度更新值中的噪声量成正比,而是和更新量成反比,所以当更新值中噪音较多时,更新值会变小,这说明WN有自稳定(self-stablize)的作用。这个特点使得我们可以在WN中使用比较大的学习率。
另一个角度从新权值的协方差矩阵出发的,假设的协方差矩阵是,那么的协方差矩阵,当去掉中的特征值后我们发现新的非常趋近于一个单位矩阵,这说明了是的主特征向量(dominant eigenvector),说明WN有助于提升收敛速度。
假设,和分别为的均值和方差,BN可以表示为:
当网络只有一层且输入样本服从均值为0,方差为1的独立分布时,我们有且,此时WN和BN等价。
使用均值为0,标准差为0.05的正态分布进行初始化;
和偏置使用第一批训练样本的统计量进行初始化: