Weight Normalization
tags:Normalization
WN也是和样本量无关的,所以可以应用在batchsize较小以及RNN等动态网络中;另外BN使用的基于mini-batch的归一化统 计量代替全局统计量,相当于在梯度计算中引入了噪声。而WN则没有这个问题,所以在生成模型,强化学习等噪声敏感的环境中WN的效果也要优于BN。
WN没有一如额外参数,这样更节约显存。同时WN的计算效率也要优于要计算归一化统计量的BN。
神经网络的一个节点计算可以表示为:
其中
是一个
-维的特征向量,
是该神经节点的输出,所以是一个标量。在得到损失值后,我们会根据损失函数的值使用SGD等优化策略更新
和
。WN提出的归一化策略是将
分解为一个参数向量
和一个参数标量
,分解方法为
上式中
表示
的欧氏范数。当
且
时,WN还原为普通的计算方法,所以WN的网络容量是要大于普通神经网络的。

当我们将
固定为
时,我们只优化
,这时候相当于只优化
的方向而保留其范数。当
固定为
时,这时候相当于只优化
的范数,而保留其方向,这样为我们优化权值提供了更多可以选择的空间,且解耦方向与范数的策略也能加速其收敛。
在优化
时,我们一般通过优化
的log级参数
来完成,即
。
和
的更新值可以通过SGD计算得到:
其中
为损失函数,
为
在
下的梯度值。
从上面WN的计算公式中我们可以看出WN并没有引入新的参数,
1.1节的梯度更新公式也可以写作:
推导方式如下:

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