调节超参数是深度学习中成本最高的部分之一。 当前最先进的优化器,例如Adagrad, RMSProp 和 Adam,通过为每个变量灵活地调整学习速率来简化工作,并取得了良好的效果。

Adam是一种有效的随机优化方法,只需要一阶梯度和少量内存。该方法通过估计梯度的第一和第二力矩来计算不同参数的适应性学习速率。Adam的名字来源于适应性力矩估计。该方法在设计上结合了两种流行方法的优势,包括在稀疏梯度上有效的AdaGrad和在在线和非固定设置中有效的RMSProp。Adam的优点有参数更新的级数与梯度规模调整无关,步长大致受stepsize参数制约。它不要求固定的对象,能用于稀疏梯度,并执行步长退火。

RMSPop是一种与Adam密切相关的优化方法,有时与动能结合使用。使用动能的RMSProp通过对重缩放梯度使用动能来生成参数更新,而Adam通过平均梯度的第一和第二力矩的直接估计来更新。RMSProp也缺少一个偏差更正项,而这项在稀疏梯度情况下非常重要,没有对偏差的更正会导致步长过大以及无法收敛。

AdaGrad是一种对稀疏梯度有效的算法。

其他的一些随机优化方法包括vSGD, AdaDelta,以及自然牛顿方法,SFO等。

但是一些实验以及Wilson等提出的理论认为,手动调整随机梯度下降(SGD)取得的效果更好,并能实现相同甚至更快的速率,提出的假设是自适应方法会收敛到不同的最小值。另一个提出的观点是上述的这些方法都没有调整它们的动能参数,而它在深度学习应用中已被证明非常重要。调整动能参数在异步平行系统中更为重要,近期理论显示异步引入了类似动能的动力,因此调低函数的动能对于有效的平行化很是重要。

深度学习研究者提出了许多优化超参数的方法。简单的如网格搜索,但它仅适用于一些非常小的问题,否则会因过于昂贵而无法使用。智慧黑盒方法不显式考虑问题的设定而测试不同设置。自适应方法提供了一个吸引人的选择,在运行时一次性调节很大程度上成功地将实验者从调整学习速率中解脱出来。类似于Adagrad, RMSProp 和 Adam这样的函数,使用梯度元素的级数为每个变量单独调整学习速率。这种灵活性听上去不错,但一些实验和近期的分析显示调整多学习速率的方法与动能SGD相比效果相当。Wilson等认为这种方法在泛化上效果更差。而自适应方法无法调整动能参数也是它的不利因素。

动能是加速优化的核心参数,最常使用的加速方法就以此命名,被称为动能。经典和近期的研究都表明合理的动能调节对于训练速度有深刻的影响,而在分布式系统中动能的作为更为关键。最近Mitliagkas等展现了在异步平行系统——一种有效分布式训练的流行设计——系统在优化中引入了类似动能的动力,因此应将函数动能降低以得到快速收敛。在近期的一项合作验证了对动能的调节能在千个节点规模上提升收敛。

加速的随机梯度下降(SGD),首先由Polyak和Nesterov等提出,已成为深度学习中默认的训练函数。使用它需要对超参数如学习速率和动能参数进行合理选择。但是选择超参数几乎是深度学习中最费时间的部分,很多人经过反复实验后大致勾勒了调节实践中应遵循的一些方法。

简单的动能SGD函数手动调整单个学习速率和动能值取得的效果可与Adam相当,并且它在学习速率错误设定和对象曲率变动具有抗干扰性。近期斯坦福大学研究组基于此设计了YelloFin,一个在SGD自动调整动能和学习速率的调节器。YelloFin可选择使用一个新的动能感知组件并结合负反馈循环机制来补偿在运行中异步导致的增加动力。研究组通过实证展示YelloFin与Adam相比在大规模的ResNet和LSTM模型中以更少的迭代收敛,同步设定中快2.8倍,异步设定中快2.7倍。