【论文】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=1Hailσl=H1i=1H(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(gla^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 t1 时刻的隐层状态 h t − 1 h^{t-1} ht1 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=Whhht1+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=1Haitσt=H1i=1H(aitμt)2

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值