转自知乎详解深度学习中的Normalization,BN/LN/WN,仅供自己学习记录,如有侵权,请联系删除


通用公式:

h=f(g⋅x−μσ+b)h=f\left(\mathbf{g} \cdot \frac{\mathbf{x}-\mu}{\sigma}+\mathbf{b}\right) h=f(g⋅σx−μ​+b)

BN

μ=1M∑xi\mu=\frac{1}{M} \sum x_{i} μ=M1​∑xi​

σ=1M∑(xi−μi)2+ϵ\sigma=\sqrt{\frac{1}{M} \sum\left(x_{i}-\mu_{i}\right)^{2}+\epsilon} σ=M1​∑(xi​−μi​)2+ϵ​

其中,MMM是batch大小,g{g}g和b{b}b是可训练的参数初始化为1和0。

BN比较适用的场景是:

每个 mini-batch 比较大,数据分布比较接近。在进行训练之前,要做好充分的 shuffle. 否则效果会差很多。

缺点在于:

  1. 如果每个 mini-batch的原始分布差别很大,那么不同 mini-batch 的数据将会进行不一样的数据变换,这就增加了模型训练的难度。
  2. 不适用于 动态的网络结构 和 RNN 网络

详情见 https://blog.csdn.net/ltochange/article/details/119871517

LN

μ=∑ixi\mu=\sum_{i} x_{i} μ=i∑​xi​

σ=∑i(xi−μ)2+ϵ\sigma=\sqrt{\sum_{i}\left(x_{i}-\mu\right)^{2}+\epsilon} σ=i∑​(xi​−μ)2+ϵ​

其中, xix_{i}xi​ 枚举了该层所有的输入神经元。对应到标准公式中,四大参数μ\muμ和σ\sigmaσ, g{g}g和b{b}b均为标量(BN中是向量),所有输入共享一个规范化变换。

优点:

  1. LN 针对单个训练样本进行,不依赖于其他数据,因此可以避免 BN 中受 mini-batch 数据分布影响的问题,可以用于 小mini-batch场景、动态网络场景和 RNN,特别是自然语言处理领域。
  2. LN 不需要保存 mini-batch 的均值和方差,节省了额外的存储空间。

缺点:

LN 对于一整层的神经元训练得到同一个转换

所有的输入都在同一个区间范围内。如果不同输入特征不属于相似的类别(比如颜色和大小),那么 LN 的处理可能会降低模型的表达能力。

Normalization的总结框架相关推荐

  1. #论文 《ImageNet Classification with Deep Convolutional Neural Networks》

    这个Alex是第一作者,NN名字叫AlexNet,Hinton是第三作者.是第一个提出CNN的,还有dropout等方法. 1 Intro CNN与之前的标准前馈神经网络对比:连接和参数更少,因此更容 ...

  2. 不仅仅生成图片,用GAN做无监督的异常检测

    原文:https://zhuanlan.zhihu.com/p/32505627 GAN被LeCun赞为继CNN之后最为重要的一个工作,其原因在于让各位惊呼"这才有点人工智能的样子" ...

  3. 深度解读BN、LN、WN、CN

    一. 前言 最近有人问我 BN和LN的区别, 我开始有点懵,这两年名词儿太多,不知是啥, 一搜, Batch Normalization 和Layer Normalization, 突然就明白了一些, ...

  4. 2021秋招-面试高频2-BN、LN、WN相关

    面试高频2-BN.LN.WN相关 终极问题? 1. BN.LN.WN.IN.CN分别是怎样计算的? CV和NLP方面有什么区别? 参考2-知乎-如何区分并记住常见的几种 Normalization 算 ...

  5. PyTorch框架学习十八——Layer Normalization、Instance Normalization、Group Normalization

    PyTorch框架学习十八--Layer Normalization.Instance Normalization.Group Normalization 一.为什么要标准化? 二.BN.LN.IN. ...

  6. PyTorch框架学习十七——Batch Normalization

    PyTorch框架学习十七--Batch Normalization 一.BN的概念 二.Internal Covariate Shift(ICS) 三.BN的一个应用案例 四.PyTorch中BN的 ...

  7. PyTorch框架:(4)如何去构建数据

    接PyTorch框架:(3) 1.最基本的方法 (1)使用模块 模块1:TensorDataset.模块2:DataLoader 自己去构造数据集,然后一个batch一个batch的取数据,自己去写构 ...

  8. 吴恩达老师深度学习视频课笔记:超参数调试、Batch正则化和程序框架

            Tuning process(调试处理):神经网络的调整会涉及到许多不同超参数的设置.需要调试的重要超参数一般包括:学习率.momentum.mini-batch size.隐藏单元( ...

  9. Keras还是TensorFlow?深度学习框架选型实操分享

    译者| 王天宇.林椿眄 责编| Jane.琥珀 出品| AI科技大本营 深度学习发展势头迅猛,但近两年涌现的诸多深度学习框架让初学者无所适从.如 Google 的 TensorFlow.亚马逊的 MX ...

最新文章

  1. jQuery 插件开发实例(二)
  2. java集合类根接口:Collection和Map
  3. pc 页面在移动端怎么获取放大倍数、_百度移动搜索开放适配服务的3种方法
  4. 软件项目质量保证——编码规范
  5. python结束线程池正在运行的线程_python之线程与线程池
  6. cctype,string,vector
  7. 学习笔记(Spring事务管理)
  8. swift - if let Optional 语法
  9. 95-170-044-源码-Time-flink时间Processing Time源码分析
  10. [转]网店博客营销之微博实战技巧:还没有做微博的掌柜看过来
  11. 【转】你有这么一个人么
  12. 区块链平台架构设计的知识图谱
  13. WIN10如果将电脑网络分享给iphone
  14. 从MSDN我告诉你下载镜像
  15. 联想System X 3650M5 服务器装机问题记录
  16. vc读取北通手柄按键_北通手柄驱动按键操作方法详解
  17. 重磅!在 Mac 上接收 iphone 手机短信!
  18. LRE板卡交换机在轨交CBCT系统中的应用
  19. 什么是 Kubernetes HPA
  20. 春节红包活动如何应对10亿级流量?

热门文章

  1. 网站直达上线运营,API接口开发中
  2. 汶川地震《生死不离》歌词
  3. python实现api server,初学python,准备学习做个restful api server,现在有些困惑
  4. 修改配置_iMC服务器修改IP地址的配置
  5. python nonlocal的用法_python global和nonlocal用法解析
  6. 黑群晖 断电 检测有bad sector_金属你不会以为回收就能直接再用吧,不是的,这些再生金属材料检测知识,很少人知道...
  7. java hbase 例子,java操作hbase例子
  8. gz 解压 linux_Linux-Ubuntu常用命令-03-压缩解压
  9. idea maven 删除dependencies_使用IDEA创建Maven工程 创建javase工程
  10. mysql 文件批量插入_mysql大批量插入数据的4种方法示例