Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器之心编辑部报道

DeepMind最新研究NFNet:抛弃归一化,深度学习模型准确率却达到了前所未有的水平

深度学习,已经不需要归一化了。

我们知道,在传递给机器学习模型的数据中,我们需要对数据进行归一化(normalization)处理。

在数据归一化之后,数据被「拍扁」到统一的区间内,输出范围被缩小至 0 到 1 之间。人们通常认为经过如此的操作,最优解的寻找过程明显会变得平缓,模型更容易正确的收敛到最佳水平。

然而这样的「刻板印象」最近受到了挑战,DeepMind 的研究人员提出了一种不需要归一化的深度学习模型 NFNet,其在大型图像分类任务上却又实现了业内最佳水平(SOTA)。

该模型(红色)与其他模型在 ImageNet 分类准确度和训练时间上的对比。

该论文的第一作者,DeepMind 研究科学家 Andrew Brock 表示:「我们专注于开发可快速训练的高性能体系架构,已经展示了一种简单的技术(自适应梯度裁剪,AGC),让我们可以训练大批量和大规模数据增强后的训练,同时达到 SOTA 水平。」

该研究一经提交,便吸引了人们的目光。


  • 论文链接:https://arxiv.org/abs/2102.06171

  • DeepMind 还放出了模型的实现:https://github.com/deepmind/deepmind-research/tree/master/nfnets


NFNet 是不做归一化的 ResNet 网络。具体而言,该研究贡献有以下几点:

  • 提出了自适应梯度修剪(Adaptive Gradient Clipping,AGC)方法,基于梯度范数与参数范数的单位比例来剪切梯度,研究人员证明了 AGC 可以训练更大批次和大规模数据增强的非归一化网络。

  • 设计出了被称为 Normalizer-Free ResNets 的新网络,该方法在 ImageNet 验证集上大范围训练等待时间上都获得了最高水平。NFNet-F1 模型达到了与 EfficientNet-B7 相似的准确率,同时训练速度提高了 8.7 倍,而 NFNet 模型的最大版本则树立了全新的 SOTA 水平,无需额外数据即达到了 86.5%的 top-1 准确率

  • 如果在对 3 亿张带有标签的大型私人数据集进行预训练,随后针对 ImageNet 进行微调,NFNet 可以比批归一化的模型获得更高的 Top-1 准确率:高达 89.2%。


研究方法

在没有归一化的情况下,许多研究者试图通过恢复批归一化的好处来训练深度 ResNet 以提升其准确率。这些研究大多数通过引入小常数或可学习的标量来抑制初始化时残差分支上的激活尺度。

DeepMind 的这项研究采用并建立在「Normalizer-Free ResNet(NF-ResNet)」上,这是一类可以在没有归一化层的情况下,被训练成具有训练和测试准确率的预激活 ResNet。

NF-ResNet 使用如下形式的残差块:

其中,h_i 代表第 i 个残差块的输入,f_i 代表由第 i 个残差分支计算的函数。

用于高效大批量训练的自适应梯度裁剪

为了将 NF-ResNet 扩展到更大的批规模,研究者探索了一系列梯度裁剪策略。梯度裁剪通常被用于语言建模中以稳定训练。近来一些研究表明:与梯度下降相比,梯度裁剪允许以更高的学习率进行训练,从而加快收敛速度。这对于条件较差的 loss landscape 或大批量训练尤为重要。因为在这些情况下,最佳学习率受到最大稳定学习率的限制。因此该研究假设梯度裁剪应该有助于将 NF-ResNet 有效地扩展到大批量设置。

借助一种称为 AGC 的梯度裁剪方法,该研究探索设计了 Normalizer-Free 架构,该架构实现了 SOTA 的准确率和训练速度。

当前图像分类任务的 SOTA 大多是 EfficientNet 系列模型 (Tan & Le, 2019)取得的,该系列的模型经过优化以最大化测试准确率,同时最小化参数量和 FLOP 计数,但它们的低理论计算复杂度并没有转化为训练速度的提高。



该研究通过手动搜索设计导向来探索模型设计的空间,这些导向对比设备上的实际训练延迟,可带来 ImageNet 上 holdout top-1 的帕累托前沿面的改进。它们对 holdout 准确率的影响如下表 2 所示:


实验

表 3 展示了六个不同的 NFNets(F0-F5)与其他模型在模型大小、训练延迟和 ImageNet 验证准确率方面的对比情况。NFNets-F5 达到了 86.0%的 SOTA top-1 准确率,相比 EfficientNet-B8 有了一定提升;NFNet-F1 的测试准确率与 EfficientNet-B7 相媲美,同时训练速度提升了 8.7 倍;NFNet-F6+SAM 达到了 86.5%的 top-1 准确率


NFNets 和其他模型在 ImageNet 数据集上的准确率对比。延迟是指在 TPU 或 GPU(V100)上运行单个完整训练步骤所需要的毫秒时间。

此外,研究者使用了一个 3 亿标注图像的数据集对 NFNet 的变体进行了预训练,并针对 ImageNet 进行微调。最终,NFNet-F4 + 在 ImageNet 上获得了 89.2% 的 top-1 准确率。这是迄今为止通过额外训练数据达到的第二高的验证准确率,仅次于目前最强大的半监督学习基线 (Pham et al., 2020) 和通过迁移学习达到的最高准确率

表 5:使用额外数据进行大规模预训练后,ImageNet 模型迁移性能对比。

Andrew Brock 表示,虽然我们对于神经网络信号传递、训练规律的理解还有很多需要探索的方向,但无归一化的方法已经为人们提供了一个强有力的参考,并证明了发展这种深度理解能力可以有效地在生产环境中提升效率。

参考内容:
https://www.reddit.com/r/MachineLearning/comments/ligh5z/r_deepmind_introducing_nfnets_new_imagenet_sota/
https://twitter.com/DeepMind/status/1360217173797568514
理论归一化Deepmind
相关数据
DeepMind机构

DeepMind是一家英国的人工智能公司。公司创建于2010年,最初名称是DeepMind科技(DeepMind Technologies Limited),在2014年被谷歌收购。在2010年由杰米斯·哈萨比斯,谢恩·列格和穆斯塔法·苏莱曼成立创业公司。继AlphaGo之后,Google DeepMind首席执行官杰米斯·哈萨比斯表示将研究用人工智能与人类玩其他游戏,例如即时战略游戏《星际争霸II》(StarCraft II)。深度AI如果能直接使用在其他各种不同领域,除了未来能玩不同的游戏外,例如自动驾驶、投资顾问、音乐评论、甚至司法判决等等目前需要人脑才能处理的工作,基本上也可以直接使用相同的神经网上去学而习得与人类相同的思考力。

https://deepmind.com/
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

批次技术

模型训练的一次迭代(即一次梯度更新)中使用的样本集。

批归一化技术

批归一化(Batch Normalization,BN)由谷歌于2015年提出,是一个深度神经网络训练的技巧,它不仅可以加快模型的收敛速度,还能在一定程度上缓解深层网络中的“梯度弥散”问题,从而使得训练深层网络模型更加容易和稳定。目前BN已经成为几乎所有卷积神经网络的标配技巧了。从字面意思看来Batch Normalization(简称BN)就是对每一批数据进行归一化。

暂无评论
暂无评论~