【论文】LayerNorm
作者:互联网
【论文】Ba J L, Kiros J R, Hinton G E. Layer normalization[J].(pdf)
我们在 BatchNorm 的分析中也指出 BatchNorm 存在两个问题,一是小批量采样太小会导致结果不稳定,二是对于 RNN 网络 BatchNorm 并不适合
于是,本文提出了 『层归一化』,一种独立于 batch_size 的算法,所以无论样本数多少都不会影响参与 LayerNorm 计算的数据
Layer normalization
设 H H H 是某一层中的隐藏结点的数量, l l l 表示层数,我们可以计算 LayerNorm 的归一化统计量 μ l \mu^l μl 和 σ l \sigma^l σl,如下 μ l = 1 H ∑ i = 1 H a i l σ l = 1 H ∑ i = 1 H ( a l − μ l ) 2 \mu^l=\frac{1}{H}\sum_{i=1}^Ha_i^l \\ \sigma^l=\sqrt{\frac{1}{H}\sum_{i=1}^H(a^l-\mu^l)^2} μl=H1i=1∑Hailσl=H1i=1∑H(al−μl)2
其中 a l a^l al 表示一个中间输出结果的总和,这个总和可以通过权重矩阵 W l W^l Wl 和隐藏层全部输入 h l h^l hl 组成的一个线性变化计算得到,具体可以参考下面 a i l = w i l T h l h i l + 1 = f ( a i l + b i l ) a_i^l={w_i^l}^Th^l\\ h^{l+1}_i=f(a_i^l+b_i^l) ail=wilThlhil+1=f(ail+bil)
f f f 被视为一个非线性激活, i i i 表示该层中的第 i i i 个神经元。其实说简单点, a l a^l al 就表示层输入经过权重矩阵变换后的值
注意上面的统计量和样本数没有关系,而是和隐藏层的结点数有关,我们甚至可以使 batch_size = 1
于是,我们可以根据商量的统计量进行归一化处理, a ^ l = a l − μ l ( σ l ) 2 + ε \hat a^l=\frac{a^l-\mu^l}{\sqrt{(\sigma^l)^2+\varepsilon}} a^l=(σl)2+ε al−μl
这是一个非常有意思的事情,我们对归一化的角度变了,BatchNorm 是按照小批量采样的结果进行归一化,而在 LayerNorm 中我们则按照一层神经元变换的结果进行归一化
同样,在 LayerNorm 中我们也需要一组参数来保证归一化操作不会破坏之前的信息。在 LayerNorm 中这组参数叫做增益(gain)和偏置(bias),同 BatchNorm 中的 γ \gamma γ 和 β \beta β
还是假设激活函数为 f f f,最终 LayerNorm 的输出为 h l = f ( g l ⊙ a ^ l + b l ) h^l=f(g^l\odot \hat a^l+b^l ) hl=f(gl⊙a^l+bl),整理一下公式于是有 h l = f ( g ( σ l ) 2 + ε ⊙ ( a l − μ l ) + b ) h^l=f\left (\frac{g}{\sqrt{(\sigma^l)^2+\varepsilon}}\odot(a^l-\mu^l)+b\right ) hl=f((σl)2+ε g⊙(al−μl)+b)
Layer normalized recurrent neural networks
在 RNN 中,我们可以非常简单的在每个时间片中使用 LayerNorm,而且在任何时间片我们都能保证归一化统计量是关于
H
H
H 个结点信息的统计。对于 RNN 时刻
t
t
t 时的结点,其输入是
t
−
1
t-1
t−1 时刻的隐层状态
h
t
−
1
h^{t-1}
ht−1 和
t
t
t 时刻的输入数据
x
t
x_t
xt,于是有
a
t
=
W
h
h
h
t
−
1
+
W
x
h
x
t
a^t=W_{hh}h^{t-1}+W_{xh}x^t
at=Whhht−1+Wxhxt 接着我们便可以在
a
t
a^t
at 上采取和前面完全相同的归一化过程
h
t
=
f
[
g
σ
t
⊙
(
a
t
−
μ
t
)
+
b
]
μ
t
=
1
H
∑
i
=
1
H
a
i
t
σ
t
=
1
H
∑
i
=
1
H
(
a
i
t
−
μ
t
)
2
h^t=f\left [\frac{g}{\sigma^t}\odot(a^t-\mu^t)+b\right ] \\ \mu^t=\frac{1}{H}\sum_{i=1}^Ha_i^t \\ \sigma^t=\sqrt{\frac{1}{H}\sum_{i=1}^H(a_i^t-\mu^t)^2}
ht=f[σtg⊙(at−μt)+b]μt=H1i=1∑Haitσt=H1i=1∑H(ait−μt)2
标签:frac,sigma,论文,mu,归一化,BatchNorm,LayerNorm 来源: https://blog.csdn.net/qq_38204302/article/details/120182232