Batch Normalization的诅咒

关于Batch Normalization的另一种理解 Batch Norm可谓深度学习中非常重要的技术,不仅可以使训练更深的网络变容易,加速收敛,还有一定正则化的效果,可以防止模型过拟合。在很多基于CNN的分类任务中,被大量使用。 但我最近在图像超分辨率和图像生成方面做了一些实践,发现在这类任务中,Batch Norm的表现并不好,加入了Batch Norm,反而使得训练速度缓慢,不稳定,甚至最后发散。 阅读详情

作者:Sahil Uppal

编译:ronghuaiyang

导读

batch normalization时的一些缺陷。

Batch Normalization确实是深度学习领域的重大突破之一,也是近年来研究人员讨论的热点之一。Batch Normalization是一种被广泛采用的技术,使训练更加快速和稳定,已成为最有影响力的方法之一。然而,尽管它具有多种功能,但仍有一些地方阻碍了该方法的发展,正如我们将在本文中讨论的那样,这表明做归一化的方法仍有改进的余地。

我们为什么要用Batch Normalization?

在讨论任何事情之前,首先,我们应该知道Batch Normalization是什么,它是如何工作的,并讨论它的用例。

什么是Batch Normalization

在训练过程中,当我们更新之前的权值时,每个中间激活层的输出分布会在每次迭代时发生变化。这种现象称为内部协变量移位(ICS)。所以很自然的一件事,如果我想防止这种情况发生,就是修正所有的分布。简单地说,如果我的分布变动了,我会限制住这个分布,不让它移动,以帮助梯度优化和防止梯度消失,这将帮助我的神经网络训练更快。因此减少这种内部协变量位移是推动batch normalization发展的关键原则。

它如何工作

Batch Normalization通过在batch上减去经验平均值除以经验标准差来对前一个输出层的输出进行归一化。这将使数据看起来像高斯分布。

其中μ和*σ^2^*分别为批均值和批方差。

并且,我们学习了一个新的平均值和协方差γ和β。所以,简而言之,你可以认为batch normalization是帮助你控制batch分布的一阶和二阶动量。

vgg16网络的中间卷积层的特征分布输出。(左)没有任何归一化,(右)应用了batch normalization

优点

我将列举使用batch normalization的一些好处,但是我不会详细介绍,因为已经有很多文章讨论了这个问题。

  • 更快的收敛。

  • 降低初始权重的重要性。

  • 鲁棒的超参数。

  • 需要较少的数据进行泛化。

1. 更快的收敛,2. 对超参数更鲁棒

Batch Normalization的诅咒

好,让我们回到本文的出发点,在许多情况下batch normalization开始伤害性能或根本不起作用。

在使用小batch size的时候不稳定

如上所述,batch normalization必须计算平均值和方差,以便在batch中对之前的输出进行归一化。如果batch大小比较大的话,这种统计估计是比较准确的,而随着batch大小的减少,估计的准确性持续减小。

ResNet-50在Batch Norm使用32、16、8、4、2张/GPU图像时的验证错误

以上是ResNet-50的验证错误图。可以推断,如果batch大小保持为32,它的最终验证误差在23左右,并且随着batch大小的减小,误差会继续减小(batch大小不能为1,因为它本身就是平均值)。损失有很大的不同(大约10%)。

如果batch大小是一个问题,为什么我们不使用更大的batch?我们不能在每种情况下都使用更大的batch。在finetune的时候,我们不能使用大的batch,以免过高的梯度对模型造成伤害。在分布式训练的时候,大的batch最终将作为一组小batch分布在各个实例中。

导致训练时间的增加

NVIDIA和卡耐基梅隆大学进行的实验结果表明,“尽管Batch Normalization不是计算密集型,而且收敛所需的总迭代次数也减少了。”但是每个迭代的时间显著增加了,而且还随着batch大小的增加而进一步增加。

ResNet-50 在ImageNet上使用 Titan X Pascal

你可以看到,batch normalization消耗了总训练时间的1/4。原因是batch normalization需要通过输入数据进行两次迭代,一次用于计算batch统计信息,另一次用于归一化输出。

训练和推理时不一样的结果

例如,在真实世界中做“物体检测”。在训练一个物体检测器时,我们通常使用大batch(YOLOv4和Faster-RCNN都是在默认batch大小= 64的情况下训练的)。但在投入生产后,这些模型的工作并不像训练时那么好。这是因为它们接受的是大batch的训练,而在实时情况下,它们的batch大小等于1,因为它必须一帧帧处理。考虑到这个限制,一些实现倾向于基于训练集上使用预先计算的平均值和方差。另一种可能是基于你的测试集分布计算平均值和方差值。

对于在线学习不好

与batch学习相比,在线学习是一种学习技术,在这种技术中,系统通过依次向其提供数据实例来逐步接受训练,可以是单独的,也可以是通过称为mini-batch的小组进行。每个学习步骤都是快速和便宜的,所以系统可以在新的数据到达时实时学习。

典型的在线学习pipeline

由于它依赖于外部数据源,数据可能单独或批量到达。由于每次迭代中batch大小的变化,对输入数据的尺度和偏移的泛化能力不好,最终影响了性能。

对于循环神经网络不好

虽然batch normalization可以显著提高卷积神经网络的训练和泛化速度,但它们很难应用于递归结构。batch normalization可以应用于RNN堆栈之间,其中归一化是“垂直”应用的,即每个RNN的输出。但是它不能“水平地”应用,例如在时间步之间,因为它会因为重复的重新缩放而产生爆炸性的梯度而伤害到训练。

[^注]: 一些研究实验表明,batch normalization使得神经网络容易出现对抗漏洞,但我们没有放入这一点,因为缺乏研究和证据。

可替换的方法

这就是使用batch normalization的一些缺点。在batch normalization无法很好工作的情况下,有几种替代方法。

  • Layer Normalization

  • Instance Normalization

  • Group Normalization (+ weight standardization)

  • Synchronous Batch Normalization

总结

所以,看起来训练深度神经网络很简单,但我不认为它很容易。从这个意义上说,我可以选择的架构很少,每个模型都有固定的学习速度,固定的优化器和固定的技巧。这些技巧是通过自然选择选择的,就像有人想出了一些技巧,人们引入之后如果有效,就会保留,如果无效,人们最终会忘记,并没有人再去使用它。除此之外,batch normalization是深度学习发展中的一个里程碑技术。然而,正如前面所讨论的,沿着batch 维度进行归一化引入了一些问题,这表明归一化技术仍有改进的空间。

—END—

英文原文:https://towardsdatascience.com/curse-of-batch-normalization-8e6dd20bc304

MegDet大batch训练实战:解决目标检测分布式收敛难题 目标检测模型在多GPU大规模训练中常面临loss震荡、BN失效、梯度爆炸等收敛性问题,其根源在于检测任务固有的样本不均衡性与多尺度特征冲突。理解Batch Normalization原理与梯度方差特性,是突破‘大batch诅咒’的关键;而Cross-GPU BN和Warmup学习率策略,则是从数值稳定性和通信效率出发的核心技术解法。这些方法不仅支撑MegDet在COCO上达成52.5% mAP的冠军表现,更广泛适用于FPN、RetinaNet等主流检测框架的工程落地。本文聚焦分布式训练稳定性与效率平衡,提供 阅读详情

相关推荐

KNN性能瓶颈与ANN加速实战:380倍向量检索效率提升

近似最近邻(ANN)是解决高维向量检索效率问题的核心技术,其原理在于通过图结构、哈希或树形索引实现亚线性时间复杂度查询,突破传统KNN暴力搜索O(N×D)的时间与内存瓶颈。相比sklearn中依赖全量计算的KNeighborsClassifier,ANN在保持99.3%召回率(Recall@K)前提下,可实现百倍级延迟下降与资源节省,显著提升推荐系统、风控引擎和多模态搜索等场景的线上服务SLA。本文聚焦工程落地,详解HNSW等主流ANN方案的选型逻辑、参数调优方法及预处理关键实践。

weixin_34152820的博客 849

BatchNormalization详解

1.batch normalization的原理 在神经网络训练过程中,由于网络参数根据梯度下降在不断的变化,每经过一个网络层数据的分布都会发生不同的改变。我们将这种由于网络参数更新造成的数据分布变化称为Internal Covariate Shift。Internal Covariate Shift会导致输入数据分布向某一个方向偏移,从而造成网络数据训练缓慢。以sigmoid激活函数构建的网络...

u010325168的博客 1万+

AI几何学:用形状、距离与意义重构机器学习认知

在人工智能实践中,'嵌入空间'和'向量距离'已成为模型效果的底层决定因素——它们共同构成了一种隐式的高维几何结构。这种结构并非数学抽象,而是数据分布、任务逻辑与人类语义在特征空间中的真实映射。理解其原理,意味着掌握如何通过UMAP可视化诊断空间畸变、设计混合距离函数对齐业务目标、施加流形正则化引导模型学习合理形状,并用ABCD/AWCD等几何指标替代单一准确率评估模型健康度。尤其当遇到检索不相关、分类边界模糊或增强失效等问题时,本质常是流形错配、距离失准或意义漂移。本文聚焦Embedding空间建模与几何约

weixin_30642561的博客 576

Batch Normaliation(批标准化,BN)的作用和缺陷精简总结

BN的作用: (1)加快训练速度,减少了对学习率的要求,可以使用很大的学习率或者较小的学习率,算法也能够快速训练。 (2)增加模型的稳定性,有效减少梯度消失/爆炸,提高训练精度。 (3)BN具有轻微的正则化效果,在某些情况下可以取消 dropout 和 L2 正则项参数,或者采取更小的 L2 正则项约束参数。 (4)减少了人为选择参数的过程(权重的初始化方式,正则化方式的超参数的选择,学习率等)。...

weixin_39853245的博客 2552

【鸿蒙南向开发】OpenHarmony——分布式数据对象之功能实践

通过本文的学习可了解到分布式数据对象的主要接口、大致调用方法和功能实现等。结合对应内容,可以进一步对分布式数据对象同步机制做深度学习。下一步,(1) 着重理解同步组网的构建原理。(2) 着重理解同步组网内,监听change和status变化的实现。●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。

HarmonyOS_666的博客 1092

CentOS 7下rsyslog日志服务器搭建全攻略:从安装到避坑

本文详细介绍了在CentOS 7系统上搭建rsyslog日志服务器的完整流程,从基础安装到高级配置,包括协议设置、日志模板设计、安全加固和性能优化。特别分享了生产环境中的实战技巧和常见问题解决方案,帮助用户高效构建可靠的日志管理系统。

happy2的博客 688

BatchNorm 也有风险

Batch Norm虽说的确很powerful,但是使用它还是有一定风险的。。。(虽然之前看到过,BatchNorm只有好处没有坏处。) 然而,在项目过程中,BatchNorm给我带来了一些不好的影响,不仅使训练速度下降了许多,而且致使最终结果无法收敛,当不使用BatchNorm技术时,速度提高了许多,且精度也上去了。 因此,在做项目过程中,不要一上来就BatchNorm,也要测试一下非BatchNorm时候的情况。 ...

m0_37604813的博客 602

保姆级教程:在紫光同创Titan2 FPGA上实现PCIe DMA,实测带宽接近理论极限

本文详细介绍了在紫光同创Titan2 FPGA上实现PCIe DMA性能调优的全过程,通过参数优化和架构设计,实测带宽达到6.91GB/s,接近理论极限。涵盖开发环境搭建、PCIe IP核定制、DMA引擎设计、驱动开发及性能调优等关键步骤,为FPGA开发者提供实用指南。

weixin_30954817的博客 336

【重点】Batch Normalization的诅咒

点击上方,选择星标或置顶,每天给你送干货!阅读大概需要9分钟跟随小博主,每天进步一丢丢作者:Sahil Uppal编译:ronghuaiyang来自:AI公园导读batch normal...

zenRRan的博客 301

Xilinx XDMA驱动代码分析及用法

Xilinx XDMA驱动代码分析及用法 先简单的介绍一下,赛灵思的XDMA的驱动是用于做什么的、他的主要功能就类似与网卡pcie接口的网卡驱动、用于控制主机与fpga设备进行pcie的通讯。通讯的主要方式是设备文件的读写,这里不清楚的同学可以看一下我上一篇文章。通过控制设备文件的读写,操作驱动与fpga设备进行数据传输。 1、目录结构 zacha@Superman:~/nfs/xdma-debug/dma_ip_drivers-master/XDMA/linux-kernel$ tree -C . ├──

恍恍惚惚的大穷猫的博客 3万+

如何使你的直流电机闭环?(PID讲解)

看了看很多大佬写的PID讲解很全面也很复杂,实在是不适合很多萌新入坑,所以想按自己的理解写一篇通俗易懂的PID算法讲解

a2001444的博客 1万+

深度学习——batch normalization

参考链接:https://mp.weixin.qq.com/s/XPsRC6rC4_I9a-WPzOTSyw Table of Contents 什么是Batch Normalization 它如何工作 优点 Batch Normalization的诅咒 在使用小batch size的时候不稳定 导致训练时间的增加 什么是Batch Normalization 在训练过程中,当我们更新之前的权值时,每个中间激活层的输出分布会在每次迭代时发生变化。这种现象称为内部协变量移位(IC..

qq_23236081的博客 996

点云PCL库学习-双目图像转化为点云PCD并显示

文章目录 双目视觉模型 代码实现 总结 参考文章 一、双目视觉模型 和RGBD相机主动发射光线实现测距不同,双目测距原理通过配置立体摄像头(通常由左眼相机和右眼相机两个水平放置的相机组成)来获取一对同一场景中的二维图像,再基于同一空间点在两个坐标系下的视差来计算深度。双目测距的示意图和数学表达式如下所示: 双目相机的成像示意图 上述示意图描述了一个空间点在左右两目相机中位置之间的成像关系,根据相似三角形原理可得: 其中,f和b分别为相机焦距和双目相机基线,d为空间点在两个坐标系下

weixin_41957687的博客 6948

Batch Normalization的一些缺陷

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达Batch Normalization确实是深度学习领域的重大突破之一,也是近年来研究人员讨论的热点之一。Batch Normalization是一种被广泛采用的技术,使训练更加快速和稳定,已成为最有影响力的方法之一。然而,尽管它具有多种功能,但仍有一些地方阻碍了该方法的发展,正如我们将在本文中讨论的那...

小白学视觉 1155

Spring Boot入门(13):Mybatis-Plus之条件构造器使用手册:精通让你快速提高查询效率的技巧!

化繁为简,MP 中条件构造器的使用,极其详细.

**My Coding Family** 3万+

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

读懂深度学习中的梯度爆炸和梯度消失

从链式法则的数学本质出发,彻底揭开神经网络训练崩溃的真相,并掌握5大核心解决方案。

酌沧 1251

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING

CONTINUOUS CONTROL WITH DEEP REINFORCEMENT LEARNING 我们将Deep Q-Learning成功的基础思想调整到连续行动领域。我们提出了一种基于确定性策略梯度(deterministic policy gradient)的actor-critic、model-free的算法,可以在连续行动空间上运行。使用相同的学习算法、网络结构和超参数,我们的算法稳健地解决了20多个模拟物理任务,包括经典问题,如车杆摆动、灵巧的操纵、腿部运动和汽车驾驶。 我们的算法能够找到一

weixin_37958272的博客 304

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

强化学习中简单网络为何比复杂网络收敛更快

在深度强化学习领域,网络架构设计直接影响模型训练效率。传统认知认为参数越多性能越好,但实践中简单网络往往展现出更快的收敛速度。这种现象源于样本效率、优化路径和探索-利用平衡三个核心机制:低维参数空间需要更少训练数据,平滑的损失函数曲面加速梯度下降,有限的表示能力反而避免过度拟合。特别是在机器人控制、金融交易等实时决策场景中,简单网络能更快锁定有效策略。通过监控策略熵、价值估计方差等关键指标,配合渐进式复杂化策略,可以构建高效强化学习系统。本文揭示的'少即是多'原理,为工业级RL应用提供了重要设计准则。

weixin_30847865的博客 325

正态分布参数估计的进化史:从高斯到现代机器学习的思考

本文追溯了正态分布参数估计从高斯时代到现代机器学习的发展历程,探讨了最小二乘法、极大似然估计(MLE)等经典方法的演进及其在深度学习中的应用。文章特别关注了正态分布参数估计在变分自编码器(VAE)等现代机器学习技术中的创新应用,揭示了这一统计方法在AI时代的持续生命力。

sss66的博客 897

深度解析 ResNet:突破梯度困境的经典网络架构

而 ResNet 通过残差连接,将输入​x直接跳过该层(或多层)传递到后续层,此时网络只需学习 “残差映射”​F(x)=H(x)−x,最终输出为:​H(x)=F(x)+x。为减少深层网络的计算量,Bottleneck Block 采用 “1×1 卷积 + 3×3 卷积 + 1×1 卷积” 的结构,通过 1×1 卷积先降维、再升维,大幅减少参数数量:​。​输入x → 1×1卷积(调整维度) → 输出x'​↓​→ BN → ReLU → 3×3卷积 → BN → ReLU → 3×3卷积 → 输出F(x)​。

ggb_aaa的博客 1235

神经网络中的“偏置”究竟是做什么的?为什么几乎所有公式里都有它?

维度偏置的作用关键影响几何平移决策边界让分类超平面/回归曲线不必过原点,适应任意分布的数据代数将线性变换拓展为仿射变换无偏网络表示的函数族是有偏网络的子集信息提升神经元信息熵激活分布更分散,承载更多决策信息优化改善损失函数地形更稳定的优化路径,更容易跳出局部极小值对称性打破神经元对称性确保不同神经元可以学习到不同的特征理论满足万能逼近定理使网络能够逼近任意连续函数偏置在机器学习公式中的普遍存在绝非偶然。它看似只是一个不起眼的常数项,实则是将模型从“线性变换”升级为“仿射变换”的关键所在。

2501_92593481的博客 549
上一篇: 生活中处处的贝叶斯
下一篇: 建议收藏 | 2020年度最佳的23个的机器学习项目(附源代码)
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值