BN和LN

article/2025/10/6 19:03:56

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

ICS导致的问题:每个神经元的输入数据不再是 “独立同分布”。
其一,上层参数需要不断适应新的输入数据分布,降低学习速度。
其二,下层输入的变化可能趋向于变大或者变小,导致上层落入饱和区,使得学习过早停止。
其三,每层的更新都会影响到其它层,因此每层的参数更新策略需要尽可能的谨慎。

由于 ICS 问题的存在,x 的分布可能相差很大。要解决独立同分布的问题,“理论正确” 的方法就是对每一层的数据都进行白化操作

白化就是去除输入数据的冗余信息。

如训练数据是图像,由于图像中相邻像素之间具有很强的相关性,

用于训练时输入是冗余的;白化的目的就是降低输入的冗余性。
输入数据集X,经过白化处理后,新的数据X'满足两个性质:
        (1)特征之间相关性较低;
        (2)所有特征具有相同的方差。

PCA不用作降维,而是求特征向量,把数据 X 映射到新特征空间,这一映射过程就是满足白化的第一个性质:除去特征之间的相关性。白化算法实现第一步就是PCA,求出新特征空间中 X 的新坐标,再对新的坐标进行方差归一化操作。

PCA 白化保证数据各维度的方差为1,而ZCA白化保证数据各维度的方差相同。PCA白化可以用于降维也可以去相关性,而ZCA白化主要用于去相关性,且尽量使白化后的数据接近原始输入数据。

标准的白化操作代价高昂,且不可微不利于反向传播更新梯度,所以提出了如 BN 等方法替代白化,其基本思想是:在将 x 送给神经元之前,先对其做平移和伸缩变换, 将 x 的分布规范化成在固定区间范围的标准分布。

平移缩放的作用:为了保证模型的表达能力不因为规范化而下降。
规范化会将几乎所有数据映射到激活函数的非饱和区(线性区),仅利用到了线性变化能力,降低了神经网络的表达能力,而再变换可以将数据从线性区变换到非线性区,恢复模型的表达能力。

平移与再平移参数:平移参数,x 的均值取决于下层神经网络的复杂关联;
再平移参数去除了与下层计算的密切耦合,容易通过梯度下降来学习参数,简化神经网络训练。

BN在batch维度的归一化,也就是对于每个batch,该层相应的output位置归一化所使用的mean和variance都是一样的。

BN 的学习参数包含rescale和shift两个参数。
1、BN在单独的层级之间使用比较方便,比如CNN。而RNN层数不定,直接用BN不太方便,需要对每一层(每个time step)做BN,并保留每一层的mean和variance。由于RNN输入不定长(time step长度不定),会有validation 或 test的 time step 比 train 里面的任何数据都长,造成mean和variance不存在的情况。
2、BN会引入噪声(因为是mini batch而不是整个training),对噪声敏感的方法(如RL)不太适用。

BN(Batch Normalization)并不适用于RNN等动态网络和batch size较小的时候效果不好。

Layer Normalization(LN) 的提出有效的解决BN的这两个问题。

LN和BN不同点是归一化的维度是互相垂直的。

LayerNorm实际就是对隐含层做层归一化,即对某一层的所有神经元的输入进行归一化。(每hidden_size个数求平均/方差)
1、在training 和 inference 时没有区别,只需要对当前隐藏层计算mean and variance,不需要保          存每层的moving average mean and variance。
2、不受batch size限制,可通过online learning的方式一条一条的输入训练数据。
3、LN可以方便的在RNN中使用。
4、LN增加了gain和bias作为学习的参数。

在图1中 N 表示样本轴, C表示通道轴,F是每个通道的特征数量。

BN如右侧所示,取不同样本的同一个通道的特征做归一化;

LN则是如左侧所示,取同一个样本的不同通道做归一化。

BN是按照样本数计算归一化统计量的,当样本数很少时,如有 4 个样本,这 4 个样本的均值和方差便不能反映全局的统计分布息,所以基于少量样本的 BN 的效果会变得很差。

RNN可以展开成一个隐藏层共享参数的MLP,随着时间片的增多,展开后的MLP的层数也在增多,最终层数由输入数据的时间片的数量决定,所以RNN是一个动态的网络。在一个batch中,通常各个样本的长度都是不同的,当统计到比较靠后的时间片时,基于这个样本的统计信息不能反映全局分布,这时BN的效果并不好。

BN的两个缺点的产生原因均是因为计算归一化统计量时计算的样本数太少。

LN是一个独立于batch size的算法,所以无论样本数多少都不会影响参与LN计算的数据量,从而解决BN的两个问题。

BN优点

(1)BN使得网络中每层输入数据的分布相对稳定,加速模型学习速度

(2)BN使得模型对网络中的参数不那么敏感,简化调参过程,使得网络学习更加稳定

(3)BN允许网络使用饱和性激活函数(例如sigmoid,tanh等),缓解梯度消失问题

(4)BN具有一定的正则化效果

参考:

模型优化之Layer Normalization - 知乎

Batch Norm和Layer Norm - 简书

https://blog.csdn.net/u013146742/article/details/51798826(白化)


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

相关文章

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;需要将邮箱地址发送到服…

Hibernate Validator源码解析

一、引言 问题&#xff1a;在代码编写的过程中&#xff0c;数据值的校验在JavaEE三层架构&#xff08;展示层、业务层、数据访问层&#xff09;均有涉及&#xff0c;各层的校验需求又是不尽相同的&#xff0c;因此往往会伴随着代码冗余&#xff0c;重复的校验逻辑出现在三层代…

Hibernate Validator简介

亲爱的小伙伴们我来填坑啦&#xff0c;java中优雅的参数校验方法中的校验的实现原理。 1.前言 验证数据是发生在所有应用程序层&#xff08;从表示层到持久层&#xff09;的常见任务。通常在每一层中实现相同的验证逻辑&#xff0c;这既耗时又容易出错。为了避免重复这些验证&…