Layer Normalization
Abstract
目前效果最好的深度学习网络计算代价昂贵。减少训练时间的方法之一是规范化神经元的激活。Batch Normalization 使用了这一思路,用mini-batch的均值和方差来规范化,这极大的减少了训练时间
但是,BN的效果在很大程度上依赖于mini-batch size的大小,并且不能应用到RNN上面
在这篇文章,我们用Layer Normalization代替了Batch Normalization,Layer Normalization 也有自适应参数 γ , β \gamma, \beta γ,β,不同的是,LN在训练和测试时执行同样的计算
并且也可以通过在每个step计算 n o r m a l i z a t i o n s t a t i s t i c s normalization \ statistics normalization statistics应用在RNN上
Introduction
效果较好的网络结构通常相对复杂,导致训练时间过长。2015年Ioffe 和Szegedy提出了Batch Normalization,这一方法极大的减少了训练时间,让参数可以更快的达到收敛,并且不需要像之前那么担心初始化的参数
BN在测试的时候,用的均值和方差是训练集的均值和方差(应该是每个batch的均值方差占一定权重,之前的和占一定权重)。但是这一策略不适合RNN用。并且,BN不能应用在“在线学习任务“上和“mini-batch非常小的大型分布式模型“。
Background
在feed-forward(前馈网络)中,从输入
X
X
X到输出
y
y
y是非线性映射
α
i
l
=
w
i
l
T
h
l
h
i
l
+
1
=
f
(
α
i
l
+
b
i
l
)
\alpha_i^l={w_i^l}^Th^l \quad h_i^{l+1}=f(\alpha_i^l+b_i^l)
αil=wilThlhil+1=f(αil+bil)
- α \alpha α是当前层的结果
- w w w是权重
- h h h是上一层的输出
- f f f是非线性激活函数
- b b b是偏置
Batch Normalization中
其中, g i l g_i^l gil是 γ \gamma γ, α i − l \alpha_i^{-l} αi−l是BN的结果, μ i l \mu_i^l μil是期望, σ i l \sigma_i^l σil是方差
Layer Normalization
![](https://i-blog.csdnimg.cn/blog_migrate/fceee622ff8e9d781438510c41020803.png)
H H H是隐藏层的unit数量
这段参考自别人的博客,觉得很清晰:
BN 的一个缺点是需要较大的 batchsize 才能合理估训练数据的均值和方差,这导致内存很可能不够用,同时它也很难应用在训练数据长度不同的 RNN 模型上。Layer Normalization (LN) 的一个优势是不需要批训练,在单条数据内部就能归一化。
对于输入:NCH*W,LN 对每个样本的 C、H、W 维度上的数据求均值和标准差,保留 N 维度。其均值和标准差公式为:
继续采用上一节的类比,把一个 batch 的 feature 类比为一摞书。LN 求均值时,相当于把每一本书的所有字加起来,再除以这本书的字符总数:C×H×W,即求整本书的“平均字”,求标准差时也是同理。
BN vs LN
BN是“竖”着来的,各个维度做归一化,所以与batch size有关系
LN是“横”着来的,对一个样本,不同的神经元neuron间做归一化
Conferences
论文地址:https://arxiv.org/pdf/1607.06450.pdf
https://www.zhihu.com/question/48820040