Weight Normalization

Weight Normalization

引言

Weight Normalization(WN)可以看成是对Batch Normalization(BN)更轻量、不那么noisy的近似。

数学推导

WN对权重向量进行了重新参数化,具体来说,

$w=\frac{g}{||v||}v$。

其中$w\in \mathbb{R}^{k}$为原始网络参数,$g$为标量,$v\in \mathbb{R}^{k}$为重新参数化后的参数。重新参数初始化后网络的梯度为:

$\nabla_{g}L=\frac{\nabla_{w}L\cdot v}{||v||}$

$\nabla_{v}L = \frac{g}{||v||}\nabla_{w}L-\frac{g\nabla_{g}L}{||v||^{2}}v$。

此梯度也可以表示为:

$\nabla_{v}L = \frac{g}{||v||}M_{w}\nabla_{w}L$ $M_{w}=I-\frac{ww^{T}}{||w||^{2}}$。

由于$w^{T}\nabla_{v}L=0$,我们知道$\Delta v\propto \nabla_{v}L$是与$w$正交。又由于$w$与$v$平行,所以$\Delta v$也与$v$正交。那么$v$的模长可以使用勾股定理计算,即$||v'||=||v+\Delta v|| = (||v||^{2}+||\Delta v||^{2})^0.5$。如果$||\Delta v||/||v||=c$,则可写成$||v'||=(1+c^{2})^{0.5}||v||$。可以发现,$v$的模长是单调递增的。如果$||\Delta v||$很大,那么$c$很大,$||v||$会增长的很快。此时标量$g/||v||$会因此减小,使得$||\Delta v||$减小,从而达到一种平衡。

另外,WN也有对学习率鲁棒的能力。具体来说,如果学习率设置的过大,$||v||$会增长的很快。此时$||\Delta v||$相对$||v||$就显得比较小,学习率也是比较合适的。

初始化

BN一个很大的优势是能够使得每层特征的尺度固定,而WN是没有这个效果的(不能控制特征值的均值。),所以WN需要小心地进行参数初始化。具体来说,$v$使用均值为0,方差为0.05的正态分布进行初始化。偏置$b$和$g$使用第一个mini-batch的统计值进行初始化。此时先假设$b$和$g$分别为0和1,做一次前向传播:

$t=\frac{v\cdot x}{||v||}$ $y=\phi (\frac{t-\mu [t]}{\sigma [t]})$。

通过设置

$g=\frac{1}{\sigma [t]}$ $b=\frac{-\mu [t]}{\sigma [t]}$,

保证了第一次前向传播时均值为0,方差为1(推这个结论时注意此时$w=\frac{v}{||v||}$。)。

由于是类比BN推出的这个条件,因此这种初始化方法不能用在RNN或者LSTM中。此时使用标准初始化方法。

与BN的联系

假设存在一个单层网络,输入被白化(均值为0方差为1),预激活值$t=vx$。此时$v$的均值和标准差分别为0和||v||。在这种情况下,WN和BN的结果一致(此时WN的$g$值设置为1)。另外,由于WN中特征值没有中心化,可以考虑将WN与只使用均值的BN组合起来使用。

自言自语

最近在看pixelCNN的代码,其中使用了WN。在思考WN相比BN的优势过程中,就产生了这篇文章。其中一个优势是:由于BN统计每个mini-batch的统计量,给梯度引入了noise,这对于生成模型和强化学习来说是不可忍受的。

相关推荐

电信不限量套餐怎么选?资费限制全解析
bet3365

电信不限量套餐怎么选?资费限制全解析

🗓️ 11-26 👁️ 7291
幼鸡怎么区分公母,可以从鸡冠和肛门等分辨
365bet体育线上

幼鸡怎么区分公母,可以从鸡冠和肛门等分辨

🗓️ 06-15 👁️ 6237
电视机显示锁怎么解,电视上显示锁头要怎么解开
365bet哪个国家的

电视机显示锁怎么解,电视上显示锁头要怎么解开

🗓️ 01-16 👁️ 9618
联想扬天V110-15ISK
365bet哪个国家的

联想扬天V110-15ISK

🗓️ 08-16 👁️ 1301
漫谈galgame中的选项支
365bet体育线上

漫谈galgame中的选项支

🗓️ 07-10 👁️ 4196
明日方舟惊蛰什么时候出 惊蛰上线时间分享