原文链接:https://mp.weixin.qq.com/s?__biz=Mzg2MTA0NzA0Mw==&mid=2247489324&idx=1&sn=6d76ba15f2252216c95c2a6500977bd7&chksm=ce1c4740f96bce567d16b24b1fc84c42820b9ddfe9db89dd9c533a5133c290adcbebc488e278&mpshare=1&scene=1&srcid=&key=1c855a3d2871be7225e81a93b5fa8c57cd59bc2ed6e2412220193f0e3df97e0e09f1fdd74d5c2e6d1a1d588b5d0bff698417f5dbd12612e06ecb8ed62b256daace935ab31c8067cb888e93bec8e21064&ascene=1&uin=MTI4OTE3MjQ4NQ%3D%3D&devicetype=Windows+10&version=62060833&lang=zh_CN&pass_ticket=J5zOhdIBjmPzJzmOX%2By2OhVvTsLZsIhhKTAhu7M84B5knSq1Eo%2F9WvyE74R2JVmo

SGD优化主要是针对mini-batch的


从公式可以看出,Δθ\Delta \thetaΔθ是对整个minibatch的变动的累加。

normalization两大类

1:对激活值进行norm(batch normalization)
2:对w进行morm(weight normalization 以及loss函数中的正则项用来防止过拟合)

对激活值进行norm(本文的主要内容)

batch normalization

batch normalization的位置

原文是放在非线性激活之前;也有的文章说放在非线性激活之后有更好的效果。本文按照原文的思路。

batch normalization在cnn中的应用

每个卷积核会产生一个hw的特征平面,假定一个mini-batch中有m个样本,那么就可以batch normalization就是对这mh*w个点进行求平均和求方差操作。这样对于每个卷积核都只有一个γ,β\gamma, \betaγ,β,这也是权值共享的思想。

batch normalization的问题

1:batch size不能太小,最小估计是8.主要原因是batch size小就会受到样本噪声的影响。某个极为超出平均值的量会对batch的统计值产生极大影响,从而削弱了batch的统计值的效果。这也解释了我们为什么引入minibatch这个概念。这样的特性所带来的坏处就是没法进行online learning。因为新加入的样本一般是单实例,无法组织起batch
2:对于有些像素级图片生成任务来说,BN效果不佳。这很可能是因为在Mini-Batch内多张无关的图片之间计算统计量,弱化了单张图片本身特有的一些细节信息
3:RNN等动态网络使用BN效果不佳且使用起来不方便
4:训练时和推理时统计量不一致。对于BN来说,采用Mini-Batch内实例来计算统计量,这在训练时没有问题,但是在模型训练好之后,在线推理的时候会有麻烦。因为在线推理或预测的时候,是单实例的,不存在Mini-Batch,所以就无法获得BN计算所需的均值和方差,一般解决方法是采用训练时刻记录的各个Mini-Batch的统计量的数学期望,以此来推算全局的均值和方差,在线推理时采用这样推导出的统计量。虽说实际使用并没大问题,但是确实存在训练和推理时刻统计量计算方法不一致的问题。

layer normalization

直接用同层隐层神经元的响应值来求均值和方差。

Instance Normalization

只针对cnn,在每个卷积核输出的平面内部进行norm。

Group Normalization

介于Layer normalization和Instance normalization之间,通过把卷积核分组,在组内进行norm。

用故事对normalization进行总结

为了能够更直观地理解四种Normalization的异同,大家可以体会下面的故事以做类比:

很久很久以前,在遥远的L国内有一个神奇的理发馆,理发馆里面有很多勤劳的理发师,来这里理发的顾客也很奇特,他们所有人都会要求理发师(神经元)理出和其他人差不多长的头发(求均值)。那**么和其他人差不多长究竟是多长呢?这可难不倒我们可爱又聪明的理发师,于是理发师把自己最近24*个小时服务过的顾客(Mini-Batch)进入理发店时的头发长度求个平均值,这个均值就是“和其他人差不多长”的长度。来这里的每个顾客都很满意,时间久了,人们尊称这些理发师为:BatchNorm理发师。

不幸总是突然的,有一天,理发馆里发生了一件怪事,所有理发师的记忆只能维持1分钟,他们再也记不住过去24小时中发生的事情了,自然也记不住过去服务客人的头发长度。但是每个顾客仍然要求剪出和其他人差不多长的头发长度,这可怎么办?聪明的理发师们又想出了一个办法:他们相互大声报出同一时刻在理发馆里自己手上客人的头发长度,每个理发师就可以用这些人的头发长度均值作为满足自己手上客人条件的长度。尽管这是一群得了失忆综合证的理发师,但是顾客对他们的服务仍然非常满意,于是人们改称他们为:LayerNorm理发师。

不幸总是突然的,有一天,理发馆里又发生了一件怪事,理发师们不仅得了失忆症,这次都突然失聪,再也听不到其它理发师的口头通知,而固执的客人仍然坚持要理出“和其他人差不多长”的头发。对了,忘了介绍了,理发馆是有隔间的,每个隔间有K个理发师同时给顾客理发,虽然我们可爱又聪明的理发师现在失忆又失聪,但是再大的困难也难不倒也叫不醒这群装睡的人,他们醒来后群策群力又发明了一个新方法:同一个隔间的理发师通过相互打手势来通知其它理发师自己手上顾客的头发长度。于是同一个隔间的理发师又可以剪出顾客满意的头发了。人们称这些身残志坚的理发师为:GroupNorm理发师。

不幸总是突然的,有一天,理发馆里又发生了一件怪事,不过这次不是天灾是人祸,理发馆老板出于好心,给每位理发师单独开个办公室给顾客理发,但是好心办了坏事,这样一来,失忆失聪又无法相互打手势的理发师们怎么应对顽固的顾客呢?怎样才能继续理出“和其他人差不多长”的头发呢?想必一般人这个时候基本无路可走了,但是我们可爱又聪明,同时失聪又失忆的理发师仍然想出了解决办法:他们看了看客人头上的头发,发现不同地方有长有短,于是就把同一个客人所有头发的平均长度作为难题的答案(CNN的InstanceNorm)。听起来这个解决方案匪夷所思,但是出人意料的是,有些客人居然仍然非常满意。人们管这些传说中的神奇理发师为:InstanceNorm理发师。

各种normalization的性质。

batch normalization为什么起作用

主要原因是平滑了损失曲面

normolization 的应用场景

至于各种Normalization的适用场景,可以简洁归纳如下:对于RNN的神经网络结构来说,目前只有LayerNorm是相对有效的;如果是GAN等图片生成或图片内容改写类型的任务,可以优先尝试InstanceNorm;如果使用场景约束BatchSize必须设置很小,无疑此时考虑使用GroupNorm;而其它任务情形应该优先考虑使用BatchNorm

深度学习中的Normalization模型——张俊林 阅读笔记相关推荐

  1. 深度学习中的Normalization模型

    /*本文可以随便转载,转载时请注明作者及文章出处*/ 作者:新浪微博  张俊林 Batch Normalization(简称BN)自从提出之后,因为效果特别好,很快被作为深度学习的标准工具应用在了各种 ...

  2. 深度学习中的Normalization模型(附实例公式)

    来源:运筹OR帷幄 本文约14000字,建议阅读20分钟. 本文以非常宏大和透彻的视角分析了深度学习中的多种Normalization模型,从一个新的数学视角分析了BN算法为什么有效. [ 导读 ]不 ...

  3. 深度学习中的Normalization总结

    写在前面 在查batch normalization和layer normalization的区别的时候看到的文章,总结得非常好.怕以后找不到忘记看,先在这里存档一下. 深度学习中的Normaliza ...

  4. 详解深度学习中的Normalization,不只是BN(2)

    " 深度神经网络模型训练之难众所周知,其中一个重要的现象就是 Internal Covariate Shift. Batch Normalization 大法自 2015 年由Google ...

  5. ML之模型文件:机器学习、深度学习中常见的模型文件(.h5、.keras)简介、h5模型文件下载集锦、使用方法之详细攻略

    ML之模型文件:机器学习.深度学习中常见的模型文件(.h5..keras)简介.h5模型文件下载集锦.使用方法之详细攻略 目录 ML/DL中常见的模型文件(.h5..keras)简介及其使用方法 一. ...

  6. 详解深度学习中的Normalization,不只是BN(1)

    " 深度神经网络模型训练之难众所周知,其中一个重要的现象就是 Internal Covariate Shift. Batch Normalization 大法自 2015 年由Google ...

  7. 深度学习中的Normalization总结(BN/LN/WN/IN/GN)

    文章目录 简介 独立同分布(i.i.d) Internal Covariate Shift Normalization的通用公式 Batch-Normalization -- 纵向规范化 为什么用BN ...

  8. 五个角度解释深度学习中 Batch Normalization为什么效果好?

    https://www.toutiao.com/a6699953853724361220/ 深度学习模型中使用Batch Normalization通常会让模型得到更好表现,其中原因到底有哪些呢?本篇 ...

  9. 深度学习中的几大模型

    一.AlexNet 模型 1.提出了LRN层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力. 2.数据增强,随机地从256×25 ...

最新文章

  1. 计算机编程语言python-2018年计算机编程语言排名: Python语言排名第一
  2. zendStudio|Eclipse 相关收藏
  3. Eclipse中Spring插件:Spring Tool 4(aka Spring Tool Suite 4)插件安装
  4. apache mysql 登陆_Apache站点,注册登陆功能的实现
  5. Window插件获取窗口坐标
  6. spring 事务_极限 Spring (4) Spring 事务
  7. js之事件冒泡和事件捕获详细介绍
  8. C++使用major做变量名的问题
  9. PHP基础知识------页面静态化
  10. 消息中间件的使用场景
  11. 转载 JavaScript的24条实用建议
  12. 04-AskDoctorForHelp-向医生寻求帮助
  13. 基于java汽车租赁管理系统
  14. python动物农场小说网站爬虫_中文编程,用python编写小说网站爬虫
  15. 连接服务器显示凭据,连接云服务器时的凭据是什么意思
  16. mac的照片应用照片原图存储位置
  17. 史上最全的正则表达式-匹配
  18. 分享Python简短代码,实现TXT转换MySQL文件。
  19. 【附源码】计算机毕业设计JAVA在线购书商城系统
  20. 【资讯】国家级转基因大豆玉米品种审定标准

热门文章

  1. 基于matlab simulink (Simple 6-Pulse HVDC Transmission System)简单六脉冲高压直流输电系统
  2. 高通charge杂记
  3. MySQL数据库将表A里的一列数据插入表B中
  4. Keil MDK下基于Cortex-M33进行代码仿真
  5. [卷积系列] P3338 [ZJOI2014]力
  6. 电脑开机后台一堆,内存爆满,如何解决
  7. Google Scholar 导出文献的BibTex引用代码
  8. 略谈天若有情天亦老的下一句
  9. 10.React Native之常量、变量、组件;
  10. NJUPT - Java Swing布局 - 闹钟提醒