剖析与心得

我们已经发现了在初始化的时候将输入数据归一化会得到更快的梯度下降速度与效果。那么其实很容易就会想到,如果我们能在神经网络的每一个隐藏层中都控制这些数值的分布,也许效果会不错。那么Batch norm就诞生了。它可以使你训练更深层次的神经网络,并且使得下降更快。

实现过程

只需要四步:
1)求出来每一行的zzz均值μ\muμ
2)求出来每一行的方差σ\sigmaσ2
3)得到归一化的zzznorm ,此时的均值为0,方差为1(前三步也就是按照行进行正则化)
4)使用β\betaβ[i]和γ\gammaγ[i]将zzz[i]调整为z~\widetilde{z}z[i].(调整方差与均值)

要注意,我们的batch norm是对于隐藏层的所有列的每一个属性zzz进行的(也就是说把每一行的所有元素在一起取均值,求方差,注意我们正则化是对于所有数据的同一个属性进行统计和调整,对于一个数据的各个属性的正则化没有意义),
在我们使用zzz[i]=www[i]aaa[i-1]+bbb[i]计算出zzz之后,在套用a=g(z)a=g(z)a=g(z)求出aaa之前,这中间加这一步,每一层都需要额外的参数β\betaβ[i]和γ\gammaγ[i](注意也是需要训练的参数,而不是预设的超参数)。
其实在TF这也就是一行代码的事。
还需要注意,在我们正则化的时候,由于每一行都需要加上同一个数值,bbb[l]的对应位置,所以归一化的时候,会被算到均值中被减掉,所以其实bbb我们就不需要设置了。实际上β\betaβ[l]取代了bbb[l]的位置。

为什么Batch norm奏效

我们首先要了解一个概念叫做covirate shift,就是说当我们对于输入的变量进行较大的变化时,我们的神经网络可能就无法很好的囊括住了。

Batch norm使得每一层的z都在一定的区域内(由我们预设的β\betaβ[i]和γ\gammaγ[i]来决定),所以这种情况会得到很好的缓解。和dropout近似,我们的神经元每一层之间会有更少的依赖性和传递的稳定性,我们的神经网络也会因此具有更好的鲁棒性和广泛性。

对于CNN的batchNorm的补充

在卷积神经网络中,由于其特性,我们必须要把我们的batchNorm的思维上升一个层次才能理解。
在NN中,因为我们需要利用不同神经元学习出特性,所以我们只想保留下不同神经元之间的独立,而归一化其他的特性,比如对于具有x1,x2,x3x1,x2,x3x1,x2,x3特性的一个batch,我们将其每一个的x1拿出来归一以此类推,因为我们对于某一个神经元位置的所有batch都做了相同的映射,所以要把这些batch归一化掉;但是在CNN中,由于我们想利用filter卷积核的共享思想,我们对于所有batch的所有图的每一个像素点都用了一组filter嘛,所以我们其实只想保留下不同filters产生的不同的channel之间的独立性,所以我们对于其他的所有z,即该batch所有图片长宽的每一个像素点值z,将他们每一个channel的(batchsize∗pictureXsize∗pictureYsizebatchsize*pictureXsize*pictureYsizebatchsize∗pictureXsize∗pictureYsize个z)全部拿出来做一个归一化。

所以batchNorm的思维升华了就是对于我们每一次的映射,保证输入量的归一于均匀,这应当是batchnorm的最核心思想。

深度学习笔记(17):Batch Norm简介相关推荐

  1. 2020-4-5 深度学习笔记17 - 蒙特卡罗方法 3 ( 马尔可夫链蒙特卡罗方法MCMC-先验分布/后验分布/似然估计,马尔可夫性质)

    第十七章 蒙特卡罗方法 中文 英文 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 1 (采样和蒙特卡罗方法-必要性和合理性) 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 2 ( 重要 ...

  2. 【深度学习笔记】Batch Normalization 以及其如何解决梯度消失问题

    前言 Batch Normalization作为最近一年来DL的重要成果,已经广泛被证明其有效性和重要性.目前几乎已经成为DL的标配了,任何有志于学习DL的同学们朋友们雷迪斯俺的詹特曼们都应该好好学一 ...

  3. 深度学习-各种归一化(Batch Norm、Layer Norm、Group Norm、InstanceNorm、Spatially-Adaptive Norm)

    深度学习之归一化:BN.LN.GN.IN.SPADE 0.总述 0.1.为什么要归一化处理 0.2.大体上看BN.LN.IN.GN 1.批量归一化(Batch Normalization,BN) 1. ...

  4. 优达学城-深度学习笔记(一)

    优达学城-深度学习笔记(一) 标签: 机器学习 优达学城-深度学习笔记一 一 神经网络简介 最大似然概率 交叉熵Cross entropy 1交叉熵代码实现 2多类别交叉熵 对数几率回归的误差函数co ...

  5. 深度学习笔记(17) 误差分析(二)

    深度学习笔记(17) 误差分析(二) 1. 使用来自不同分布的数据进行误差分析 2. 数据分布不匹配时的偏差与方差 3. 处理数据不匹配问题 1. 使用来自不同分布的数据进行误差分析 越来越多的团队都 ...

  6. 深度学习笔记(12) Batch归一化网络

    深度学习笔记(12) Batch归一化网络 1. Batch归一化 2. 激活值归一化 3. 特殊情况不归一化 4. mini-batch上的Batch归一化 1. Batch归一化 Batch归一化 ...

  7. 深度学习笔记(1) 深度学习简介

    深度学习笔记(1) 深度学习简介 1. 引言 2. 神经网络 3. 兴起 1. 引言 在机器学习的历史上,一共出现了两种定义: 1956 年,开发了西洋跳棋 AI 程序的 Arthur Samuel ...

  8. 深度学习笔记(七):Batch size问题总结

    文章目录 1.Batch Size对训练效果的影响 2.合理增大Batch Size 的好处 3.Batch Size太大的坏处 理论系列:     深度学习笔记(一):卷积层+激活函数+池化层+全连 ...

  9. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

  10. 33万字!深度学习笔记在线版发布!

    吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在 github 开源,为满足手机阅读的需要,我将笔记做成了在线版,可以在 ...

最新文章

  1. python 文案自动生成_Python自动化测试如何自动生成测试用例?
  2. 用脚本实现“修复连接”的功能
  3. 赠书 | 图灵奖得主杨立昆人工智能十问:AI会统治人类吗?
  4. 金鑫是著名高校计算机,金鑫 个人简历
  5. nginx tomcat集群实现session共享
  6. Tensorflow Serving部署tensorflow、keras模型详解
  7. 如何在Tomcat中设置JNDI数据库连接池-Spring教程示例
  8. ADO连接各种数据库
  9. 数仓中长跳转问题复现及解决方案
  10. 这可能是你见过的最全的网络爬虫总结
  11. 扫描仪scanner接口_QR Code Scanner –适用于Android的条形码扫描仪
  12. Android studio3.2学习开发JNI并且生成so库教程
  13. 禁止华硕触摸板的纠结历程
  14. 数据库备份的方式有哪些
  15. 集合体系结构、Collection集合概述及常用方法(附迭代器遍历对象实例)、List(附子类LinkedList、ArrayList特点)、ListIterator、并发修改异常、增强for
  16. layui省市县三级联动,如何设置select选择时,值为省市县code码
  17. linux 6.5光驱是什么意思,linux 6和5有什么不同
  18. bam文件转fq.gz文件
  19. 海关爬虫7代(圣佛版)
  20. Java 实现阿里云直播

热门文章

  1. 怎么下载maven其他版本
  2. thinkphp6集成抖音api用户授权、发布视频扩展封装类
  3. java arraylist 遍历_java集合ArrayList的三种遍历方式
  4. 青龙脚本(番茄小说,附脚本)(已废)
  5. gta5ol服务器网站,《GTAOL》角色扮演服务器更新 Twitch观众数登顶
  6. nodejs 字符串转数组
  7. UEFI+GPT和BIOS+MBR
  8. PTA 1037 在霍格沃茨找零钱
  9. r语言结构方程模型可视化_R语言Logistic回归模型深度验证以及Nomogram绘制
  10. 4G 模块DTU网关+传感器接入OneNET平台 (MQTT新版)智慧农业解决方案