自适应学习率调度器了解一下?

转自 机器之心

传统观点认为,太大的学习率不利于优化深度神经网络,而相比固定的学习率而言,变化的学习率更能提供快速的收敛。基于此,本文作者基于理论基础提出了一个计算深度神经网络学习率的新方法。实验结果证明了该方法的有效性。

训练神经网络受到几个问题的困扰。这些问题包括梯度消失、梯度爆炸 [7,3] 和过拟合。包括不同激活函数[14,17]、批归一化 [12]、新颖的初始化方案 [9] 以及 Dropout[26] 在内的多种进展都为这些问题提供了解决方案。

但是,一个更基本的问题是为不同的超参数寻找最优值,而对这个问题而言学习率可以说是最重要的。众所周知,学习率太小会导致收敛变慢,但是太大的学习率又会导致发散 [2]。近期的研究一致认为,与固定的学习率相比,变化的学习率调度系统能够提供更快的收敛 [20,23]。而觉得不应使用较大学习率的传统经验也被认为有问题,可能导致「超收敛」和规则效应(regularizing effect)[25]。本文的实验结果和这个说法是一致的;但是作者没有使用循环的学习率,而是提出了一种基于理论基础来计算自适应学习率的新方法。

据作者所知,这是首次提出具有理论基础的自适应学习率调度器并且在标准数据集和网络架构上进行实证研究。所以,本文的贡献是双重的。首先,作者基于损失函数的利普希茨常数(Lipschitz),提出了一个用于在深度神经网络的随机梯度下降中计算最优学习率的新理论框架。其工作表明,在激活函数的特定选择方面,仅最后两层的激活函数是计算学习率时所需要的。其次,作者为几个常用的损失函数计算了理想的学习率,并用这些公式实验性地证明了其方法的有效性。

本文方法利用了损失函数的函数属性,仅对损失函数做了两个最小限度的假设:它必须是利普希茨连续的 [19], 且至少是一阶可微的。常用的损失函数都满足这两个条件。

论文:A novel adaptive learning rate scheduler for deep neural networks

论文地址:https://arxiv.org/abs/1902.07399

摘要:优化深度神经网络在很大程度上被认为是一个经验过程,它需要手动调节几个参数,例如学习率、权重衰减以及随机失活率(dropout rate)。可以说,学习率是这些需要调节的参数中最重要的一个,它在最近的工作中也得到了更多的关注。在本文中,我们提出了一个计算深度神经网络学习率的新方法。我们推导了动态计算学习率的理论框架,然后展示了在标准数据集和模型架构上的实验结果来证明该方法的有效性。

理论框架

对一个使用 Sigmoid、ReLU 或者 softmax 激活函数的神经网络来说,很容易表现出这样的现象:反向传播时朝着浅层的方向梯度会越来越小。因此,最后一层的梯度是反向传播过程中计算出的梯度中最大的一个。如果 是第 l 层节点 i 到节点 j 的权重,并且 L 是总的层数,那么:

本质上,公式 (1) 表示误差对最后一层权重的最大梯度比误差对网络中任何权重的梯度都要大。显然这也可以扩展到偏置(bias)。换句话说,找到最后一层的最大梯度就确定了误差的利普希茨常数的上确界,这里的梯度都是根据每一层的权重参数来取的。

我们现在分析得出了不同类型问题的理论上确界。这些数值的倒数可以用作梯度下降的学习率。在任何一层中,我们都会有这种计算:

因此,最后一层中任何权重的梯度都是通过下面的链式法则来计算的:

第三部分是不能解析计算的;我们将它记作 K_z。现在看一下不同类型的问题,并计算这些组成部分。

实验

下面我们展示了在一些公开数据集上的实验结果和细节。虽然我们的结果不是最先进的,但我们的重点是凭经验证明随机梯度下降是可以通过更大的学习率来进行的,而不是像通常理解的那样只能用小一些的学习率。我们所有的实验都是在特斯拉 P100 GPU 上运行的,如果没有特殊说明,模型也是使用(没有动量或者权重衰减的)随机梯度下降优化器进行优化的。在 CIFAR 数据集上,我们和 [10] 一样仅使用了翻转和平移增强方案。在所有实验中,原始图像的像素数值都除以 255。

在 MNIST 上的实验只使用了一个自适应学习率,而因为利普希茨常数,学习率在每个 epoch 中都会被重新计算。

图 1 展示了训练集和验证集上准确率和损失函数随着 epoch 的变化而变化。图 2 展示了在各个 epoch 计算的学习率。请注意,与 CIFAR-10(图 5)和 CIFAR-100(图 6)中计算的自适应学习率不同,MNIST 的学习率从高得多的值开始。

图 5 展示了不同时间的学习率随。正如相关文献所表明的,自适应方案会自动选择一个衰减的学习率。

图 5:CIFAR-10 上自适应学习率随着时间的变化而变化

图 6 展示了在各个 epoch 的学习率。与 CIFAR-10 一样,前两个 epoch 会以很小的学习率开始(10^(-8)),但是模型会快速适应不断变化的权重。

图 6: CIFAR-100 上随着时间变化的自适应学习率。