本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。想优化自己的神经网络,却不知道哪种优化器更适合你?或者,想知道深度学习中梯度下降的算法有哪些?现在是最全面的优化算法分析。它整理了自1964年以来几乎所有的优化方法(约130种)并进行了分类。此外,它还提供了几种基准测试方法,并使用它们分析了1344种可能的配置场景。在运行35,000次测试后,它非常全面地介绍了优化器算法的分析,并告诉您如何使用这些基准测试为您的深度学习模型选择最佳优化方案。具体的优化方法是什么?从下图中密密麻麻的图表来看,到目前为止,大约有130种优化算法被提出。目前看不出区别,但是在测试结果中,可以发现这些优化器可以明确分为两类,一类适合VAE(变分自动编码器),一类不适合VAE.从这些优化器中常用的参数来看,α0表示初始学习率,αlo和αup表示上下界,Δt表示切换衰减方式的周期,k表示衰减因子。可以看出,这些学习率的参数主要可以分为常量、梯度下降、平滑下降、周期性、预热和超收敛。那么,130多个优化器,哪一个最适用呢?调整这些参数对优化器有多大影响?用benchmarking方法测试一下就知道了。下图显示了8种基准测试方法。作者提出了8个优化任务,并对这些任务进行了测试,得到了比较结果。从图中可以看出,无论是数据集(MNIST、CIFAR-10等)、模型(VAE、CNN、RNN等),还是任务(分类、NLP等)和标准(丢失率、准确率)不同。另外还要考虑batchsize(看来实验机的性能还是不错的)。进行这些测试的目的是从多个角度考虑这些优化方法的合理性。测试遵循下图中的流程。总体而言,有1,344种配置,总共运行了近35,000次。为了知道哪种优化方法更合适,这样做也很费劲。如何选择适合自己的优化方式?那么,如何选择合适的优化方法呢?下图是笔者随机选取的14个优化器。下图显示了这些优化器在上述8个基准测试下的性能结果。其中,红色的I代表误??差范围。可以看出,在一定的误差范围内,某一类优化方法的性能几乎非常相似:它们在各种基准测试中都表现良好。为了验证这些测试方法的稳定性,作者特意调整了部分算法的参数。下图是经典算法RMSProp和RMSProp(2)的调优结果。可以看出,不同的参数会给优化算法的性能带来相当大的波动。更直接地说,如果你增加(性能)预算,如下图所示,性能提升也会增加。(图中橙色为所有灰线的中值)也就是说,即使优化算法的性能再好,合理的调优也是必不可少的。那么,有多少优化者存在“提高参数可以大大提高优化能力”的问题呢?不是很多。从下图中看,绿色表示经过优化后,优化算法可以运行得更好。也就是说,只要一个优化算法的结果是绿色的,它原来的默认参数就真的很糟糕……比如AMSGrad、Mom、NAG的默认参数就有很大的提升空间。相比之下,AMSBound是自适应的,默认参数还是很不错的,不需要大的改进。在对这些优化器进行评估后,研究人员得出以下结论:1.优化器在不同任务中的性能差异很大;2.事实上,大多数优化器的性能惊人地相似。目前还没有“最通用”的优化方法;3.微调优化器(参数)其实和选择优化器一样重要,甚至更重要。不过,虽然这个表格很详细,但还是有细心的网友发现了一个盲点:像SWA这样非常简单高效的方法在分析时还是漏掉了。当然,提供的几个基准已经适用于分析大多数优化器选择。目前,作者已经在ArXiv论文页面开源了基准测试方法的代码。有兴趣的小伙伴可以查看论文地址~作者介绍,这些作者均来自德国图宾根大学。RobinM.Schmidt,计算机科学专业研究生,主要研究方向为人工智能,对深度学习、强化学习和优化感兴趣。PhilippHennig,机器学习教授,马克斯普朗克研究所科学家,曾在海德堡大学和帝国理工学院攻读物理学,并获得剑桥大学机器学习博士学位。FrankSchneider,机器学习博士生,研究机器学习的优化方法。目前致力于深度学习超参数以自动化深度神经网络的训练。论文地址:https://arxiv.org/abs/2007.01547
