BN的真正作用,How Does Batch Normalization Help Optimization?

2023-12-07 03:32

本文主要是介绍BN的真正作用,How Does Batch Normalization Help Optimization?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

与BN相关的两篇论文

Batch Normalization说BN的作用是因为解决了Internal Covariate Shift(ICS,内部输入分布变化)问题
MIT 的 NeurIPS18 How Does Batch Normalization Help Optimization?从数学推导以及实验方面证明了BN的真正作用

BN原论文的理解与分析

原始论文作者认为 BN 减小了所谓的 internal covariate shift(ICS),是 BN 成功的根基;这一观点被广泛接受但是没有被证明。

  • BN:normalizing each layer,for each mini-batch
  • 将每个mini-batch都进行零均值归一化,将原始数据映射到均值为0,方差为1的分布上;假设原始特征的均值为μ,标准差为δ,那么归一化公式如下(输入减均值再除以标准差),为了保证原数据的表达能力所以增加的一个平移因子β,和一个放大因子γ,这两个参数均由学习得到零均值归一化在这里插入图片描述
  • 归一化的好处,让数据在相同的学习率下,不同X的更新速率会变得更为一致,容易更快的通过梯度下降找到最优解,节约计算资源。
  • 但是即使BN将每个batch数据的均值和方差分布控制在0,1,也不能说明每个batch的数据分布是一致的,因为不同分布的数据也可以有相同的均值和方差

How Does Batch Normalization Help Optimization?的理解分析

  • BN带来的性能跟输入分布的稳定性(ICS的减少)无关,并且在一定程度上认为BN并不能减少ICS;

  • BN的作用是因为它能使优化问题的解空间更加平滑,这使得梯度更具预测性和稳定性可以使用更大范围的学习速率加速网络收敛;

  • 实验证明这种平滑效果并非与BatchNorm唯一相关,许多其他的正则化技术也具有类似的效果,其效果在线性网络上不如L1),P范数正则化都能对训练性能提供类似的效果改善;

  • How Does Batch Normalization Help Optimization?的实验证明,如下

  • 实验具体讲解,转载至seniusen

这篇关于BN的真正作用,How Does Batch Normalization Help Optimization?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/464360

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

Spring组件初始化扩展点BeanPostProcessor的作用详解

《Spring组件初始化扩展点BeanPostProcessor的作用详解》本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感... 目录一、概述二、BeanPostProcessor的作用三、核心方法解析1、postProcessB

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们