DeepMind 提出无需批归一化的网络:NFNet

DeepMind 提出无需批归一化的网络:NFNet
2021年07月27日 13:30 AI前线

作者 | pawarvivek2705

译者 | Sambodhi

策划 | 钰莹

在本文中,我们将讨论无需批归一化的网络,即 NFNet。DeepMind 的论文介绍了无归一化网络(Normalizer-Free Net)家族,与具有归一化层的最佳网络相比,它的训练速度更快,性能更具竞争力。

为何需要无需批归一化的网络

我写了一篇完整的博文,解释了在论文中讨论的批归一化的优点和缺点。这篇博文也会展示批归一化的具体操作。

批归一化的优点

即使在训练的初期,深度神经网络也能更快地收敛。

均值偏移问题有所减少。

批归一化在训练阶段起到了正则化作用。

允许高效的大批次训练。

批归一化的缺点

批级统计的计算开销很高,可能会受到内存开销的影响,而且在某些网络上会大大增加评估梯度所需的时间。

因为依赖于批大小,所以在硬件资源非常有限的情况下,很难复制模型的性能。

训练具有归一化层的网络在分布式系统中是很不方便的。

有些任务,比如语言建模、时序任务,需要特别注意。

所以,无归一化网络应该复制批归一化的优点,同时避免其缺点。让我们看看 NFNet 是如何实现的。

NFNet 论文的贡献:

提出一种无批归一化的残差分支的训练策略。

自适应梯度裁剪(Adaptive Gradient Clipping,AGC)。AGC 允许我们能够以更大的批规模和更强的数据增强来训练无归一化网络。

设计一系列无归一化的 ResNet,即优化结构以提高准确率。

本文将对这一主题进行探讨,并查看作者在论文中提供的结果。

1. 无批归一化的残差分支的训练策略

ResNet 中的残差块

我们知道,在 ResNet 中,跳过连接和残差分支,再加上归一化层,就可以训练具有许多层的、更深的神经网络。因为批归一化可以减少残差分支上的激活规模。这样可以使信号偏向于跳过路径,从而保证网络具有较好的早期训练梯度,实现高效优化。

ResNet 深度与批归一化层测试准确率的关系

在平均批上,归一化后的残差分支降到 √d,其中 d 表示残差块的总数。因此,如果我们把批归一化替换成可学习的标量乘数 α,它可以初始化为一个足够小的值,比如

Skiplnit

SkipInit 的影响内化为 1/√d

所以,从以上我们可以证实,通过某些参数来缩小激活的比例,对于多层网络的有效训练是有帮助的。在 NFNet 中,这项工作是由参数 β 完成的。

α 和 β 参数放置在残差网络中

通过预测第 i 个残差块的输入的标准偏差,即 βi = √Vari,确定了标量 β。

标量 α 指定了每个残差块后(初始化时)激活的方差增加的速度,通常被设置为 α=0.2 的小值。这种策略可以补偿批归一化层对残差层的降采样。

但是,如前一篇博文所述,我们仍然存在均值偏移问题。

a. 修正均值偏移问题

采用缩放权重标准化(Scaled Weight Standardization)来防止隐式激活中出现均值偏移。这项技术将卷积层重新参数化为:

其中,μ和σ分别指权重的均值和标准偏差,N指构成层的扇入。

这种策略可以防止均值偏移,方法是确保权重矩阵中每行的均值为零。激活函数还可以用非线性特定的标量 γ 缩放。要计算各种非线性的 γ,请参考这篇论文(Brock 等,2021 年)。

2. 自适应梯度裁剪

传统上,梯度裁剪(Gradient Clipping),顾名思义,是通过在训练过程中进行巨大跳跃来裁剪可能导致训练不稳定的大梯度。正因为如此,与梯度下降相比,它可以在更高的学习率下训练,加快收敛。

梯度裁剪

λ 是一个应该调优的超参数。论文作者发现,虽然这种裁剪算法使他们能够以比以前更高的批大小进行训练,但训练稳定性对裁剪阈值的选择极为敏感,当模型深度、批大小或学习率发生变化时,需要进行精确调整。

相对于权重的大小,自适应梯度裁剪背后的直觉是,参数更新应该很小。梯度 G^i范数与第 i 层权重 W^i 的范数相比,提供了一种简单的衡量标准:即一个梯度下降步骤将改变多少原始权重W^i。若该比例过高,则训练将变得不稳定,因此我们应该将这些梯度剪掉。ACG 的应用如下:

默认情况下,ε 设置为 10e-3,这就防止了零初始化的参数始终将其梯度裁剪为零。

如图(a)所示,没有 ACG 的 NF-ResNet 在以较高的批处理规模训练时折叠,而与 AGC 的耦合帮助它实现了与包括 BatchNorm 在内的网络类似的性能。在图 (b) 中,NF-Net 能够训练高达 2048 的批,即使有很高的裁剪阈值。但在批大小为 4096 时,网络在 λ=0.02 时折叠了。这可能是因为这么大的批规模所产生的有效梯度,可能会抑制来自少数坏数据点的梯度。而且,这一效应在较小的批规模中可能会更明显。所以,更高的裁剪就更有效。

3. 优化结构,提高准确率

因此,在综合上述策略之后,为了提高基于 ResNet 的模型的准确率,使其超过 EfficientNet 的准确率,作者使用了带有 GELU 激活的 SE-ResNeXt-D 模型,该模型被证明是无归一化网络的强大基线。随后,他们对结构进行了如下修改:

在 3x3 多项式乘中,作者设置了组宽(每个输出单元连接的通道数)为 128,而与块宽无关。

原始 ResNet 实现在第一和第四阶段保持 3 个重复块,但在第二和第四阶段非均匀地增加重复块的出现,其中“阶段”指的是激活相同宽度和具有相同分辨率的剩余块的序列。例如,SE-ResNeXt-50 的缩放模式为 [3,4,6,3],而 SE-ResNeXt-152 的缩放模式为 [3,8,36,3]。

该论文认为这是一种次优策略。这主要是因为在较高的分辨率下,早期阶段的层操作倾向于学习局部任务的一般特征。而且后期阶段的层分辨率较低,可以学习到更多具体的任务特征。有鉴于此,作者提出了一种简单的模式。对于 F0(NFNet 的变体)[1,2,6,3],要构建更深的变体,他们只需用标量 N 乘以每个阶段的深度。举例来说,变体 F1 具有 [2,4,12,6] 的模式,而变体 F4 具有深度模式 [5,10,30,15]。

最后,ResNet 中的默认宽度模式,在第一阶段有 256 个通道,在随后的每一个阶段都会增加一倍,从而形成 [256, 512, 1024, 2048] 的模式。该论文改变了第三和第四阶段的宽度,这就得到了 [256, 512, 1536, 1536] 的模式。作者观察到,增加第三阶段的宽度有助于提高性能,因为第三阶段足够深,就会有一个大的感受野,可以进入更深层次的特征层次,而减少第四阶段的宽度可以保留训练时间。

SE-ResNeXt-50 和 NFNet-F0 之间的结构差异。来源:https://towardsdatascience.com/nfNet-explained-deepminds-new-state-of-the-art-image-classifier-10430c8599ee

总结如下:

他们引入 AGC 来实现更高的批规模的平稳训练。

利用比例权重标准化来减少均值偏移。

在降阶残差块中引入 alpha 和 beta。

改变 resnet 架构以提高性能。

虽然他们涵盖了 BatchNorm 的大部分内容,但是 BatchNorm 所提供的隐式正则化还是无法复制。

下面我们来看一下论文中分享的结果。

NFNet 的结果

NFResNet 比 BatcmNorm 的同类产品取得了更好的结果

在 NFNet 与归一化层网络上进行预训练后,ImageNet 传输的 Top-1 准确率

正如我们所讨论的,未归一化的网络不具有批归一化的隐式正则化效果,因此在像 ImageNet 这样的数据集上,除非明确正则化,否则它们往往会出现过拟合。但是,在对极大规模的数据集进行预训练时,这种正则化可能不仅仅是不必要的。作者假设,这可能会使无归一化网络在经过大规模预训练之后,自然地更适合于迁移学习。

因此,他们在一个由 3 亿张标记的图像组成的大型数据集上进行了训练。然后在 ImageNet 上对所有层进行微调。如上表所示,无归一化网络在每一种情况下都优于其批归一化的对应网络。

比 SOTA 模型有更好的准确率和延迟性

ImageNet 验证准确率与训练延迟

NFNet-F1 模型实现了与 EffNet-B7 相当的准确率,并且训练速度快了 8.7 倍。NFNet-F5 模型的训练延迟与 EffNet-B7 相似,但在 ImageNet 上实现了最先进的 86.0% 的最高准确率。

原文链接:

https://highontechs.com/deep-learning/nfnets-networks-without-batch-norm/

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部