最近机器学习模型呈现出向大模型发展的趋势,模型参数越来越多,但仍然有良好的性能泛化性能。一些研究人员认为,泛化性能得益于随机梯度下降算法(SGD)引入的随机噪声。不过最近ICLR2022投稿《Stochastic Training is Not Necessary for Generalization》通过大量实验证明,full-batch梯度下降算法(GD)可以达到媲美SGD的测试精度,随机噪声带来的隐式正则化效果可以通过显式正则化覆盖获得。论文地址:https://arxiv.org/pdf/2109.14119.pdf论文立即在社区引发了一些讨论。有人质疑论文的含金量,认为案例不具有代表性:有人说这篇论文就像一份调查报告,提出的意见和论证过程都没有什么新意:来源:知乎用户@夏日四叶草虽然内容有些争议,但从题目来看,这篇论文应该包含了很多论据。让我们来看看论文内容的具体内容。随机梯度下降(SGD)不需要随机训练来进行泛化,它是深度神经网络优化的支柱,至少可以追溯到LeCun等人1998年的工作。随机梯度下降算法成功的一个核心原因是它在大型数据集上的效率——损失函数梯度的噪声估计通常足以改进神经网络的参数,并且可以比全梯度更快地计算整个训练集。人们普遍认为,随机梯度下降(SGD)的隐式正则化是神经网络泛化性能的基础。然而,该研究表明,非随机全批训练可以在CIFAR-10上实现与SGD相当的稳健性能。基于此,该研究使用调优超参数并表明SGD的隐式正则化可以完全被显式正则化所取代。研究人员认为,这表明严重依赖随机抽样来解释泛化的理论是不完整的,因为没有随机抽样仍然可以获得良好的泛化性能。并进一步说明:深度学习可以在没有随机性的情况下取得成功。此外,研究人员表示,整批训练的感知难度主要是由于机器学习社区在调整优化器和小批量训练的超参数上花费的时间和精力不成比例。Full-batchGDSGDwithrandomdataaugmentation与GD相比有两个主要优势:首先,SGD的优化过程在稳定性和收敛速度方面表现出质的飞跃,超过了临界batchsize。其次,已经表明,在小批量上具有大步幅的SGD引起的隐式偏差可以用等式(5)和等式(7)中导出的显式正则化代替。该研究对这一假设进行了实证研究,试图建立能够在没有来自小批量的梯度噪声的情况下实现强泛化的训练,其核心目标是实现全批量性能。因此,本研究在CIFAR-10上训练了一个用于图像分类的ResNet模型进行实验。对于基线SGD,该研究使用随机梯度下降进行训练,批量大小为128,Nesterov动量为0.9,权重衰减为0.0005。小批量SGD的验证准确率达到95.70%(±0.05)。小批量SGD提供了一个强大的基线,它在很大程度上独立于小批量处理。如下表1所示,放回采样也达到了同样的95.70%的准确率。在这两种情况下,由随机小批量引起的梯度噪声都会导致很强的泛化。然后,该研究使用相同的设置进行全批梯度下降。将小批量替换为完整批量并累积所有小批量梯度。为了排除batchnormalization的影响,该研究仍然计算batchsize为128的batchnormalization,并将数据点分配给一些在整个训练过程中保持固定的block,这样batchnormalization就不会引入随机性。与其他关于大批量训练的研究一致,在这些设置下应用全批梯度下降的验证精度仅为75.42%(±00.13),SGD和GD之间的精度差距约为20%。该研究指出,通过注入简单形式的梯度噪声不容易弥合这一差距,如下表1所示。这项研究之后的实验努力缩小全批次和小批量训练之间的差距。由于fullbatchtraining的不稳定性,该研究在超过400步(每步为一个epoch)时将学习率从0.0提高到0.4以保持稳定,然后在3000的情况下通过余弦退火衰减到0.1脚步。实验表明,在对训练设置进行一些修改后,全批梯度下降性能提高到87.36%(±1.23),比基线提高了12%,但与SGD的性能相比仍有很大差距。验证分数总结在表2中:本研究通过显式正则化弥合了这一差距,再次提高了初始学习率。在第400次迭代时将学习率增加到0.8,然后在3000步中衰减到0.2。使用此学习率进行训练并在没有正则化因子的情况下进行裁剪可获得93.75%(±0.13)的准确度。当加入正则化因子时,提高学习率的方法显着提高了性能,最终与SGD性能相当。总体而言,该研究发现,在所有修改之后,全批次(具有随机数据增强)和SGD表现相当,验证准确率显着高于95%。该研究还评估了一系列具有完全相同超参数的视觉模型。ResNet-50、ResNet-152和DenseNet-121的结果如表3所示,研究发现提出的方法也适用于这些模型。非随机设置中的全批梯度下降如果全批实验捕获了小批量SGD的影响,那么随机数据增强对梯度噪声有什么影响?研究人员进行了以下实验。无数据增强:如果不使用任何数据增强方法,重复前面的实验,那么裁剪和正则化GD验证精度为89.17%,明显优于默认超参数SGD(84.32%(±1.12)),并且它与使用新调整的超参数的SGD(90.07%(±0.48))的性能相当,如下表4所示。为了分析相同设置下的GD和SGD,探索数据增强(无随机性)的影响,本研究使用固定增强的CIFAR-10数据集来代替随机数据增强,即在训练前对每个数据点采样N用于数据扩充的随机数据。这些样本在训练期间保持固定,不会重新采样,从而产生N倍放大的CIFAR-10数据集。最后,研究得出结论,在没有小批量、混洗和数据增强产生的梯度噪声的情况下,该模型可以在没有随机性的情况下达到95%以上的验证准确率。这表明通过数据增强引入的噪声可能不会影响泛化,也不是泛化所必需的。这篇论文在社区引发了讨论,有人从实验的角度分析了这篇论文的价值。该论文以使用SGD在CIFAR-10中训练300个epoch的ResNet18作为基线,并在结果部分显示了每个技巧提高了多少精度。但这些招数太常见了,以至于人们质疑它们是否真的那么有效?有网友指出,“trainlonger”这个trick应该只有在CIFAR-10上才这么有效,梯度裁剪甚至可能在其他数据集上都无效。来源:知乎用户@SummerClover看来论文中的改进可能只是一个例子,难以代表一般情况。不过,他也在评论中指出,SGD近似正则化项是一个非常有效的trick,理论基础很好,但计算成本可能会翻倍:来源:知乎用户@SummerClover和网友指出这个的实际使用该论文的研究成果非常有限,因为全批设置的成本太高,普通开发者无法承受。相比之下,SGD训练的鲁棒性强,泛化性更好,并且节省了一次迭代的计算资源。看起来该论文进行了一些理论和实验验证,但正如网友所言:是否可以在其他数据集上进行更多的实验来验证其结论?你怎么看呢?
