Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ICLR20 -MABN:解决小批量训练BN不稳定的问题

ICLR20 -MABN:解决小批量训练BN不稳定的问题

作者头像
CristianoC
发布于 2020-06-02 03:28:38
发布于 2020-06-02 03:28:38
9100
举报

本次先大体翻译MABN的论文,有机会我会把YOLO中的BN换成MABN在小批次上试试效果。

目录

  • 背景
  • 介绍
  • 批归一化中的统计量
  • 滑动平均批归一化
  • 实验
  • 论文地址

背景

  • 批度归一化(Batch Normalization/BN已经成为深度学习领域最常用的技术之一,但他的表现很受批次(Batch Size)限制小批次样本的批统计量(Batch Statistics)十分不稳定,导致训练的收敛速度比较慢,推理性能不好
  • 因此,很多改良的BN方法被提出,大体可以分成这两类:
  1. 通过纠正批统计量来还原BN在样本批次量充足时的性能,但是这些办法全都无法完全恢复BN的性能
  2. 使用实例级的归一化 (instance level normalization),使模型免受批统计量的影响。这一类方法可在一定程度上恢复BN在小批次上的性能,但是目前看来,实例级的归一化方法不能完全满足工业需求,因为这类方法必须在推理过程(inference)引入额外的非线性运算,大幅增加执行开销。
  • 这里也提到一点,因为原始的BN是在全部训练之后使用整个训练数据的统计量,而不是批统计量,因此BN是一个线性算子,可以再推理中融入卷积层。
  • 由下图1可知,实例级归一化的计算时间几乎是普通BN的两倍,因此在小批次训练中恢复BN的性能而不是推理的过程中引入任何一个非线性运算是一项困难但必要的任务

简介

  • 在这篇论文中作者首次发现了在归一化的前向传播(Forward Propagation/FP)和反向传播(Backward Propagation/BP)中,不只有2个,实际上有4个批统计量参与进来。额外的与BP有关的两个批统计量的时候与模型的梯度有关,饰演了正则化模型的角色。
  • 作者做了一个实验发现(见下图2),由于批次小的缘故,在BP过程中梯度相关联的批统计量的方差甚至比大家都知道的批统计量(feature map的均值和方差)更大,所以作者认为与梯度相关联的批统计量的不稳定性是BN在小批次训练表现不好的关键原因。
  • 根据上述的分析,作者提出了一种全新的归一化的方法,叫做滑动平均批归一化(Moving Average Batch Normalization/MABN)。MABN无需在推理过程中引入任何非线性操作就可以完全解决小批次问题。MABN的核心思想是用滑动平均统计量moving average statistics/MAS)代替批统计量归一化输出的feature map
  • 本文用不同类型的滑动平均统计量分别代替参与FP和BP的批统计量,并进行理论分析以证明其合理性。但是在实践中发现,直接使用滑动平均统计量代替批统计量无法使模型训练收敛。
  • 作者将训练不收敛问题归因于训练不稳定引起的梯度爆炸。为避免训练爆炸,本文通过减少批统计量的数量,中心化卷积核的权重(weight centralization),并采用重归一化策略(Renormalization)来改进原始批归一化的形式。本文还从理论上证明了已修改的归一化形式比原始归一化形式更稳定

批归一化中的统计量

回顾普通BN

  • 首先假设BN的输入,其中代表batch size,代表feature map的数量,所以被归一化的feature map 在迭代次数上被计算为:
  • 和是样本的均值和方差,另外参数用于对Y进行缩放和偏移:

()

  • 由于这个线性变换的操作默认所有归一化都会添加,所以以下讨论将会省略。
  • 在局部梯度⎪给定的情况下,其中代表损失,代表迭代次需要学习的全部参数,那么局部梯度⎪可以计算为:
  • 其中 代表逐元素乘积,,的计算为:
  • 由等式(5)可以知道,在BP的过程中,,也属于参与BN BP的批统计量,但是以前的研究从没讨论过这两个统计量。

批统计量的不稳定性

  • 根据原始BN的论文,理想的归一化方法是使用基于整个训练数据集的期望和方差进行特征归一化操作:
  • 但是,在随机梯度下降SGD(Stochastic Gradient Descent/SGD)的情形下使用全数据集的统计量是不切实际的。因此,原始BN使用随机梯度训练中的小批次(mini-batch)计算统计量以代替全数据统计量。这种简化使得将均值和方差纳入反传图中成为可能。
  • 批统计量像是一种蒙特卡洛估计(Monte Carlo Estimatior),它的方差与样本数量成反比,因此,当批次较小时,批统计量的方差会急剧增加。图2给出了在ImageNet训练期间,ResNet-50的一个具体的归一化层的批统计量的变化。
  • 批统计量包含总体的均值和方差随着模型更新而变化的信息,以便随着权重更新正确地正则化模型梯度,从而在个体样本变化与总体变化的平衡方面发挥重要作用。因此,精确估算总体统计量(population statistics)十分关键
  • 小批次统计量的不稳定性从两个方面降低了模型的性能:
  1. 小批次统计量的不稳定性使训练不稳定,导致收敛缓慢
  2. 小批次统计量的不稳定性会在批统计量和总体统计量之间产生巨大差异
  • 由于模型训练使用批统计量,评估模型使用总体统计量,因此批统计量和总体统计量之间的差异将导致训练和推理不一致,使得模型在评估集上的表现不好。

滑动平均批归一化

  • 根据上述讨论,我们知道恢复BN性能的关键是解决小批次统计量的不稳定性。因此作者给出了两种解决方案:
  1. 使用滑动平均统计量(MAS)估计总体统计量.
  2. 通过改进归一化形式减少统计量的数量。

滑动平均统计量代替批统计量

  • 当批次较小时,MAS似乎可以替代批统计量来估计总体统计量。本文考虑两类MAS:简单移动平均统计量(Simple Moving Average Statistics/SMAS)和指数移动平均统计量(Exponetial Moving Average Statistics/EMAS)。下述定理1表明,在一般条件下,SMAS和EMAS比批统计量更稳定:
  • 定理1既证明了MAS比批统计量有更小的方差,也证明了在统计量收敛的时候(式(8))如果动量比较大,EMAS优于SMAS,方差更低。FP统计量满足收敛性,所以用SMAS代替FP统计量;BP统计量并不一定满足这一条件,所以BP统计量仅用SMAS代替。理论分析之外,实验还有力地表明MAS替代小批次统计量的有效性。此外作者也说明了本质上BN就是用EMA代替FP批统计量。

通过减少统计量的数量稳定归一化

  • 为了进一步稳定小批次的训练过程,作者考虑用而不是和归一化特征图X,归一化等式可以修改为:

,()

  • 这样修改的好处也是显然的:在FP和BP期间只剩下两个批统计量,那么相比于原来的归一化形式,改进后的归一化层的不稳定性降低,本文也用了定理2给出修改理论的证明:
  • 但是,因为消去了中心化feature的过程,模型的性能有所降低,我们可以通过增加中心化权重,逆补中心化feature map的损失。

实验

  • 作者在ImageNet、COCO数据集上都进行了测试,并且取得了不错的效果。

ImageNet

表1:ImageNet分类任务中ResNet-50 top-1错误率对比

  • 其中Regular代表batch_size=32,small表示batch_size为2。作者还做了ablation study,验证了MABN每个部分的作用:
  • 可以看到只有MABN在小批次的情况下达到跟正常批次BN的表现。

COCO

  • 本文按照Mask R-CNN的基本设定在COCO数据集上进行实验,并比较了MABN和它的baseline在不同训练情形下的表现。

论文地址

Towards Stablizing Batch Statistics in Backward Propagation of Batch Normalization

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算机视觉漫谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
即插即用 | XBN让ResNet、ShuffleNet彻底解决BN的局限和缺点
输入标准化在神经网络训练中广泛应用了几十年,在线性模型优化中显示了良好的理论特性。它使用统计数据进行标准化,而这些统计量可以直接从可用的训练数据中计算出来。
集智书童公众号
2022/04/07
1.4K0
即插即用 | XBN让ResNet、ShuffleNet彻底解决BN的局限和缺点
BN层迎来升级版MABN | 轻轻松松几行代码帮你解决跨域问题,同时顺手涨点
深度模型由于与训练和测试数据分布的匹配而实现了惊人的性能。然而,这种假设在实际世界中是脆弱的,因为收集训练数据以覆盖通用分布是不可能的。因此,在推理时遇到的未见分布会导致性能退化,这源于分布转移。
集智书童公众号
2023/12/26
5160
BN层迎来升级版MABN | 轻轻松松几行代码帮你解决跨域问题,同时顺手涨点
深度学习500问——Chapter03:深度学习基础(3)
假如每次只训练一个样本,即Batch Size=1。线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆。对于多层神经元、非线性网络,在局部依然近似是抛物面。此时,每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。
JOYCE_Leo16
2024/03/19
920
深度学习500问——Chapter03:深度学习基础(3)
可能提高GAN性能的方法介绍
生成器试图找到最好的图像来欺骗鉴别器。当两个网络互相对抗时,“最佳”图像不断变化。但是,优化可能会变得过于贪心,使其陷入永无止境的猫捉老鼠游戏中。这是模型不收敛和模式崩溃的原因之一。
AiTechYun
2018/07/27
1.6K0
可能提高GAN性能的方法介绍
GoogLeNetv2 论文研读笔记
当前神经网络层之前的神经网络层的参数变化,引起神经网络每一层输入数据的分布产生了变化,这使得训练一个深度神经网络变得复杂。这样就要求使用更小的学习率,参数初始化也需要更为谨慎的设置。并且由于非线性饱和(注:如sigmoid激活函数的非线性饱和问题),训练一个深度神经网络会非常困难。我们称这个现象为:internal covariate shift。同时利用归一化层输入解决这个问题。我们将归一化层输入作为神经网络的结构,并且对每一个小批量训练数据执行这一操作。Batch Normalization(BN) 能使用更高的学习率,并且不需要过多地注重参数初始化问题。BN 的过程与正则化相似,在某些情况下可以去除Dropout
范中豪
2019/09/10
7570
GoogLeNetv2 论文研读笔记
神经网络中的归一化
神经网络的学习其实在学习数据的分布,随着网络的深度增加、网络复杂度增加,一般流经网络的数据都是一个 mini batch,每个 mini batch 之间的数据分布变化非常剧烈,这就使得网络参数频繁的进行大的调整以适应流经网络的不同分布的数据,给模型训练带来非常大的不稳定性,使得模型难以收敛。
@小森
2024/05/07
1720
神经网络中的归一化
归一化激活层的进化:谷歌Quoc Le等人利用AutoML 技术发现新型ML模块
批归一化和激活函数是深度神经网络的重要组成部分,二者的位置常常重合。以往的神经网络设计中通常对二者分别进行设计,而最近谷歌大脑和 DeepMind 研究人员合作提出了一种新方案:将二者统一为一个计算图,从低级原语开始进行结构进化。研究者利用层搜索算法发现了一组全新的归一化-激活层 EvoNorms。这些层中的一部分独立于批统计量(batch statistics)。
机器之心
2020/04/14
6780
归一化激活层的进化:谷歌Quoc Le等人利用AutoML 技术发现新型ML模块
BN层和Dropout层「建议收藏」
z ^ l = γ ∗ z l − μ δ 2 + σ + β \hat{z}^{l} = \gamma * \frac{z^l-\mu}{\sqrt{\delta^2+\sigma}} + \beta z^l=γ∗δ2+σ ​zl−μ​+β
全栈程序员站长
2022/11/09
8490
NIPS 2018 | MIT新研究参透批归一化原理
在过去十年间,深度学习在计算机视觉、语音识别、机器翻译以及游戏等诸多困难任务中取得了令人瞩目的进展。这些进展依赖于硬件、数据集以及算法和架构技术等方面的重大突破。这些突破中最突出的例子是批归一化(BatchNorm)[10]。
机器之心
2018/12/13
4690
BN和Dropout在训练和测试时有哪些差别?
本文首先介绍了Batch Normalization和Dropout在训练和测试时的不同点,后通过相关论文的参考讲述了BN和Dropout共同使用时会出现的问题,并给出了两种解决方案,通过阅读本文能够对这两种技术的特性更加清晰。
公众号机器学习与AI生成创作
2021/01/08
3.1K0
BN和Dropout在训练和测试时有哪些差别?
来聊聊批归一化BN(Batch Normalization)层
Batch Normalization (BN) 是最早出现的,也通常是效果最好的归一化方式。feature map:
AI算法修炼营
2020/05/08
3.3K0
深度学习中的规范化
这篇文章介绍深度学习四种主流的规范化, 分别是Batch Normalization(BN[9]), Layer Normalization(LN[7]), Instance Normalization(IN[8])以及Group Normalization(GN[2])。
努力努力再努力F
2019/04/18
8920
深度学习中的规范化
学界 | 如何通过方差偏移理解批归一化与Dropout之间的冲突
选自arXiv 作者:Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang 机器之心编译 参与:朱乾树、蒋思源 自批量归一化提出以来,Dropout 似乎就失去了用武之处,流行的深度架构也心照不宣地在批归一化上不采用 Dropout。而近日南京理工大学和清华大学的研究表明 Dropout 在网络测试的时候神经元会产生方差偏移,因而进一步分析与理解如何能避免方差偏移风险,并克服二者组合的局限性。 在批归一化提出之前,Dropout 几乎是所有的最优网络的标配,尽管很简单,但它成
机器之心
2018/05/10
1.2K0
NFNETS论文解读:不使用BN的高性能大规模图像识别
因此,本文的重点是在不是使用BN来构建图像识别的卷积残差神经网络。但是如果没有BN,这些网络通常无法很好地运行或无法扩展到更大的批处理大小,但是本篇论文构建的网络可以使用大的批次进行伦联,并且比以前的最新方法(例如LambdaNets)更有效 。训练时间与准确率如下图表显示,对于在ImageNet上进行的相同的top-1准确性评分,NFnet比EffNet-B7快8.7倍。此模型是没有任何其他培训数据的最新技术,也是新的最新迁移学习。NFnets目前在全球排行榜上排名第二,仅次于使用半监督预训练和额外数据的方法。
deephub
2021/03/10
6300
NFNETS论文解读:不使用BN的高性能大规模图像识别
最全Normalization!建议收藏,面试必问!
进行归一化,从而保证数据分布的一致性,而判别模型的结果正是取决于数据整体分布。但是
灿视学长
2021/05/28
8500
为什么小批量会可以使模型获得更大的泛化
来源:Deephub Imba本文约2000字,建议阅读5分钟本文为你介绍了如批量大小在机器学习中的重要性。 批大小是机器学习中重要的超参数之一。这个超参数定义了在更新内部模型参数之前要处理的样本数量。 上图为使用 SGD 测试不同批量大小的示例。 批量大小可以决定许多基于深度学习的神经网络的性能。有很多研究都在为学习过程评估最佳批量大小。例如,对于 SGD可以使用批量梯度下降(使用批量中的所有训练样本)或小批量(使用一部分训练数据),甚至在每个样本后更新(随机梯度下降)。这些不同的处理方式可以改变模型训
数据派THU
2022/03/04
3080
20道深度学习面试题,有你不知道的吗?
首先权值共享就是滤波器共享,滤波器的参数是固定的,即是用相同的滤波器去扫一遍图像,提取一次特征特征,得到feature map。在卷积网络中,学好了一个滤波器,就相当于掌握了一种特征,这个滤波器在图像中滑动,进行特征提取,然后所有进行这样操作的区域都会被采集到这种特征,就好比上面的水平线。
小草AI
2019/06/02
2.6K0
深度学习中的归一化技术全面总结
训练深度神经网络是一项具有挑战性的任务。多年来,研究人员提出了不同的方法来加速和稳定学习过程。归一化是一种被证明在这方面非常有效的技术。
deephub
2022/06/04
1.1K0
深度学习中的归一化技术全面总结
学界 | 超越何恺明等组归一化 Group Normalization,港中文团队提出自适配归一化取得突破
AI 科技评论:港中文最新论文研究表明目前的深度神经网络即使在人工标注的标准数据库中训练(例如 ImageNet),性能也会出现剧烈波动。这种情况在使用少批量数据更新神经网络的参数时更为严重。研究发现这是由于 BN(Batch Normalization)导致的。BN 是 Google 在 2015 年提出的归一化方法。至今已有 5000+次引用,在学术界和工业界均被广泛使用。港中文团队提出的 SN(Switchable Normalization)解决了 BN 的不足。SN 在 ImageNet 大规模图像识别数据集和 Microsoft COCO 大规模物体检测数据集的准确率,还超过了最近由 Facebook 何恺明等人提出的组归一化 GN(Group Normalization)。原论文请参考 arXiv:1806.10779 和代码 https://github.com/switchablenorms
AI科技评论
2018/07/27
6450
学界 | 超越何恺明等组归一化 Group Normalization,港中文团队提出自适配归一化取得突破
常用的 Normalization 方法:BN、LN、IN、GN
常用的Normalization方法主要有:Batch Normalization(BN,2015年)、Layer Normalization(LN,2016年)、Instance Normalization(IN,2017年)、Group Normalization(GN,2018年)。它们都是从激活函数的输入来考虑、做文章的,以不同的方式对激活函数的输入进行 Norm 的。
AI算法与图像处理
2019/09/09
2.2K0
常用的 Normalization 方法:BN、LN、IN、GN
推荐阅读
相关推荐
即插即用 | XBN让ResNet、ShuffleNet彻底解决BN的局限和缺点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档