神经网络的归一化(Normalization)

    深度学习中的数据分布偏移:深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈。虽然神经网络的各层的输入信号分布不同,但最终“指向“的样本标记是不变的,即边缘概率不同而条件概率一致。

    为 了降低分布变化的影响,可使用归一化策略Normalization,把数据分布映射到一个确定的区间。
    神经网络中,常用的归一化策略有BN(Batch Normalization), WN(Weight Normalization), LN(Layer Normalization), IN(Instance Normalization).

    BN是针对单个神经元进行归一化操作,多用于batch size大的CNN网络。使用batch size数量的样本的均值和方差,近似整体样本的均值和方差,独立地规范每一个输入维度x。也有人说,BN输出的是标准正态分布(不明白,大量样本的分布是正态分布?)。BN使用的这样均值、方差近似,给神经网络引入了噪声,提高了泛化性。BN对batch size和样本的随机要求相对严苛。

    WN是对神经网络的权重进行归一化,不直接依赖于输入样本。虽然是对权重w进行限定,但限定的结果还是反应到y=wx+by中。

    LN是对当前神经网络层单个训练样本的所有神经元的输入进行计算,利用统一的均值和方差,对数据进行归一化。但是,对不同类别的特征使用同样的限定,会降低网络性能。

    IN是对单个图像进行的归一化操作。常用于风格迁移等。

    GN是对通道进行分组,每个组做归一化操作。GN可以看作是LN与IN之间的一种折中方案。把当前层的所有通道都作为一个组的时候,GN结果就是LN。如果把所有通道N分为N个组里,GN结果就是IN。

   

代码链接:https://github.com/laicl/pytorch-learning/blob/master/cnn-test.py

基于不同的batch size,对不同的操作进行了一个非常简单的对比。





  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值