Batch Normalization (BN)简洁介绍

article/2025/10/6 18:03:44

提出BN的文献: Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network training by reducing internal covariate shift. 32nd International Conference on Machine Learning, ICML 2015, 1, 448–456.

Batch Normalization(归一化)

结论

BN就是通过一定的规范化手段,默认情况下把每层神经网络任意神经元这个输入值的分布是拉回到均值为0方差为1标准正态分布使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题,并且能够加快训练的收敛速度,同时增强神经网络的泛化能力。

 

展开介绍:

在逻辑回归中,使用归一化输入特征可以加快学习过程。归一化是指先从训练集中减去平均值,然后除以方差。

这样的方法同样适用于神经网络的输入层,这样可以得到一个均值为0方差为1的输入。但是这不适用于神经网络的隐藏层,因为隐藏层有不同的分布会更有意义,所以对于隐藏层的归一化:,这里是你神经网络学习到的参数,也可以用Adam的方式更新。

BN操作使隐藏单元值的均值和方差标准化,即有固定的均值和方差,均值和方差可以是0和1,也可以是其它值,它是由两参数控制的

在TensorFlow中,tf.nn.batch_normalization可以一行代码实现Batch归一化(BN)。

因为在Batch归一化的过程中,你要计算的均值,再减去平均值,所以加上的常数b都将会被均值减去所抵消,这个参数变得没有意义,所以参数实际是变为了成,然后再计算归一化的这就为什么最后会用参数作为控制参数,影响转移或偏置条件。

BN用于调节计算的是在整个mini-batch上进行计算,但是在测试的时候,如果只有一个样本,一个样本的均值和方差没有意义。所以为了将神经网络运用于测试,就需要单独估计在实际操作中,我们通常运用指数加权平均来追踪在训练过程中你看到的的值。还可以用指数加权平均来粗略估算,然后在测试中使用的值来进行你所需要的隐藏单元值的调整。如果你使用的是某种深度学习框架,通常会有默认的估算的方式,一样会起到比较好的效果

 

为什么能增加神经网络的泛化能力?

如果是用左图的训练集训练的网络,是很难在右图的测试集上有好的表现的,因为右图的猫比左图的猫多了颜色。Batch归一化可以减少输入值改变的问题,因为进行了标准化,固定了隐藏单元输出的均值和方差,使得左图训练出的网络在右图有相对较好的表现。

还有一点是因为Batch归一化通常和mini-batch同时使用,所以均值和方差是在小批次的数据集上计算的,而不是整个数据集,所以会引入噪声,因为给隐藏单元添加了噪声,迫使后面的隐藏单元不过分依赖前面的任何一个隐藏单元,从而起到了正则化的效果。(所以应用较大的mini-batch可以减少正则化效果)

 


http://chatgpt.dhexx.cn/article/0yV0QweF.shtml

相关文章

PyTorch 源码解读之 BN SyncBN:BN 与 多卡同步 BN 详解

目录 1. BatchNorm 原理 2. BatchNorm 的 PyTorch 实现 2.1 _NormBase 类 2.1.1 初始化 2.1.2 模拟 BN forward 2.1.3 running_mean、running_var 的更新 2.1.4 \gamma, \beta 的更新 2.1.5 eval 模式 2.2 BatchNormNd 类 3. SyncBatchNorm 的 PyTorch 实现 3.1 for…

BN和LN

covariate shift 是分布不一致假设之下的分支问题,指源空间和目标空间的条件概率是一致的,但边缘概率不同;而统计机器学习中的经典假设是 “源空间(source domain)和目标空间(target domain)的数…

BN的理解

机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。那BatchNorm的作用是什么呢?BatchNorm就是在深度神经网络训练…

BN的作用

BN的作用一共有三个: 1 加速网络的收敛速度 2 控制了梯度消失的问题 3 防止过拟合 BN可以认为是在每一层的输入和上一层的输出之间加入一个计算层,对数据的分布进行额外的约束,从而增强模型的泛化能力。但是BN同时也降低了模型的拟合能力&am…

BN 层原理解析

1 训练数据为什么要和测试数据同分布? 看看下图,如果我们的网络在左上角的数据训练的,已经找到了两者的分隔面w,如果测试数据是右下角这样子,跟训练数据完全不在同一个分布上面,你觉得泛化能力能好吗&…

BN128曲线

1. 引言 BN系列椭圆曲线 E ( F p ) : y 2 x 3 b , 其 中 b ≠ 0 E(\mathbb{F}_p):y^2x^3b,其中b\neq 0 E(Fp​):y2x3b,其中b​0,由Paulo S. L. M. Barreto1 和 Michael Naehrig 在2005年论文 Pairing-Friendly Elliptic Curv…

【YOLO v4 相关理论】Normalization: BN、CBN、CmBN

一、Batch Normalization 论文:https://arxiv.org/pdf/1502.03167.pdf 源码: link. Batch Normalization是google团队在2015年论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》提出的。 个人认为…

Betaflight BN880 GPS 简单测试

Betaflight BN880 GPS 简单测试 1. 源由2. 窗台对比测试3. 开阔区域测试3.1 GPS安装位置3.1.1 BN880 GPS 机尾打印支架 安装位置3.1.2 BN880 GPS 机头固定 安装位置3.1.3 M8N GPS 机尾打印支架 安装位置 3.2 M8N模块历史记录3.3 BN880模块第一次(机尾安装&#xff0…

BN(Batch Normalization):批量归一化

现在的神经网络通常都特别深,在输出层像输入层传播导数的过程中,梯度很容易被激活函数或是权重以指数级的规模缩小或放大,从而产生“梯度消失”或“梯度爆炸”的现象,造成训练速度下降和效果不理想。 随着训练的进行,…

通俗理解BN(Batch Normalization)

1. 深度学习流程简介 1)一次性设置(One time setup) - 激活函数(Activation functions) ​ - 数据预处理(Data Preprocessing) ​ - 权重初始化(Weight Initialization&#xff0…

为什么BN?batch normalization的原理及特点

1 什么是BN? 数据归一化方法,往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度,使得模型训练过程更加稳定,避免梯度爆炸或者梯度消失。并且起到一定的正则化作用,几乎代替了Dropout 2 原理 B…

【深度学习基础知识 - 07】BN的原理和作用

Batch Normalization也是深度学习中的一个高频词汇,这篇文章将会对其做一个简单介绍。 目录 1. BN的原理2. BN的作用3. BN层的可学习参数4. infer时BN的处理5. BN的具体计算步骤以及公式6. BN和L2参数权重正则化的区别 1. BN的原理 BN就是在激活函数接收输入之前对…

什么是BN(Batch Normalization)

什么是BN(Batch Normalization)? 在之前看的深度学习的期刊里,讲到了BN,故对BN做一个详细的了解。在网上查阅了许多资料,终于有一丝明白。 什么是BN? 2015年的论文《Batch Normalization: Accelerating Deep Networ…

深度学习—BN的理解(一)

0、问题 机器学习领域有个很重要的假设:IID独立同分布假设,就是假设训练数据和测试数据是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。那BatchNorm的作用是什么呢?BatchNorm就是在深度神经…

Batch Normalization详解以及pytorch实验

Batch Normalization是google团队在2015年论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》提出的。通过该方法能够加速网络的收敛并提升准确率。在网上虽然已经有很多相关文章,但基本都是摆上论文中的公式泛…

Java参数校验validation和validator区别

Java参数校验validation和validator区别 1. 参数校验概述2. validation与validator区别3. validation注解说明4. validator注解说明5. 日期格式化说明6. 实现验证6.1 引入依赖6.2 代码实现6.3 实现验证 1. 参数校验概述 常见的业务开发中无可避免的会进行请求参数校验&#xf…

hibernate-validator

validator 简介各种注解好处 validator.validate方法业务逻辑代码中检查传入的参数时为传入的参数类型中各个属性添加注解NotNull、NotBlank、NotEmpty间的区别 简介 validator,翻译过来,就是“验证器”的意思。它是一种注解式参数校验,包名…

validator自定义校验注解及使用

validator自定义校验注解及使用 官方文档&#xff1a;https://docs.jboss.org/hibernate/validator/8.0/reference/en-US/html_single/#validator-customconstraints 用到依赖: <!--validator的依赖如果项目使用的springBoot的依赖可以不用再引入 hibernate-validator 因为…

spring之Validator

初步认识 spring数据验证核心类&#xff1a;①&#xff1a;Validator ②&#xff1a;Errors,两者之间的纽带是Validator中定义的validate方法。 public interface Validator {// 限定Validator的职责&#xff0c;不可能所有的校验全部交给一个Validator来做boolean supports(…

Hibernate-Validator的学习

Hibernate-Validator的学习 此教程基于黑马程序员Java品达通用权限项目&#xff0c;哔哩哔哩链接&#xff1a;https://www.bilibili.com/video/BV1tw411f79E?p49 1.hibernate-validator介绍 早期的网站&#xff0c;用户输入一个邮箱地址&#xff0c;需要将邮箱地址发送到服…