• BN

    • BN的作用

      • 为了对隐含层进行归一化操作。对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题。(如下图,加入激活函数后,可能会使很多的数据进入饱和区(即当x大于20之后,其梯度几乎为0))

    • 添加BN的原因
      • 因为添加的激活函数(非线性函数),会逐渐将隐含层的输出映射到激活函数的饱和区,从而慢慢使得数据传不到后面的层,即出现梯度消失的问题
    • BN添加的位置
      • 激活函数之前
    • BN算法
      • BN在batch的维度上norm,归一化维度为[N,H,W],对batch中对应的channel归一化,反标准化是为了,抵消不是最优的情况,即有的时候归一化可能会破坏原来的数据分布,两个参数是可以学习的参数

      • BN的代码实现,其中x为(N,C*H*W)
        • mu = np.mean(x,axis=0)
        • sigma2 = np.var(x,axis=0)
        • x_hat = (x-mu)/np.sqrt(sigma2+eps)
        • out = gamma*x_hat + beta
  • BN、LN、IN、GN的异同
    • 从左到右依次是BN,LN,IN,GN

    • BN是在batch的维度上归一化,即对整个batch内的对应的通道归一化,即依赖于batch size,当batchsize很小时,归一化效果不好
    • LN是在channel上归一化(即针对单个训练样本进行,不依赖于其他数据),即对同一个feature map的所有的通道归一化,不依赖与batchsize,但 LN 的处理可能会降低模型的表达能力
    • IN是只对一个feature map的同一个channel内的数据归一化,多用于GAN和style transfer,因为BN的计算是要受其他样本影响的,由于每个batch的均值和标准差不稳定,对于单个数据而言,相对于是引入了噪声,而BN获得的整体信息对这两种任务没有什么效果。
    • GN是对一个feature map的所有通道进行分组,对属于一组的 通道内的所有数据进行归一化。GN介于LN和IN之间,其首先将channel分为许多组(group),对每一组做归一化,及先将feature的维度由[N, C, H, W]reshape为[N*G,C//G , H, W],归一化的维度为[C//G , H, W]
  • GN
    • Group Normalization(GN)是针对Batch Normalization(BN)在batch size较小时错误率较高而提出的改进算法,因为BN层的计算结果依赖当前batch的数据,当batch size较小时(比如2、4这样),该batch数据的均值和方差的代表性较差,因此对最后的结果影响也较大。(研究意义:在训练大型网络和将特征转移到计算机视觉任务中(包括检测、分割和视频),内存消耗限制了只能使用小批量的BN。真的用的到嘛??)
    • 如果batchsize可以设的大的话,BN应该是要比GN好一些(如下图),GN比BN的速度要慢一写,因为多了reshape的过程
    • 注意:
      • 第一,使用ImageNet的预训练网络的时候,要frozenBN层,不然结果反而会劣化,而GN不会有这个问题。保持特征网络的BNfrozen,只在Head部分使用GN会提升效果,但是如果把backbone也换成GN预训练的,效果会更好。
      • 第二,使用BN的准确率模型性能已经无法随着迭代次数增加的时候,GN反而可能会随着迭代次数的增加性能有一定的上升。
      • 第三,不使用预训练模型,GN仍然可以达到compared的性能,但是BN会出现结果的劣化
      • ...
  • SN(Switchable Normalization)
    • SN是一种能够有效适应不同任务地归一化方式
    • 效果

    • SN的计算公式:(SN增加了6个控制参数,相比于BN而言,还增加了LN、IN的计算)

    • 注意:
      • minibatch越小,SN中BN的权重系数越小,IN和LN的权重系数则越大;
      • minibatch越大,SN中BN的权重系数越大,IN和LN的权重系数越小。
  • 分析
    • 如果想换的话,需要从头训练(GNpaper中说是从头训能达到不错的效果,但是针对自己的数据集要进行至少一次训练和迁移),或者找大数据集上的预训练模型(受限)
  • 为啥不把所有的数据求均值,方差试一下,有些极端,但感觉可以一试
  • Weight Standardization (太偏理论了)
    • WS+GN在batch size很小的情况下,性能也能超过BN(即使BN的batch size较大时)

部分资源来源网络,如有侵权请联系删除

Group Normalization(BN、LN、IN、GN) Switchable Normalization Weight Standardization相关推荐

  1. 四种归一化方法BN,LN,IN,GN的比较

    1.计算方法的不同 BatchNorm:batch方向做归一化,算NHW的均值 LayerNorm:channel方向做归一化,算CHW的均值.为了能够在只有当前一个训练实例下,找到一个合理的统计范围 ...

  2. Batch Normalization(BN)

    BN.LN这两个归一化的计算流程几乎是一样的,可以分为四步: 1.计算出均值 2.计算出方差 3.归一化处理到均值为0,方差为1 4.变化重构,恢复出这一层网络所要学到的分布 Batch Normal ...

  3. 【深度学习】Batch Normalization(BN)超详细解析

    单层视角 神经网络可以看成是上图形式,对于中间的某一层,其前面的层可以看成是对输入的处理,后面的层可以看成是损失函数.一次反向传播过程会同时更新所有层的权重W1,W2,-,WL,前面层权重的更新会改变 ...

  4. Batch Normalization(BN)超详细解析

    单层视角 神经网络可以看成是上图形式,对于中间的某一层,其前面的层可以看成是对输入的处理,后面的层可以看成是损失函数.一次反向传播过程会同时更新所有层的权重W1,W2,-,WL,前面层权重的更新会改变 ...

  5. Batch Normalization (BN)简洁介绍

    提出BN的文献: Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network trainin ...

  6. 深度学习中的规范化(BN、LN等四种规范化)

    这篇文章介绍深度学习四种主流的规范化, 分别是Batch Normalization(BN[9]), Layer Normalization(LN[7]), Instance Normalizatio ...

  7. Batch Normalization(BN)在什么时候用比较合适?

    1.在CNN中, (a).BN作用在非线性映射前,当神经网络收敛速度缓慢时候,或者梯度爆炸无法训练时候可以考虑用BN, (b).一般情况也可以用BN来尝试加快训练速度,提高模型的精度. 2.不适用于动 ...

  8. DIFFERENTIABLE LEARNING-TO-NORMALIZE VIA SWITCHABLE NORMALIZATION(SN 可微分学习的自适配归一化)

    DIFFERENTIABLE LEARNING-TO-NORMALIZE VIA SWITCHABLE NORMALIZATION(SN 可微分学习的自适配归一化) 可交换的归一化方法 这是根据不同作 ...

  9. 常用的 Normalization 方法:BN、LN、IN、GN(附代码&链接)

    来源:知乎 本文约2700字,建议阅读8分钟. 本文带你了解并区分常用的Normalization. 常用的Normalization方法主要有: Batch Normalization(BN,201 ...

最新文章

  1. js代码实现购物车效果
  2. 初等数论--二次剩余与二次同余方程--既约剩余系中二次剩余的个数
  3. oracle9i用expdp导出全库,Linux下Oracle 11g数据库全库自动备份(EXPDP)
  4. 如何使用log.debug()
  5. 使用Task简化Silverlight调用Wcf
  6. 史上最简单MySQL教程详解(基础篇)之SQL语句以及预留关键字介绍
  7. 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes
  8. MYSQL—— 启动MYSQL 57 报错“The service MYSQL57 failed the most recent........等”的问题解决方式!...
  9. 【知识图谱】史上最全《知识图谱》2020综述论文,18位作者, 130页pdf
  10. staticmethod自己定制
  11. Oracle GoldenGate下载地址
  12. IT人才薪水“虚高” ,寡头垄断下小企业工程师告急[转]
  13. 2022 CCCC 团体程序设计天梯赛知识点以及题解
  14. ehvierwer登录与不登录_微信上不去了怎么办,峰哥教你微信登录不上去的办法
  15. 浮点数float累加误差解决方式总结
  16. Ubuntu Linux 3D桌面完全教程
  17. 区块链大戏上演!陈伟星VS朱啸虎公开互怼数个回合 | 区块链日报
  18. web前端入门到实战:简单的图片轮播
  19. kali工具熟悉——情报分析
  20. ZYNQ - 嵌入式Linux开发 -05- Linux C编程和Makefile

热门文章

  1. Vue3的传值:父向子,子向父
  2. YOLOv5实战之PCB板缺陷检测
  3. 天空城网络科技隆重推出“新8G卡王
  4. 智慧工地、智慧工厂、智慧电力、危化品行业等有哪些AI盒子产品及优势呢?其中安全生产有哪些人工智能AI产品的厂家及电话,有没有相应的系统平台呢
  5. 计算机ucs汉字编码,字符编码基础知识 - Unicode,UCS,GBK,GB2312,UTF-8
  6. 基于WebGIS的留守儿童社区
  7. 微信支付服务端自动对账
  8. 高性能集群软件keepalived
  9. java并发编程的艺术-(4)
  10. java endian_java的little-endian和big-endian