BN层多方面解读

article/2025/10/6 17:42:58

BN层全面解读

        • 1. BN层作用概述
        • 2. BN层作用方式
        • 3. BN作用位置
        • 4. BN层起作用的原因
        • 5. 测试时的BN层

1. BN层作用概述

BN层会使得神经网络对超参数得选择更加稳定,超参数的变化范围可以更大,工作效果也更好。即使是深层网络,BN层的存在也会使得模型训练更加容易。同时BN层具有一定的正则化效果。

下面将说明BN层的具体作用方式,并解释BN层起到上述作用效果的原因。

2. BN层作用方式

一般我们认为BN层作用在激活函数之前

我们以一个神经网络中的某一个隐藏层(L层)中的某一个节点(1节点)为例,说明BN层的作用方式。在训练过程中,我们一次输入网络一个batch大小的数据。经过网络计算到第L层时,batch中的每一个单独的数据,都会在L层的1号节点输出一个值(设为 z ( 1 ) 到 z ( m ) z^{(1)}到z^{(m)} z(1)z(m))。则该批量数据在L层1号节点一共输出batch(m)个数据。我们对这batch个数据求均值 μ \mu μ和方差 σ 2 \sigma^{2} σ2,并使用求得的均值和方差对该节点的数据进行归一化。具体计算公式如下,其中 ϵ 是极小量,防止分母为零 \epsilon是极小量, 防止分母为零 ϵ是极小量,防止分母为零
μ = 1 m ∑ z ( i ) σ 2 = 1 m ∑ ( z ( i ) − μ ) 2 z n o r m ( i ) = z ( i ) − μ σ 2 + ϵ \mu = \frac{1}{m}\sum z^{(i)}\\ \sigma^2 = \frac{1}{m}\sum(z^{(i)}-\mu)^2\\ z_{norm}^{(i)} = \frac{z^{(i)-\mu}}{\sqrt{\sigma^2 + \epsilon}} μ=m1z(i)σ2=m1(z(i)μ)2znorm(i)=σ2+ϵ z(i)μ
这样得到的 z n o r m ( i ) z_{norm}^{(i)} znorm(i),**满足均值为0方差为1的分布。**但有时我们不希望隐藏层单元经过BN输出的值总是满足均值为零方差为1的分布。也许不同分布会更有意义。比如,如果我们使用softmax激活函数,如下图。均值为0方差为1的分布会更多的聚集在softmax的线性部分,若我们像更多的利用softmax的非线性特性,则需要改变数据的分布。

在这里插入图片描述

所以我们对 z n o r m ( i ) z_{norm}^{(i)} znorm(i)再进行一步变换 z ( i ) = γ z n o r m ( i ) + β {z^{(i)}} = \gamma z_{norm}^{(i)} + \beta z(i)=γznorm(i)+β这里的 γ 和 β \gamma和\beta γβ会改变数据的分布,对原始分布(均值为0,方差为1)进行缩放和平移。同时**这两个参数 γ 和 β \gamma和\beta γβ是模型的学习参数,所以我们会使用梯度下降或类似算法对其进行更新。**到此BN层的作用方式介绍完,我们接下来看其实际应用再我们的神经网络中的作用位置。

3. BN作用位置

我们借助吴恩达老师课程中的一张图理解BN层的作用位置。我们认为图中一个圆圈代表一个节点,在不使用BN层的情况下每个圆圈有两部计算,分别是通过权重 w , b w, b w,b计算出 z z z z z z再通过激活函数计算出 a a a。当我们加入BN层时,其作用位置在图中红线部分,也就是在激活函数之前。

在这里插入图片描述

由于其作用位置在激活函数之前,我们根据前面BN层的公式可以意识到,无论时第一步通过 w , b w, b w,b计算,还是经过BN层,数据均在进行线性变换。由于BN层会首先计算一个batch数据的均值和方差,然后将这组数据变为均值为0,方差为1的分布。所以第一步 w , b w, b w,b变换中的 b b b参数就失去了作用,无论其为多少在BN第一步计算时都会被减去,失去效果。所以我们不使用 b b b权重,偏置效果将由BN层的参数 β \beta β实现。

4. BN层起作用的原因

  1. BN层会使得深层网络对浅层网络的扰动的敏感性减低,如果不加入BN层,浅层网络的扰动会逐层积累,到达深层时可能数据分布会发生巨大变化,这会导致深层网络的参数训练困难。BN层会减少每层网络之间的联系,使得每层网络可以独立学习,有助于加速整个网络的学习。
  2. 一些激活函数如sigmoid在输入值过大或过小时会进入饱和区,会造成梯度过小,甚至梯度消失,不利于训练。所以BN也会使得数据分布在激活函数较为合适的区域,加快网络训练速度。
  3. BN层还有一定的正则化效果,通过上文我们了解BN层的均值和方差是在一个batch上的所有数据计算的。因为我们的batch通常是数据集中的一小部分,所以计算出的均值和偏差均存在噪音。这些噪音会对网络起到正则化的效果(类似于droupout),使得网络不过分依赖某一个节点的输出。

5. 测试时的BN层

上文介绍的BN层需要计算一个小batch的所有数据的均值和方差,但是当我们使用模型进行测试的时候,可能单次仅有一个输入,这时计算的均值和方差显然是没有意义的。所以解决这一问题的大致思想是,我们会在训练时记住整个训练集的均值和方差作为我们测试时的均值方差数据。不同的框架会有不同的相关操作,但其最终的结果均有预期的效果,不必担心!


http://chatgpt.dhexx.cn/article/rKI6IX8a.shtml

相关文章

模型部署——融合BN和Conv层

今天我们将尝试了解如何使我们的模型在推理上更快一点。 使用 Batch Normalization 作为提高泛化能力的一种方式浪费了大量的网络。 但是在推理过程中,批量归一化被关闭,而是使用近似的每个通道均值和方差。 很酷的是,我们可以通过 1x1 卷积…

CV-BN

what Normalization是数据标准化(归一化,规范化),Batch 可以理解为批量,加起来就是批量标准化。 和卷积层,激活层,全连接层一样,BN层也是属于网络中的一层,常见排列 co…

BN算法

Motivation 2015年的论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》阐述了BN算法,这个算法目前已经被大量应用,很多论文都会引用这个算法,进行网络训练,可见其强大之处…

BN使用总结及启发

声明:文章仅作知识整理、分享,如有侵权请联系作者删除博文,谢谢! Batch Normalization视神经网络的经典结构,本文对BN的引入,训练、推理过程及BN的特性,进行整理。 1、数据预算处理&#xff0…

Batch Normalization (BN)简洁介绍

提出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&…

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》提出的。通过该方法能够加速网络的收敛并提升准确率。在网上虽然已经有很多相关文章,但基本都是摆上论文中的公式泛…