2

深度学习(十四)——Normalization进阶

 2 years ago
source link: http://antkillerfarm.github.io/dl/2017/08/29/Deep_Learning_14.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

seq2seq(续)

https://mp.weixin.qq.com/s/Fp6G1aI_utDd_kTbdHvEVQ

完全基于卷积神经网络的seq2seq

http://localhost:4500/theory/2017/06/21/Deep_Learning_6.html

从2017年顶会论文看Attention Model

https://mp.weixin.qq.com/s/Op_oYiNvaTXvsvAnl8Heew

基于Self-attention的文本向量表示方法,悉尼科技大学和华盛顿大学最新工作

https://mp.weixin.qq.com/s/fBrt4g_Kjmt1tGVZw5KgrQ

从LSTM到Seq2Seq

https://mp.weixin.qq.com/s/riIC6ybvqAJx9mzb-AQIOw

Facebook AI发布新版本FairSeq序列到序列(Seq2Seq)学习工具,可生成故事与快速推断

https://mp.weixin.qq.com/s/DIqjVxF_kACkivzez4_Hog

编码器-解码器网络:神经翻译模型详解

https://mp.weixin.qq.com/s/Alg4rOXNvb4GA8N4Joy-Jg

Seq2seq强化,Pointer Network简介

https://mp.weixin.qq.com/s/kdmmgVdWxz2nJPmjcprvqg

机器学习中的编码器-解码器结构哲学

https://mp.weixin.qq.com/s/OcrT2-sAWJg-ILdHwi4t5Q

seq2seq最新变体,稀疏序列模型

https://mp.weixin.qq.com/s/_1lr612F3x8ld9gvXj9L2A

推断速度达seq2seq模型的100倍,谷歌开源文本生成新方法LaserTagger

Normalization进阶

Batch Normalization

《深度学习(三)》中,我们已经简单的介绍了Batch Normalization的基本概念。这里主要讲述一下它的实现细节。

我们知道在神经网络训练开始前,都要对输入数据做一个归一化处理,那么具体为什么需要归一化呢?归一化后有什么好处呢?

原因在于神经网络学习过程本质就是为了学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,一旦每批训练数据的分布各不相同(batch梯度下降),那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度,这也正是为什么我们需要对数据都要做一个归一化预处理的原因。

对输入数据归一化,早就是一种基本操作了。然而这样只对神经网络的输入层有效。更好的办法是对每一层都进行归一化。

然而简单的归一化,会破坏神经网络的特征。(归一化是线性操作,但神经网络本身是非线性的,不具备线性不变性。)因此,如何归一化,实际上是个很有技巧的事情。

首先,我们回顾一下归一化的一般做法:

(1)x^(k)=x(k)−E[x(k)]Var[x(k)]

其中,x=(x(0),x(1),…x(d))表示d维的输入向量。

接着,定义归一化变换函数:

(2)y(k)=γ(k)x^(k)+β(k)

这里的γ(k),β(k)是待学习的参数。

BN的主要思想是用同一batch的样本分布来近似整体的样本分布。显然,batch size越大,这种近似也就越准确。

用B={x1,…,m}表示batch,则BN的计算过程如下:

Step 1.计算mini-batch mean。

(3)μB←1m∑i=1mxi

Step 2.计算mini-batch variance。

(4)σB2←1m∑i=1m(xi−μB)2

Step 3.normalize。

(5)x^i←xi−μBσB2+ϵ

这里的ϵ是为了数值的稳定性而添加的常数。

Step 4.scale and shift。

(6)yi=γx^i+β≡BNγ,β(xi)

在实际使用中,BN计算和卷积计算一样,都被当作神经网络的其中一层。即:

(7)z=g(Wx+b)→z=g(BN(Wx+b))=g(BN(Wx))

从另一个角度来看,BN的均值、方差操作,相当于去除一阶和二阶信息,而只保留网络的高阶信息,即非线性部分。因此,上式最后一步中b被忽略,也就不难理解了。

BN的误差反向算法相对复杂,这里不再赘述。

在inference阶段,BN网络忽略Step 1和Step 2,只计算后两步。

  • β,γ由之前的训练得到。

  • μ,σ原则上要求使用全体样本的均值和方差,但样本量过大的情况下,也可使用训练时的若干个mini batch的均值和方差的FIR滤波值。因此,这两个参数也是训练得到的

由公式7可以看出,BN不是针对x(输入的),而是针对Wx+b的。而W每个channel都不同。因此,对于Layer: batch*channel*height*width来说,对batch*height*width个像素点统计得到一个均值和一个标准差,这样总共会得到channel组参数。

前面章节曾指出:

  • relu得用Kaiming初始化。

  • tanh得用Xavier初始化。

而在网络层的激活函数前加上BN的话,采用什么初始化都无所谓。

BN的缺点参见:

https://mp.weixin.qq.com/s/l2N_cQAzy_mubCeok1qfnA

Batch Normalization的诅咒

BN推理加速参见:

https://mp.weixin.qq.com/s/fAiIGJnciAi3pf8MQ7UqKg

使用Batch Normalization折叠来加速模型推理

Instance Normalization

Instance Normalization主要用于CV领域。

《Instance Normalization: The Missing Ingredient for Fast Stylization》

首先我们列出对图片Batch Normalization的公式:

ytijk=xtijk−μiσi2+ϵ,μi=1HWT∑t=1T∑l=1W∑m=1Hxtilm,σi2=1HWT∑t=1T∑l=1W∑m=1H(xtilm−mμi)2

其中,T为图片数量,i为通道,j、k为图片的宽、高。

Instance Normalization的公式:

ytijk=xtijk−μtiσti2+ϵ,μti=1HW∑l=1W∑m=1Hxtilm,σti2=1HW∑l=1W∑m=1H(xtilm−mμti)2

从中可以看出Instance Normalization实际上就是对一张图片的一个通道内的值进行归一化,因此又叫做对比度归一化(contrast normalization)。

http://www.jianshu.com/p/d77b6273b990

论文中文版

https://mp.weixin.qq.com/s/EOuuW5R1_4RU-mabSJeKWQ

Instance Norm梯度公式推导

再看Batch Normalization

从上图可以看出,BN是对input tensor的每个通道进行mini-batch级别的Normalization。而LN则是对所有通道的input tensor进行Normalization

BN的特点:

对于batch size比较小的时候,效果非常不好,而batch size越大,那么效果则越好,因为其本质上是要通过mini-batch得到对整个数据集的无偏估计;

在训练阶段和推理阶段的计算过程是不一样的;

在CNN上表现较好,而不适用于RNN甚至LSTM。

Layer Normalization

Layer Normalization的计算比较简单,直接使用公式1即可。由于它是针对x的,因此对每个样本都要统计它的均值和方差,这对于inference来说,计算量是偏大的。

LN的特点:

不依赖于batch size的大小,即使对于batch size为1的在线学习,也可以完美适应;

训练阶段和推理阶段的计算过程完全一样。

适用于RNN或LSTM,而在CNN上表现一般。

和BN一样,LN通常也忽略公式7中的b。

从实践来看,LN在NLP任务上的表现比BN好。

https://mp.weixin.qq.com/s/-QzsVs6V2pwvFQlRVYVx2Q

LayerNorm是Transformer的最优解吗?

Weight Normalization

WN的公式如下:

w=g‖v‖v

WN将权重分为模和方向两个分量,并分别进行训练。

《Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks》

WN的特点:

计算简单,易于理解。

相比于其他两种方法,其训练起来不太稳定,非常依赖于输入数据的分布。

https://mp.weixin.qq.com/s/merU6hjBVuNN2C84Rp2RkA

Weight Standarization:携手GN,超越BN

http://mlexplained.com/2018/01/13/weight-normalization-and-layer-normalization-explained-normalization-in-deep-learning-part-2/

Weight Normalization and Layer Normalization Explained

https://zhuanlan.zhihu.com/p/114314389

weight normalization原理和实现

Cosine Normalization

Normalization还能怎么做?

我们再来看看神经元的经典变换fw(x)=w⋅x。

对输入数据x的变换已经做过了,横着来是LN,纵着来是BN。

对模型参数w的变换也已经做过了,就是WN。

好像没啥可做的了。然而天才的研究员们盯上了中间的那个点,对,就是⋅。

fw(x)=cos⁡θ=w⋅x‖w‖⋅‖x‖

https://mp.weixin.qq.com/s/EBRYlCoj9rwf0NQY0B4nhQ

Layer Normalization原理及其TensorFlow实现

http://mlexplained.com/2018/01/10/an-intuitive-explanation-of-why-batch-normalization-really-works-normalization-in-deep-learning-part-1/

An Intuitive Explanation of Why Batch Normalization Really Works

https://mp.weixin.qq.com/s/KnmQTKneSimuOGqGSPy58w

详解深度学习中的Normalization,不只是BN(1)

https://mp.weixin.qq.com/s/nSQvjBRMaBeoOjdHbyrbuw

详解深度学习中的Normalization,不只是BN(2)

https://mp.weixin.qq.com/s/Z119_EpLKDz1TiLXGbygJQ

MIT新研究参透批归一化原理

https://mp.weixin.qq.com/s/Lp2pq95woQ5-E3RemdRnyw

动态层归一化(Dynamic Layer Normalization)

https://zhuanlan.zhihu.com/p/43200897

深度学习中的Normalization模型

IBN-Net

IBN-Net是汤晓鸥小组的新作(2018.7)。

与BN相比,IN有两个主要的特点:第一,它不是用训练批次来将图像特征标准化,而是用单个样本的统计信息;第二,IN能将同样的标准化步骤既用于训练,又用于推断。

潘新钢等发现,IN和BN的核心区别在于,IN学习到的是不随着颜色、风格、虚拟性/现实性等外观变化而改变的特征,而要保留与内容相关的信息,就要用到BN。

《Two at Once: Enhancing Learning and Generalization Capacities via IBN-Net》

https://mp.weixin.qq.com/s/LVL90n4–WPgFLMQ-Gnf6g

汤晓鸥为CNN搓了一颗大力丸

https://mp.weixin.qq.com/s/6hNpgffEnUTkNAfrPgKHkA

IBN-Net:打开Domain Generalization的新方式

https://mp.weixin.qq.com/s/lCasw_-Bl3_J6cGBipNsSA

从IBN-Net到Switchable Whitening:在不变性与判别力之间权衡

Group Normalization

《Group Normalization》

https://mp.weixin.qq.com/s/H2GmqloNumttFlaSArjgUg

FAIR何恺明等人提出组归一化:替代批归一化,不受批量大小限制

https://mp.weixin.qq.com/s/44RvXEYYc5lebsHs_ooswg

全面解读Group Normalization

https://mp.weixin.qq.com/s/J8i0Qsl0q9sYS2iAc-M44w

BN,LN,IN,GN都是什么?不同归一化方法的比较


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK