建神经网络模型,哪种优化算法更好?35000次测试告诉你

新闻 人工智能 算法
想要优化自己的神经网络,却不知道哪种优化器更适合自己?现在,最全面的优化算法分析来了。

 本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

想要优化自己的神经网络,却不知道哪种优化器更适合自己?

又或者,想知道深度学习中梯度下降的算法到底都有哪些?

建神经网络模型,哪种优化算法更好?35000次测试告诉你

现在,最全面的优化算法分析来了。

它整理了自1964年以来,几乎所有的优化方法 (约130种),将它们进行了分类。

此外,它还给出了几种基准测试方法,并用它分析了1344种可能的配置方案。

在运行了35000次测试后,它给出了非常全面的优化器算法分析介绍,并告诉你如何用这些基准测试,为自己的深度学习模型选择最好的优化方案。

优化方法具体都有哪几种?

从下图这份密密麻麻的图表来看,迄今为止,提出的优化算法已经有130种左右。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

目前他们还看不出来区别,但在测试结果中可以发现,这些优化器明显能被分成两类,一种适用于VAE(变分自编码器),另一种则不适用于VAE。

而从这些优化器中的常用参数来看,α0表示初始学习率,αlo和αup代表上下界,∆t表示切换衰减样式的周期,k表示衰减因子。

可以看出,这些学习率的参数主要可以被分为常数、梯度下降、平滑下降、周期性、预热、超收敛等几种。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

那么,130多种优化器,哪种才是最适用的?而对这些参数进行调整,到底能对优化器起到多大的作用?

用基准测试方法来测测,就知道了。

8种基准测试方法

如下图,作者提出了8种优化任务,在这些任务上面进行测试,以得到对比结果。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

从图中看来,无论是数据集(MNIST、CIFAR-10等)、模型(VAE、CNN、RNN等),还是任务(分类、NLP等)和标准(损失率、精度)都不一样。

此外,batchsize也考虑在内(看来实验机器性能不错)。制作这些测试的目的在于,多角度考量出这些优化方法的合理性。

测试按照下图流程走,整体算下来,共有1344种配置,共运行接近35000次。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

为了得知哪种优化方法更合适,这样做也是很拼了。

如何选择适合自己的优化方法?

那么,具体如何选择适合的优化方法呢?

下图是作者随机选取的14个优化器。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

下图是这些优化器在上面8种基准测试下的表现结果。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

其中,红色的I表示误差范围。可以看出,在一定误差范围内,某一类优化方法的性能几乎非常相似:它们在各种基准测试上的表现都不错。

为了验证这些测试方法的稳定性,作者特意对其中一些算法进行了参数调整,下图是经典算法RMSProp和RMSProp(2)的调优结果。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

可见,不同的参数能给优化算法的性能带来不小的波动变化。

更直接地,如果增加(性能)预算,从下图可以看出,性能的改进也会有所增加。(图中橙色为所有灰线的中值)

建神经网络模型,哪种优化算法更好?35000次测试告诉你

也就是说,即使优化算法的性能不错,合理调参仍然不可或缺。

那么,到底有多少优化器存在“改进参数,竟然能大幅增加优化能力”的问题呢?

还不少。

从下图来看,绿色表示优化过后,优化算法能更好地运行。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

换而言之,只要某种优化算法的结果是一片绿,那么它原来的默认参数就真的很糟糕……

例如,AMSGrad、Mom、NAG的默认参数都存在很大的改进空间。相比而言,AMSBound由于自适应,默认参数都还非常不错,不需要再有大改进。

对这些优化器进行评估后,研究者们得出以下几个结论:

1、优化器的性能,在不同的任务中有很大差异;

2、事实上,大部分优化器的性能惊人地相似,目前尚没有“最通用”的优化方法;

3、对优化器进行(参数)微调,其实和选择优化器一样重要、甚至更重要。

不过,虽然这份表格已经非常详细,还是有细心的网友发现了盲点:像SWA这样非常简单高效的方法,还是在分析时被遗漏了。

建神经网络模型,哪种优化算法更好?35000次测试告诉你

当然,就提出的几种基准测试来说,已经适合用于分析大部分优化器的选择方案。

目前,作者已经在ArXiv论文页面,开源了基准测试方法的Code,感兴趣的小伙伴可戳论文地址查看~

作者介绍

这几位作者都来自于德国图宾根大学。

[[346233]]

Robin M. Schmidt,计算机专业研究生,主要研究方向是人工智能,感兴趣的方向在深度学习、强化学习及优化上。

[[346234]]

Philipp Hennig,机器学习教授,兼任马普所科学家,曾于海德堡大学和帝国理工学院修读物理,并在剑桥大学获得机器学习博士学位。

[[346235]]

Frank Schneider,机器学习博士生,研究领域是机器学习的优化方法。目前在钻研深度学习的超参数,使深度神经网络的训练自动化。

论文地址:

https://arxiv.org/abs/2007.01547

 

责任编辑:张燕妮 来源: 量子位
相关推荐

2022-04-07 09:01:52

神经网络人工智能

2023-04-06 16:21:52

2017-03-10 12:16:46

机器学习

2019-01-05 08:40:17

VGG神经网络

2017-03-22 12:13:36

AI神经网络模型算法

2017-07-12 16:56:42

卷积神经网络结构数据CNN

2017-07-05 15:42:58

卷积神经网络Non-Euclide计算机视觉

2020-09-09 10:20:48

GraphSAGE神经网络人工智能

2019-01-25 18:00:12

编程语言PythonJava

2019-04-19 08:18:37

神经网络数据图形

2017-11-30 18:05:18

2020-08-20 07:00:00

深度学习人工智能技术

2017-08-28 21:31:37

TensorFlow深度学习神经网络

2018-07-03 16:10:04

神经网络生物神经网络人工神经网络

2019-12-11 11:53:51

架构运维技术

2023-09-17 23:09:24

Transforme深度学习

2018-09-09 23:58:25

可视化神经网络模型

2018-05-16 09:41:13

神经网络NN函数

2022-02-15 23:38:22

Python机器学习算法

2022-06-16 10:29:33

神经网络图像分类算法
点赞
收藏

51CTO技术栈公众号