深度学习:BatchNorm、LayerNorm、InstanceNorm、GroupNorm和SwitchableNorm的理解
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
深度学习BatchNorm、LayerNorm、InstanceNorm、GroupNorm和SwitchableNorm的理解
深度学习中的Norm
在深度学习中会经常遇到BatchNorm、LayerNorm、InstanceNorm和GroupNorm四者区别如下
除此之外还有SwitchableNorm的方法下面会逐一进行介绍。
BatchNorm
BatchNorm 的处理对象是对一批样本的同一个通道特征BatchNorm 是对这批样本的同一维度特征计算均值和方差做归一化BatchNorm在CV领域应用较多。
BatchNorm的好处有以下三点
1、提高梯度在网络中的流动。Normalization能够使特征全部缩放到[0,1]这样在反向传播时候的梯度都是在1左右避免了梯度消失现象。
2、提升学习速率。归一化后的数据能够快速的达到收敛。
3、减少模型训练对初始化的依赖。
LayerNorm
LayerNorm 的处理对象是每单个样本的所有通道特征LayerNorm 是对这单个样本的所有维度特征计算均值和方差做归一化。LayerNorm在NLP领域应用较多。
由于不同维度的特征量纲往往不同那么我们为什么还要使用LayerNorm呢因为NLP领域中LayerNorm更为合适。
如果我们将一批文本组成一个batch那么BatchNorm是对每句话的同一维特征同一个位置进行操作而我们理解文本是一句话一句话地阅读这不符合NLP的规律。
而LayerNorm则是针对一句话进行归一化的且LayerNorm一般用在第三维度如[batchsize, seq_len, dims]中的dims一般为词向量的维度等等这一维度各个特征的量纲应该相同。因此也不会遇到上面因为特征的量纲不同而导致的归一化缩放问题。
InstanceNorm
InstanceNorm的处理对象是每单个样本的同一个通道特征InstanceNorm是对单个样本同一个维度特征计算均值和方差做归一化InstanceNorm在风格化迁移应用较多。
因为在图像风格化中生成结果主要依赖于某个图像实例所以对整个batch归一化不适合图像风格化中因而对HW做归一化。可以加速模型收敛并且保持每个图像实例之间的独立。
GroupNorm
GroupNorm的处理对象是每单个样本的同一组通道特征GroupNorm是对单个样本同一组维度特征计算均值和方差做归一化。
SwitchableNorm
SwitchableNorm是将BatchNorm、LayerNorm、InstanceNorm结合赋予不同的权重让网络自适应地学习归一化层。
附录
Pytorch官网——Normalization Layers
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |