赞
踩
目录
BN解决的问题:深度神经网络随着网络深度加深,训练越困难,收敛越来越慢
问题出现的原因:深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新——BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布
BN的基本思想:
注意⚠️:为什么BN层一般用在线性层和卷积层后面,而不是放在非线性单元后?
训练阶段:
测试阶段:
注意⚠️:Dropout和BN都有防止过拟合的作用,单独使用,都带来一定的性能改进,为什么一起用反而性能下降?
原因:
解决方案:总体思路是降低方差偏移
BN、LN、IN和GN这四个归一化的计算流程几乎一样,输入的图像shape记为[N, C, H, W],区别在于:
BatchNorm:在batch上,对NHW做归一化,把每个通道的NHW单独拿出来归一化处理,针对每个channel都有一组γ,β,可学习的参数为2*C,当batch size越小,BN的表现效果也越不好,因为计算过程中所得到的均值和方差不能代表全局
LayerNorm:在通道方向上,对CHW归一化,把每个CHW单独拿出来归一化处理,不受batchsize 的影响,主要对RNN作用明显,常用在RNN网络,但如果输入的特征区别很大,那么就不建议使用它做归一化处理
InstanceNorm:在图像像素上,对HW做归一化,把每个HW单独拿出来归一化处理,不受通道和batchsize 的影响,常用在风格化迁移,但如果特征图可以用到通道之间的相关性,那么就不建议使用它做归一化处理
GroupNorm:将channel分组再做归一化,把先把通道C分成G组,然后把每个gHW单独拿出来归一化处理,最后把G组归一化之后的数据合并成CHW,GN介于LN和IN之间,LN(G=C)和IN(G=1)是GN的特例
SwitchableNorm:将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法,集万千宠爱于一身,但训练复杂
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。