深度学习中Normalization

normalization

如果有问题,请各位指正~

normalization作用

在这里插入图片描述
根据DNN计算公式当深度逐渐加深,线性变换和激活函数(非线性变换)逐渐改变输入的分布。
我们先来看下几个常见的激活函数的图形:
sigmoid
在这里插入图片描述
tanh
在这里插入图片描述
relu
在这里插入图片描述
可以看到,当深度逐渐递增,上一层的输入可能会存在值过大或者过小的情况。对于sigmoid和tanh都有有效的激活区域,比如sigmoid在(-6,6)之间会有比较好的区分。其余区间达到饱和特征差异性也难以区分。在梯度下降时,如果使用tanh或者sigmoid容易出现梯度消失(激活值饱和),梯度消失也会带来一系列问题。所以从激活函数的角度来看,需要将输入数据归一化normalization。

normalization分类

一类是对第L层每个神经元的激活值或者说对于第L+1层网络神经元的输入值进行Normalization操作,比如BatchNorm/LayerNorm/InstanceNorm/GroupNorm等方法都属于这一类;另外一类是对神经网络中连接相邻隐层神经元之间的边上的权重进行规范化操作,比如Weight Norm就属于这一类。

weight normalization

weight norm包括有maxnorm,l1,l2等。
maxnorm是正向传播时候,对weight值进行(0,max)的截断。
l1 and l2是用在loss function上。说到l1 l2正则,我们先来了解下拉格朗日优化。
https://www.zhihu.com/question/38586401
我觉得这篇文章说的比较好。
BP过程对loss function求导的方向是损失函数第一项的法向量偏向损失函数第二项也就是权值的l1或者l2范数的切线。当权值范数的发向量与第一项法向量平行时,也就无法在进行梯度下降。根据这个图形显示了l2和l1正则化:
L=loss+lamda*||w||
L=loss+lamda*||w||2
l2正则:
在这里插入图片描述
l1正则:

在这里插入图片描述
红色的为weight的l2和l1范数。l1的稀疏性也是由于最优解一般都在坐标轴上。

对于参数的选择,lamda,下图左为lamda小的效果,图右为lamda大的结果。
在这里插入图片描述
这里的理解是,加入正则项本来就是为了防止overfitting。所以lamda小的时候,正则效果弱,也就是权值的大小比较大,更接近于只使用loss的最优解。

选择l1和l2,l1由于稀疏性,更多用于特征选择,找到与任务相关的特征。l2由于可导,更容易更新。
当然还有dropout也算对weight 的normalization。

神经元的normalization

神经元的normalization一般是对于神经元输入,神经元输出。
CNN发展历史上的Alexnet首次使用了normalization的概念,LRN。是对某个局部区域归一化,使得响应值更大的值相对更大,更小的值相对更小。x,y表示像素对应坐标。
在这里插入图片描述

Batch Normalization

batch normalization使用在一个minibatch中。是对同一个batch中的不同样本相同对应位置的归一化。归一化为均值0,方差1.在这里插入图片描述
图片复制来自https://blog.csdn.net/malefactor/article/details/82154224?utm_source=tuicool&utm_medium=referral
在这里插入图片描述
上图对应于卷积网络,对应的是每个样本同样坐标的像素点位置。但是对RNN系列,由于还有时间轴上的值(需要记录下每个时间步),所以使用Batch normalization并不方便。所以RNN一般不适用。

Batch normalization因为是使用一个batch来代表所有样本空间的更新,因此要充分随机打乱,batch size参数也要设置合适。

Layer Normalization

layer normalization改变了batch norm依赖于多个样本的方式,针对的是同一样本在神经网络同一层的不同神经元之间的归一化。MLP上比较好理解,在同一层上。在CNN上,一个卷积核对应的一个通道有mxn个神经元,有k个通道。所以是kxmxn个神经元之间的normalization。
在这里插入图片描述
对于rnn,lstm等带有时间步的神经网络,记录前面时间步的值。

Group Normalization instance normalization

group normalization和instance normalization一般是针对卷积神经网络cnn的。都是对于同一个实例的不同通道之间的normalization。对于layer normalization,cnn中一个通道中的神经元是二维的,所以可以考虑在通道内部分别进行normalization。layer normalization是对所有通道的所有二维神经元都一起计算。
group normalization是layer的子集。设置group起来的参数表示一个group中包含几个通道。然后再这个通道范围内的所有神经元进行normalization。
在这里插入图片描述
instance normalization是group normalization的特例,是每个通道内的神经元当作一个group的时候。Instance Normalization对于一些图片生成任务效果是明显优于BN的。

Group Normalization在要求Batch Size比较小的场景下或者物体检测/视频分类等应用场景下效果是优于BN的。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值