Kazuki Osawa 等作者

二阶优化!训练ImageNet仅需35个Epoch

在「x 分钟训练 ImageNet」问题上,人们通常采用的方法是增加批大小并加大算力。随着 ResNet-50 在 ImageNet 上的训练时间已用秒计,人们开始转向其他研究方向。来自东京工业大学的研究者近日采用二阶方法,实现了和优化 SGD 类似的准确率和效率。

随着神经网络的尺寸和训练数据的持续增长,人们对分布式计算的需求也逐渐增大。在深度学习中实现分布式并行的常用方式是使用数据并行方法,其中数据被分配进不同进程中,而模型在这些进程中重复。当每个模型的 mini-batch 大小保持不变,以增加计算/通信比时,整个系统上的 mini-batch 大小会随着进程数量成比例增长。

在 Mini-batch 大小超过某一点之后,验证准确率就会开始下降。这一大尺寸 mini-batch 泛化限制广泛见于学习不同的模型和数据集的情况中,Hoffer 等人曾将这种限制归因于更新的限制,同时建议进行更长的训练。这引出了增大学习率,并成比例增加 mini-batch 的方向,同时在训练的前几个 epoch 里逐渐增加学习率。这种方法可以让训练 mini-batch 达到 8k,在使用 ResNet-50 训练 ImageNet 时可以达到训练 90 epoch,达到 76.3% 的 top-1 验证准确率。将这种学习速率方法与其他的一些技术,如 RMSprop warm-up、无动平均的批归一化,以及缓速启动学习率策略等技术结合,Akiba 等人曾经实现在相同的数据集和模型上,batch size 32k 的情况下,在 15 分钟时间里实现 74.9% 的准确率

当然,人们在这之后还找到了更加复杂的方法,如 LARS,其中人们通过对不同层的权重和梯度的归一化实现不同的学习速率。这使得我们在 mini-batch 大小为 32k 的情况下,无需特别的修正就可以在 14 分钟的训练后(64 epoch)达到 74.9% 的准确率。另外,结合 LARS 和批归一化反直觉修正结合,我们可以在 mini-batch 大小 65k 的情况下实现 75.8% 的准确率

使用小 batch size 帮助前几个 epoch 的快速收敛,随后逐步增加批大小的方法是另外一个被证明成功的思路。使用这种自适应批大小的方法,Mikami 等人曾实现在 224 秒钟内达到 75.03% 的准确率。人们还提出了 mini-batch 的分层同步,但这些方法目前还没有经过人们的广泛验证。

在东京工业大学最近的研究中,人们通过使用二阶优化,采用数学上更加严谨的方法来处理大 mini-batch 的问题。研究人员认为在大 mini-batch 训练中,每一个 mini-batch 都会更具统计稳定性,通过二阶优化方法可能会展现优势。新方法的另一个独特性是与其他的二阶方法相比,前者可以接近 Hessian 的准确性。与 TONGA 等粗近似 Hessian 的方法、非 Hessian 方法不同,新方法采用 Kronecker 系数近似曲率(K-FAC)方法,K-FAC 的两个主要特征是它要比一阶随机梯度下降方法(SGD)要快,而且它可以容忍相对较大的 mini-batch 大小而无需任何特定修正。K-FAC 已经被成功用在了卷积神经网络ImageNet 分布式内存训练、循环神经网络、贝叶斯深度学习强化学习上。

在该论文中,研究人员的贡献包括:

使用同步 all-worker 的方式实现了分布式 K-FAC 优化器。研究人员使用半精度浮点数进行计算,并利用 Kronecker 系数的对称性减少算力消耗。

通过在 ImageNet 上训练 ResNet-50 作为基准,研究人员首次展示了二阶优化方法与高度优化的 SGD 相比可以实现类似的泛化能力。通过仅仅 35 个 epoch 的训练,研究人员即实现了 75% 的 top-1 准确率,其中 mini-batch 大小不到 16,384——而即使 mini-batch 达到了 131,072,准确度也为 75%。

表 1:对带有 K-FAC 的 ImageNet,ResNet-50 的训练 epoch(迭代)和 top-1 单季验证准确率

论文展示了在经过数百次迭代后,我们能够减少更新 K-FAC Fisher 矩阵的频率。这么做我们能够减少 K-FAC 的成本。研究人员展示了在 10 分钟内,使用 1024 块 Tesla V100 GPU,训练 ResNet-50 的 Top-1 准确率准确率达到 74.9% 的结果。

论文显示,Batch 归一化层的 Fisher 矩阵可被近似为对角矩阵,进一步减少计算和内存消耗。

表 2:在 ImageNet 上训练 ResNet-50 的不同方法性能对比。

图 1:新的分布式 K-FAC 设计概览。在三层模型上有两个训练流程(GPU)。

论文:Second-order Optimization Method for Large Mini-batch: Training ResNet-50 on ImageNet in 35 Epochs

论文链接:https://arxiv.org/abs/1811.12019

摘要:深度神经网络的大规模分布式训练会遭受由有效 mini-batch 大小增加所带来的泛化差距。先前,曾有一些方法尝试使用改变 epochs 和层上的学习率来解决这一问题,或者对一些 batch 归一化做特别的修改。我们提出一种使用二阶优化方法的替代性方法,达到了类似于一阶方法的泛化能力,但其收敛更快且能处理更大的 mini-batch。为了在基准上测试我们的方法,我们在 ImageNet 上训练了 ResNet-50。在 35 个 epoch 内,我们的方法把低于 16,384 的 mini-batch 收敛到了 75% 的 Top-1 验证准确率,而即使是 mini-batch 大小为 131,072 时,我们花费 100 个 epoch 也只能取得 75% 的准确率

理论深度神经网络优化算法SGDImageNet
6
相关数据
深度学习技术

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

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

神经网络技术

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

世代(单位)技术

神经网络训练中常见的一个单位,一般是指所有训练样本在一个神经网络中经历一次正向+一次翻新传播的训练

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

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

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

批次规模技术

一个批次中的样本数。例如,SGD 的批次规模为 1,而小批次的规模通常介于 10 到 1000 之间。批次规模在训练和推断期间通常是固定的;不过,TensorFlow 允许使用动态批次规模。

分布式计算技术技术

在计算机科学中,分布式计算,又译为分散式運算。这个研究领域,主要研究分布式系统如何进行计算。分布式系统是一组电脑,通过网络相互链接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。

批次技术

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

批归一化技术

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

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

图网技术

ImageNet 是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~