Auto Byte
专注未来出行及智能汽车科技
微信扫一扫获取更多资讯
Science AI
关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展
微信扫一扫获取更多资讯
Adam真的是最好的优化器吗?有人认为不过是神经网络进化的结果
提到优化器,大多数人会想到 Adam。自 2015 年推出以来,Adam 一直是该领域的「王者」。但近日,波士顿大学的一位助理教授做出了一个假设,他认为 Adam 或许不是最佳的优化器,只是神经网络的训练使其成为了最佳。
Adam 优化器是深度学习中最流行的优化器之一。它适用于很多种问题,包括带稀疏或带噪声梯度的模型。其易于精调的特性使得它能够快速获得很好的结果,实际上,默认的参数配置通常就能实现很好的效果。Adam 优化器结合了 AdaGrad 和 RMSProp 的优点。Adam 对每个参数使用相同的学习率,并随着学习的进行而独立地适应。此外,Adam 是基于动量的算法,利用了梯度的历史信息。基于这些特征,在选择优化算法时,Adam 往往是「当仁不让」。但近日,波士顿大学助理教授 Francesco Orabona 提出了一种假设,他认为「不是 Adam 最佳,而是神经网络的训练使其变成最佳」。他在一篇文章中详述了自己的假设,原文内容如下:我从事在线和随机优化的研究已经有段时间了。2015 年 Adam 被提出的时候,我就已经身处这个领域了。Adam 由现谷歌高级研究科学家 Diederik P. Kingma 和多伦多大学助理教授 Jimmy Ba 在论文《ADAM: A METHOD FOR STOCHASTIC OPTIMIZATION》中提出。这篇论文很好,但算不上突破,从当前标准来看更是如此。首先,理论很脆弱:对于一种应该处理非凸函数随机优化的算法给出了 regret guarantee。其次,实验也很脆弱:近来完全一样的实验会遭到彻彻底底地拒绝。后来有人发现了证明中存在误差,并且 Adam 算法还无法在某些一维随机凸函数上实现收敛。尽管有着这样那样的问题,Adam 依然被认为是优化算法中的「王者」。所以需要明确一点:我们都知道,Adam 不总能使你实现最佳性能,但大多数时候,人们认为可以利用 Adam 的默认参数在处理某个深度学习问题上实现至少次优的性能。换句话说,Adam 被认为是现今深度学习的默认优化器。那么,Adam 成功的秘诀是什么呢?近年来,人们发表了大量论文,试图解释 Adam 及其性能。从「自适应学习率」(自适应什么?没人真的了解)到动量和尺度不变性,Adam 的方方面面都有了相应解读。但是,所有这些分析并没有给出关于其性能的最终答案。很明显,自适应学习率等这些因素中的大多数对任何函数的优化过程都是有益的,但我们仍不清楚,为什么这些因素按照这样的组合形式就能使 Adam 成为最佳算法。各个要素之间的均衡如此微妙,以至于解决非收敛问题所需的微小变化也被认为会带来比 Adam 稍差的性能。但是,这一切的可能性有多大呢?我的意思是,Adam 真的是最好的优化算法吗?在一个如此「年轻」的领域中,几年前就实现最佳深度学习优化的可能性又有多大呢?对 Adam 的惊人性能是否存在另一种解释呢?于是,我提出了一个假设,但在解释它之前,我们有必要简单谈谈应用深度学习社区。谷歌机器学习研究员 Olivier Bousquet 曾在一次演讲中,将深度学习社区描述为一个巨型遗传算法:社区研究人员正以半随机的方式探索所有算法和架构的变体。在大型实验中持续有效的算法得到保留,无效的则遭到摒弃。我们需要注意的是,这一过程似乎与论文被拒与否无关:社区太大也很活跃,好的 idea 即使被拒也能得到保留并在数月后转变成最佳实践,例如 Loshchilov 和 Hutter 的研究《Decoupled Weight Decay Regularization》。类似地,已发表论文中的 idea 被数百人尝试复现,而无法复现的就被残忍抛弃。这一过程创造出了许多启发式方法,即在实验中一直输出优秀结果,但压力也在于「一直」。的确,尽管是基于非凸公式的方法,但深度学习方法的性能非常可靠。(注意,深度学习社区对「名人」有着极大的倾向性,并非所有 idea 都能得到同等的关注……)那这一巨型遗传算法与 Adam 之间有什么联系呢?仔细观察深度学习社区的 idea 创造过程后,我发现了一个规律:人们创建的新架构往往优化算法是固定不变的,而大多数情况下,优化算法是 Adam。这是因为,Adam 是默认优化器。我的假设来了:Adam 对于多年前已有的神经网络架构来说是不错的优化算法,于是人们一直创建 Adam 有效的新架构。我们可能看不到 Adam 无效的架构,因为这类 idea 早已被抛弃了!这类 idea 要求同时设计新架构和新的优化器,而这是非常困难的任务。也就是说,大多数情况下,社区研究人员只需改进一组参数(架构、初始化策略、超参数搜索算法等),而保持优化器为 Adam。我确定很多人不会相信这一假设,他们会列出所有 Adam 不是最优优化算法的特定问题,比如动量梯度下降是最优优化算法。但是,我想指出两点:如果我的论断为真,则我们预计 Adam 在深度神经网络上效果优异,但在另外一些模型上效果很糟。而这的确发生了!例如,Adam 在简单的凸和非凸问题上表现糟糕,例如 Vaswani 等人《Painless Stochastic Gradient: Interpolation, Line-Search, and Convergence Rates》中的实验:现在似乎到了丢弃深度神经网络特定设置(初始化、权重、损失函数等)的时候了,Adam 失去了其适应性,其魔法一样的默认学习率必须得到再次调整。注意,你可以将线性预测器写成一个一层的神经网络,但 Adam 在这种情形下表现并不好。因此,深度学习架构的所有特定选择的演化可能是为了让 Adam 的效果越来越好,而上述简单问题并不具备这类特性,因此 Adam 在其中丧失了光彩。总之,Adam 可能是最好的优化器,因为深度学习社区仅仅在探索架构 / 优化器共同搜索空间中的一小块区域。如果真的是这样,那么对于一个因为专注于机器学习算法的狭窄区域而放弃凸方法的社区而言真是颇具讽刺意味。就像 Facebook 首席 AI 科学家 Yann LeCun 所言:「钥匙掉在黑暗处,我们却要在看得见的灯光下寻找。」这位助理教授的假设在 reddit 上引发了网友热议,但也只是给出了模棱两可的观点,谁也无法证明该假设是否成立。有位网友认为该假设可能不完全正确但很有趣,并提出了进一步的观点:Adam 与其他方法在简单 MLP 上的表现孰优孰劣?与通用优化问题的损失表面相比,或许只是神经网络的损失表面使得它们自然地适配 Adam。如果 Adam 在 MLP 上表现更差,那么证据就更充足了。另一位网友也认为存在着这种可能。Adam 推出之后的大多数论文都在使用它,人们发现的其他一些高效架构也依赖于它,对于使用 NAS 或类似方法的架构来说更是如此了。但在实践中,很多架构也能很好地适配其他优化器。并且,现在很多新论文也在使用 Ranger 等其他优化器。此外,关于 Adam 的另一种说法是,如果它真的自适应,那我们就不需要学习率查找器(finder)和调度器(scheduler)了。