论文认为Batch Normalization并不是网络的必要构造,反而会带来不少问题,于是开始研究Normalizer-Free网络,希望既有相当的性能也能支持大规模训练。论文提出ACG梯度裁剪方法来辅助训练,能有效防止梯度爆炸,另外还基于NF-ResNet的思想将SE-ResNet改造成NFNet系列,可以使用4096的超大batch size进行训练,性能超越了Efficient系列

来源:晓飞的算法工程笔记 公众号

论文: High-Performance Large-Scale Image Recognition Without Normalization

Introduction


  目前,计算机视觉的大部分模型都得益于深度残差网络和batch normalization,这两大创新能够帮助训练更深的网络,在训练集和测试集上达到很高的准确率。特别是batch normalization,不仅能够平滑损失曲线,使用更大的学习率和batch size进行训练,还有正则化的作用。然而,batch normalization并不是完美,batch normalization在实践中有三个缺点:

  • 计算消耗大,内存消耗多。
  • 在训练和推理上的用法不一致,并且带来额外的超参数。
  • 打破了训练集的minibatch的独立性。

  其中,第三个问题最为严重,这会引发一系列的负面问题。首先,batch normalization使得模型难以在不同的设备上复现精度,而且分布式训练经常出问题。其次,batch normalization不能用于要求每轮训练样本独立的任务中,如GAN和NLP任务。最后,batch normalization对batch size十分敏感,在batch size较低时表现较差,限制了有限设备上的模型大小。

  因此,尽管batch normalization有很强大的作用,部分研究者仍在寻找一种简单的替代方案,不仅需要精度相当,还要能用在广泛的任务中。目前,大多数的替代方案都着力于抑制残差分支的权值大小,比如在残差分支的末尾引入一个初始为零的可学习的标量。但这些方法不是精度不够,就是无法用于大规模训练,精度始终不如EfficientNets。

  至此,论文主要基于之前替代batch normalization的工作,尝试解决其中的核心问题,论文的主要贡献如下:

  • 提出Adaptive Gradient Clipping(AGC),以维度为单位,基于权值范数和梯度范数的比例进行梯度裁剪。将AGC用于训练Normalizer-Free网络,使用更大batch size和更强数据增强进行训练。
  • 设计Normalizer-Free ResNets系列,命名为NFNets,在ImageNet上达到SOTA,其中NFNet-F1与EfficientNet-B7精度相当,训练速度快8.7倍,最大的NFNet可达到86.5%top-1准确率。
  • 实验证明,在3亿标签的私有数据集上预训练后,再在ImageNet上进行finetune,准确率能比batch normalization网络要高,最好的模型达到89.2%top-1准确率。

Understanding Batch Normalization


  论文探讨了batch normalization的几个优点,这里简单说一下:

  • downscale the residual branch:batch normalization限制了残差分支的权值大小,使得信号偏向skip path直接传输,有助于训练超深的网络。
  • eliminate mean-shift:激活函数是非对称且均值非零的,使得训练初期激活后的特征值会变大且均为正数,batch normalization恰好可以消除这一问题。
  • regularizing effect:由于batch normalization训练时用的是minibatch统计信息,相当于为当前batch引入了噪声,起到正则化的作用,可以防止过拟合,提高准确率。
  • allows efficient large-batch training:batch normalization能够平滑loss曲线,可以使用更大的学习率和bach size进行训练。

Towards Removing Batch Normalization


  这篇论文的研究基于作者之前的Normalizer-Free ResNets(NF-ResNets)进行拓展,NF-ResNets在去掉normalization层后依然可以有相当不错的训练和测试准确率。NF-ResNets的核心是采用\(h_{i+1}=h_i+\alpha f_i(h_i/\beta_i)\)形式的residual block,\(h_i\)为第\(i\)个残差块的输入,\(f_i\)为第\(i\)个residual block的残差分支。\(f_i\)要进行特殊初始化,使其有保持方差不变的功能,即\(Var(f_i(z))=Var(z)\)。\(\alpha=0.2\)用于控制方差变化幅度,\(\beta_i=\sqrt{Var(h_i)}\)为\(h_i\)的标准差。经过NF-ResNet的residual block处理后,输出的方差变为\(Var(h_{i+1})=Var(h_i)+\alpha^2\)。

  此外,NF-ResNet的另一个核心是Scaled Weight Standardization,用于解决激活层带来的mean-shift现象,对卷积层进行如下权值重新初始化:

  其中,\(\mu_i=(1/B)\sum_jW_{ij}\)和\(\sigma^2_i=(1/N)\sum_j(W_{ij}-\mu_i)^2\)为对应卷积核的某行(fan-in)的均值和方差。另外,非线性激活函数的输出需要乘以一个特定的标量\(\gamma\),两者配合确保方差不变。

  之前发布的文章也有NF-ResNet的详细解读,有兴趣的可以去看看。

Adaptive Gradient Clipping for Efficient Large-Batch Training


  梯度裁剪能够帮助训练使用更大的学习率,还能够加速收敛,特别是在损失曲线不理想或使用大batch size训练的场景下。因此,论文认为梯度裁剪能帮助NF-ResNet适应大batch size训练场景。对于梯度向量\(G=\partial L/\partial\theta\),标准的梯度裁剪为:

  裁剪阈值\(\lambda\)是需要调试的超参数。根据经验,虽然梯度裁剪可以帮助训练使用更大的batch size,但模型的效果对阈值\(\lambda\)的设定十分敏感,需要根据不同的模型深度、batch size和学习率进行细致的调试。于是,论文提出了更方便的Adaptive Gradient Clipping(AGC)。

  定义\(W^l\in\mathbb{R}^{N\times M}\)和\(G^l\in\mathbb{R}^{N\times M}\)为\(l\)层的权值矩阵和梯度矩阵,\(\|\cdot\|_F\)为F-范数,ACG算法通过梯度范数与权值范数之间比值\(\frac{\|G^l\|_F}{\|W^l\|_F}\)来进行动态的梯度裁剪。在实践时,论文发现按卷积核逐行(unit-wise)进行梯度裁剪的效果比整个卷积核进行梯度裁剪要好,最终ACG算法为:

  裁剪阈值\(\lambda\)为超参数,设定\(\|W_i\|^{*}_F=max(\|W_i\|_F, \epsilon=10^{-3})\),避免零初始化时,参数总是将梯度裁为零。借助AGC算法,NF-ResNets可以使用更大的batch size(4096)进行训练,也可以使用更复杂的数据增强。最优的\(\lambda\)需考虑优化器、学习率和batch size,通过实践发现,越大的batch size应该使用越小的\(\lambda\),比如batch size=4096使用\(\lambda=0.01\)。

  ACG算法跟优化器归一化有点类似,比如LARS。LARS将权值更新值的范数固定为权值范数的比值\(\Delta w=\gamma * \eta * \frac{\|w^l\|}{\|\nabla L(w^l)\|} * \nabla L(w^l_t)\),从而忽略梯度的量级,只保留梯度方向,能够缓解梯度爆炸和梯度消失的现象。ACG算法可以认为是优化器归一化的松弛版本,基于权值范数约束最大梯度,但不会约束梯度的下限或忽略梯度量级。论文也尝试了ACG和LARS一起使用,发现性能反而下降了。

Normalizer-Free Architectures with Improved Accuracy and Training Speed

  论文以带GELU激活的SE-ResNeXt-D模型作为Normalizer-Free网络的基础,除训练加入ACG外,主要进行了以下改进:

  • 将\(3\times 3\)卷积变为分组卷积,每组的维度固定为128,组数由卷积的输入维度决定。更小的分组维度可以降低理论的计算量,但计算密度的降低导致不能很好地利用设备稠密计算的优势,实际不会带来更多加速。
  • ResNet的深度扩展(从resnNet50扩展至ResNet200)主要集中在stage2和stage3,而stage1和stage4保持3个block的形式。这样的做法不是最优的,因为不管低层特征或高层特征,都需要足够的空间去学习。因此,论文先制定最小的F0网络的各stage的block数为\([1,2,6,3]\),后续更大网络都在此基础上以倍数扩展。
  • ResNet的各stage维度为\([256,512,1024,2048]\),经过测试之后,改为\([256,512,1536,1536]\),stage3采用更大的容量,因为其足够深,需要更大的容量去收集特征,而stage4不增加深度主要是为了保持训练速度。

  • 将NF-ResNet的bottleneck residual block应用到SE-ResNeXt中并进行修改,在原有的基础上添加了一个\(3\times 3\)卷积,在计算量上仅有少量的增加。

  • 构建一个缩放策略来生产不同计算资源的模型,论文发现宽度扩展对网络增益不大,于是仅考虑深度和输入分辨率的缩放。按前面说的,以倍数形式对基础网络进行深度扩展,同时缩放分辨率,使其训练和测试速度能达到上一个量级的一半。

  • 当网络体积增大时,加强正则化强度。通过实验发现,调整weight decay和stochastic depth rate(训练过程随机使某些block的残差分支失效)都没有很大的收益,于是通过加大dropout的drop rate来达到正则化的目的。由于网络缺少BN的显示正则化,所以这一步是十分重要的,防止过拟合的出现。

  根据上述的修改,得出的NFNet系列的各参数如表1所示。这里网络的最后有全局池化层,所以训练和测试的分辨率可以不一样。

Experiment


  对比AGC在不同batch size下的效果,以及\(\lambda\)与batch size的关系。

  在ImageNet对比不同大小的网络的性能。

  基于ImageNet的10 epoch预训练权重,进行NF-ResNet改造并Fine-tuning,性能如表4所示。

Conclusion


  论文认为Batch Normalization并不是网络的必要构造,反而会带来不少问题,于是开始研究Normalizer-Free网络,希望既有相当的性能也能支持大规模训练。论文提出ACG梯度裁剪方法来辅助训练,能有效防止梯度爆炸,另外还基于NF-ResNet的思想将SE-ResNet改造成NFNet系列,可以使用4096的超大batch size进行训练,性能超越了Efficient系列。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

NFNet:NF-ResNet的延伸,不用BN的4096超大batch size训练 | 21年论文的更多相关文章

  1. 学习笔记TF033:实现ResNet

    ResNet(Residual Neural Network),微软研究院 Kaiming He等4名华人提出.通过Residual Unit训练152层深神经网络,ILSVRC 2015比赛冠军,3 ...

  2. 全面解读Group Normalization,对比BN,LN,IN

    前言 Face book AI research(FAIR)吴育昕-何恺明联合推出重磅新作Group Normalization(GN),提出使用Group Normalization 替代深度学习里 ...

  3. 归一化方法总结 | 又名“BN和它的后浪们“

    前言: 归一化相关技术已经经过了几年的发展,目前针对不同的应用场合有相应的方法,在本文将这些方法做了一个总结,介绍了它们的思路,方法,应用场景.主要涉及到:LRN,BN,LN, IN, GN, FRN ...

  4. 深度学习中的Normalization模型

    Batch Normalization(简称 BN)自从提出之后,因为效果特别好,很快被作为深度学习的标准工具应用在了各种场合.BN 大法虽然好,但是也存在一些局限和问题,诸如当 BatchSize ...

  5. [优化]深度学习中的 Normalization 模型

    来源:https://www.chainnews.com/articles/504060702149.htm 机器之心专栏 作者:张俊林 Batch Normalization (简称 BN)自从提出 ...

  6. 论文学习-系统评估卷积神经网络各项超参数设计的影响-Systematic evaluation of CNN advances on the ImageNet

    博客:blog.shinelee.me | 博客园 | CSDN 写在前面 论文状态:Published in CVIU Volume 161 Issue C, August 2017 论文地址:ht ...

  7. 『计算机视觉』Mask-RCNN_推断网络其二:基于ReNet101的FPN共享网络暨TensorFlow和Keras交互简介

    零.参考资料 有关FPN的介绍见『计算机视觉』FPN特征金字塔网络. 网络构架部分代码见Mask_RCNN/mrcnn/model.py中class MaskRCNN的build方法的"in ...

  8. Bag of Tricks for Image Classification with Convolutional Neural Networks

    url: https://arxiv.org/abs/1812.01187 year: 2018 文中介绍了训练网络的一些 tricks, 通过组合训练过程的trick,来提高模型性能和泛化能力,以及 ...

  9. [Tensorflow] 使用 Mask_RCNN 完成目标检测与实例分割,同时输出每个区域的 Feature Map

    Mask_RCNN-2.0 网页链接:https://github.com/matterport/Mask_RCNN/releases/tag/v2.0 Mask_RCNN-master(matter ...

  10. keras用法

    关于Keras的“层”(Layer) 所有的Keras层对象都有如下方法: layer.get_weights():返回层的权重(numpy array) layer.set_weights(weig ...

随机推荐

  1. python中矩阵合并、拼接、组合

    1 numpy数组 1.1 append() import numpy as np a=np.array([[1,3],[5,7]]) b=np.array([[2,4],[6,8]]) c=np.a ...

  2. 初探富文本之文档diff算法

    初探富文本之文档diff算法 当我们实现在线文档的系统时,通常需要考虑到文档的版本控制与审核能力,并且这是这是整个文档管理流程中的重要环节,那么在这个环节中通常就需要文档的diff能力,这样我们就可以 ...

  3. 用ELK分析每天4亿多条腾讯云MySQL审计日志(4)--MySQL全文索引

    前言:        该文章将会介绍以下: 1,MySQL全文索引的使用 2,全文索引停止词STOPWORD 3,使用全文索引的高效和准确 最近事情比较少,刚好可以梳理一下以前的工作,做一下总结! 在 ...

  4. PL/SQL相关的数据字典

    PL/SQL相关的数据字典 http://www.oracle.com/technetwork/issue-archive/2012/12-nov/o62plsql-1851968.html 有时候, ...

  5. dp题单——区间dp

    一.基本概念 1.链式区间dp for(int len = 2; len <= n; len++){ //枚举区间长度 for(int i = 1; i + len - 1 <= n; i ...

  6. RK3588开发笔记(一):基于方案商提供的宿主机交叉编译Qt5.12.10

    前言   rk3588开发车机,方案上提供的宿主机只是编译rk sdk的版本,并未编译好Qt,那么需要自行交叉编译Qt系统.选择的Qt的版本为5.12.10.   宿主机准备   下载并打开宿主机,只 ...

  7. 在本地运行 LLMs 的 6 种方法

    商业人工智能和大型语言模型 (LLM) 有一个很大的缺点:隐私.在处理敏感数据或专有数据时,我们无法从这些工具中获益.因此,我们需要了解如何在本地运行私人 LLM.开源模型提供了一种解决方案,但它们也 ...

  8. 【Azure Redis 缓存】使用Azure Redis服务时候,如突然遇见异常,遇见命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?

    问题描述 使用Azure Redis服务时,如突然遇见异常,命令Timeout performing SET xxxxxx等情况,如何第一时间查看是否有Failover存在呢?看是否有进行平台的维护呢 ...

  9. 用 nebula_dart_gdbc 在移动设备玩图数据库,泰酷辣!

    nebula_dart_gdbc,是访问 NebulaGraph 的 Dart 语言客户端,在 dart_gdbc 的规范下进行开发. dart_gdbc 是一套使用 Dart 语言定义的图数据库标准 ...

  10. 【aspose-words】Aspose.Words for Java模板语法详细剖析

    前言 缘由 aspose-words模板语法再了解 垂死病中惊坐起,小丑竟是我自己.对于aspose-words的使用本狗自以为已炉火纯青,遂在新的迭代任务中毛遂自荐,并在小姐姐面前吹了一个大牛,分分 ...