文章目录

  • 1.前言
  • 2.普通数据归一化
  • 3.层归一化
  • 4.Batch Normalization 添加位置
  • 5.Batch Normalization 效果
  • 6.BN 算法

1.前言

今天我们会来聊聊批标准化 Batch Normalization

2.普通数据归一化

Batch Normalization, 批标准化, 和普通的数据标准化类似, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. 具有统一规格的数据, 能让机器学习更容易学习到数据之中的规律.

3.层归一化


在神经网络中, 数据分布对训练会产生影响. 比如某个神经元 x 的值为1, 某个 Weights 的初始值为 0.1, 这样后一层神经元计算结果就是 Wx = 0.1; 又或者 x = 20, 这样 Wx 的结果就为 2. 现在还不能看出什么问题, 但是, 当我们加上一层激励函数, 激活这个 Wx 值的时候, 问题就来了. 如果使用 像 tanh 的激励函数, Wx 的激活值就变成了 ~0.1 和 ~1, 接近于 1 的部已经处在了 激励函数的饱和阶段, 也就是如果 x 无论再怎么扩大, tanh 激励函数输出值也还是 接近1. 换句话说, 神经网络在初始阶段已经不对那些比较大的 x 特征范围 敏感了. 这样很糟糕, 想象我轻轻拍自己的感觉和重重打自己的感觉居然没什么差别, 这就证明我的感官系统失效了. 当然我们是可以用之前提到的对数据做 normalization 预处理, 使得输入的 x 变化范围不会太大, 让输入值经过激励函数的敏感部分. 但刚刚这个不敏感问题不仅仅发生在神经网络的输入层, 而且在隐藏层中也经常会发生

只是这时候 x 换到了隐藏层当中, 我们能不能对隐藏层的输入结果进行像之前那样的normalization 处理呢? 答案是可以的, 因为大牛们发明了一种技术, 叫做 batch normalization, 正是处理这种情况.

4.Batch Normalization 添加位置


Batch normalization 的 batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理

5.Batch Normalization 效果

Batch normalization 也可以被看做一个层面. 在一层层的添加神经网络的时候, 我们先有数据 X, 再添加全连接层, 全连接层的计算结果会经过 激励函数 成为下一层的输入, 接着重复之前的操作. Batch Normalization (BN) 就被添加在每一个全连接和激励函数之间.

之前说过, 计算结果在进入激励函数前的值很重要, 如果我们不单单看一个值, 我们可以说, 计算结果值的分布对于激励函数很重要. 对于数据值大多分布在这个区间的数据, 才能进行更有效的传递. 对比这两个在激活之前的值的分布. 上者没有进行 normalization, 下者进行了 normalization, 这样当然是下者能够更有效地利用 tanh 进行非线性化的过程.

没有 normalize 的数据 使用 tanh 激活以后, 激活值大部分都分布到了饱和阶段, 也就是大部分的激活值不是-1, 就是1, 而 normalize 以后, 大部分的激活值在每个分布区间都还有存在. 再将这个激活后的分布传递到下一层神经网络进行后续计算, 每个区间都有分布的这一种对于神经网络就会更加有价值. Batch normalization 不仅仅 normalize 了一下数据, 他还进行了反 normalize 的手续. 为什么要这样呢?

6.BN 算法


我们引入一些 batch normalization 的公式. 这三步就是我们在刚刚一直说的 normalization 工序, 但是公式的后面还有一个反向操作, 将 normalize 后的数据再扩展和平移. 原来这是为了让神经网络自己去学着使用和修改这个扩展参数 gamma, 和 平移参数 β, 这样神经网络就能自己慢慢琢磨出前面的 normalization 操作到底有没有起到优化的作用, 如果没有起到作用, 我就使用 gamma 和 belt 来抵消一些 normalization 的操作.

最后我们来看看一张神经网络训练到最后, 代表了每层输出值的结果的分布图. 这样我们就能一眼看出 Batch normalization 的功效啦. 让每一层的值在有效的范围内传递下去.

Pytorch——批标准化(层归一化)相关推荐

  1. 基于MNIST数据集的Batch Normalization(批标准化层)

    从前面的文章中,我们了解到,各层的激活值分布如果比较偏向的话,都会影响到神经网络的正常顺利学习,如果各层的激活值能够适当的进行广度分布,或说强制性地调整激活值的分布,这样的效果会怎么样呢?答案是肯定的 ...

  2. PYTORCH批标准化

    1.标准化 传统机器学习中标准化也叫做归一化. 一般是将数据映射到指定的范围,用于去除不同维度数据的量纲以及量纲单位.数据标准化让机器学习模型看到的不同样本彼此之间更加相似,这有助于模型的学习与对新数 ...

  3. DL基石-神经网络的批标准化

    训练学习系统的一个主要假设是在整个训练过程中输入分布是保持不变的.对于简单地将输入数据映射到某些适当输出的线性模型,这种条件总是能满足的,但在处理由多层叠加而成的神经网络时,情况就不一样了. 在这样的 ...

  4. 批标准化 tf.keras.layers.BatchNormalization 中的trainable参数与training参数比较

    巨坑提醒:tf.keras与tensorflow混用,trainable=False根本不起作用.正文不用看了. 摘要: 在tensorflow中,training参数和trainable参数是两个不 ...

  5. 批标准化 tf.keras.layers.BatchNormalization 参数解析与应用分析

    Table of Contents 函数调用 设置training=None时可能存在的问题 :tf.keras.backend.learning_phase()的特点 批标准化函数产生的变量是可训练 ...

  6. 批标准化(batch normalization)与层标准化(layer normalization)比较

    批标准化(batch normalization,BN)与层标准化(layer normalization,LN)应该都是为了解决网络训练过程中的协变量漂移问题. BN与LN的归一化方法都是先减均值, ...

  7. 偏差与方差、L1正则化、L2正则化、dropout正则化、神经网络调优、批标准化Batch Normalization(BN层)、Early Stopping、数据增强

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 3.2 深度学习正则化 3.2.1 偏差与方差 3.2.1.1 ...

  8. 3.1 Tensorflow: 批标准化(Batch Normalization)

    ##BN 简介 背景 批标准化(Batch Normalization )简称BN算法,是为了克服神经网络层数加深导致难以训练而诞生的一个算法.根据ICS理论,当训练集的样本数据和目标样本集分布不一致 ...

  9. 深度学习数据预处理——批标准化(Batch Normalization)

    数据预处理最常见的方法就是中心化和标准化,中心化相当于修正数据的中心位置,实现方法非常简单,就是在每个特征维度上减去对应的均值,最后得到 0 均值的特征.标准化也非常简单,在数据变成 0 均值之后,为 ...

最新文章

  1. 设计模式(一)-单例模式
  2. 计算机函数match,秒杀vlookup函数,Index+Match函数组合
  3. 一道关于回文的笔试题
  4. BZOJ3743 : [Coci2014]Kamp
  5. Quartus和ISErom文件格式
  6. JDK8时间与java.util.Date,java.sql.Date,Timestamp等的相互转换(时间转换)
  7. dnf最新地图编号2020_2020手游崛起端游没落?网易新端游好玩刺激能搬砖,网友:妙...
  8. 【问题】父套子时,‘阻止子元素的外边距传递给父元素’与闭合浮动
  9. 面向对象——类设计(七)
  10. 仓库货位 mysql_Max(TM)财务进销存管理系统 V1.1.12 MySQL网络版
  11. 网站渗透零基础教程 渗透测试工程师养成之路
  12. go语言中如何使用select
  13. 什么是你的核心竞争力之二?
  14. 错误记录-java idea执行k8s https api报错 should not be presented in certificate_request
  15. python自动化开发-[第九天]-异常处理、进程
  16. 自己写的一点福利代码(一)
  17. Nothing——for 情人节
  18. WormHole是一个简单、易用的api管理平台,支持dubbo服务调用
  19. 网络编程——基于TCP协议的通讯录【课程设计】
  20. 图像质量评估(2) -- 图像质量相关参数:分辨率

热门文章

  1. python3爬取中国药学科学数据
  2. Piper蛋窝「2020.10.19-2020.10.25」本周更新内容の大预告!
  3. 【编译原理笔记08】语法制导翻译:语法制导定义,SSD的求值顺序,S属性定义与L属性定义
  4. 【操作系统/OS笔记06】虚拟内存、覆盖、交换
  5. 分形与数据结构第一篇(神奇的色子)
  6. 数字后端基础技能之:CTS(下篇)
  7. mysql binlog ignore db_MySQL binlog_ignore_db 参数的具体使用
  8. Linux 基本命令(自学笔记)
  9. Windows7 x64在Wampserver上安装memcache
  10. Gitee仓库创建及本地项目如何关联并上传