九游·体育(NineGameSports)官方网站-数智体育价值引领者

听说你了解深度学习最常用的学习算法:Adam优化算法?-九游·体育科技集团
i1pcban.jpg i1pcban.jpg

新闻九游

听说你了解深度学习最常用的学习算法:Adam优化算法?

2024-09-27 

分享到

  深度学习常常需要大量的时间和机算资源进行训练,这也是困扰深度学习算法开发的重大原因。虽然我们可以采用分布式并行训练加速模型的学习,但所需的计算资源并没有丝毫减少。而唯有需要资源更少、令模型收敛更快的最优化算法,才能从根本上加速机器的学习速度和效果,Adam算法正为此而生!

  Adam优化算法是随机梯度下降算法的扩展式,近来其广泛用于深度学习应用中,尤其是计算机视觉和自然语言处理等任务。本文分为两部分,前一部分简要介绍了Adam优化算法的特性和其在深度学习中的应用,后一部分从Adam优化算法的原论文出发,详细解释和推导了它的算法过程和更新规则。我们希望读者在读完两部分后能了解掌握以下几点:

  Adam是一种可以替代传统随机梯度下降过程的一阶优化算法,它能九游智能体育科技基于训练数据迭代地更新神经网络权重。Adam最开始是由OpenAI的DiederikKingma和多伦多大学的JimmyBa在提交到2015年ICLR论文(Adam:AMethodforStochasticOptimization)中提出的。本文前后两部分都基于该论文的论述和解释。

  首先该算法名为「Adam」,其并不是首字母缩写,也不是人名。它的名称来源于适应性矩估计(adaptivemomentestimation)。在介绍这个算法时,原论文列举了将Adam优化算法应用在非凸优化问题中所获得的优势:

  Adam算法和传统的随机梯度下降不同。随机梯度下降保持单一的学习率(即alpha)更新所有的权重,学习率在训练过程中并不会改变。而Adam通过计算梯度的一阶矩估计和二阶矩估计而为不同的参数设计独立的自适应性学习率。

  Adam算法同时获得了AdaGrad和RMSProp算法的优点。Adam不仅如RMSProp算法那样基于一阶矩均值计算适应性参数学习率,它同时还充分利用了梯度的二阶矩均值(即有偏方差/uncenteredvariance)。具体来说,算法计算了梯度的指数移动均值(exponentialmovingaverage),超参数beta1和beta2控制了这些移动均值的衰减率。

  移动均值的初始值和beta1、beta2值接近于1(推荐值),因此矩估计的偏差接近于0。该偏差通过首先计算带偏差的估计而后计算偏差修正后的估计而得到提升。如果对具体的实现细节和推导过程感兴趣,可以继续阅读该第二部分和原论文。

  Adam在深度学习领域内是十分流行的算法,因为它能很快地实现优良的结果。经验性结果证明Adam算法在实践中性能优异,相对于其他种类的随机优化算法具有很大的优势。

  在原论文中,作者经验性地证明了Adam算法的收敛性符合理论性的分析。Adam算法可以在MNIST手写字符识别和IMDB情感分析数据集上应用优化logistic回归算法,也可以在MNIST数据集上应用于多层感知机算法和在CIFAR-10图像识别数据集上应用于卷积神经网络。他们总结道:「在使用大型模型和数据集的情况下,我们证明了Adam优化算法在解决局部深度学习问题上的高效性。」

听说你了解深度学习最常用的学习算法:Adam优化算法?(图1)

  事实上,Insofar、RMSprop、Adadelta和Adam算法都是比较类似的优化算法,他们都在类似的情景下都可以执行地非常好。但是Adam算法的偏差修正令其在梯度变得稀疏时要比RMSprop算法更快速和优秀。Insofar和Adam优化算法基本是最好的全局选择。同样在CS231n课程中,Adam算法也推荐作为默认的优化算法。

  虽然Adam算法在实践中要比RMSProp更加优秀,但同时我们也可以尝试SGD+Nesterov动量来作为Adam的替代。即我们通常推荐在深度学习模型中使用Adam算法或SGD+Nesterov动量法。

  而接下来的第二部分我们可以从原论文出发具体展开Adam算法的过程和更新规则等。

  我们提出了Adam算法,即一种对随机目标函数执行一阶梯度优化的算法,该算法基于适应性低阶矩估计。Adam算法很容易实现,并且有很高的计算效率和较低的内存需求。Adam算法梯度的对角缩放(diagonalrescaling)具有不变性,因此很适合求解带有大规模数据或参数的问题。该算法同样适用于解决大噪声和稀疏梯度的非稳态(non-stationary)问题。超参数可九游智能体育科技以很直观地解释,并只需要少量调整。本论文还讨论了Adam算法与其它一些相类似的算法。我们分析了Adam算法的理论收敛性,并提供了收敛率的区间,我们证明收敛速度在在线凸优化框架下达到了最优。经验结果也展示了Adam算法在实践上比得上其他随机优化方法。最后,我们讨论了AdaMax,即一种基于无穷范数(infinitynorm)的Adam变体。

  如上算法所述,在确定了参数α、β1、β2和随机目标函数f(θ)之后,我们需要初始化参数向量、一阶矩向量、二阶矩向量和时间步。然后当参数θ没有收敛时,循环迭代地更新各个部分。即时间步t加1、更新目标函数在该时间步上对参数θ所求的梯度、更新偏差的一阶矩估计和二阶原始矩估计,再计算偏差修正的一阶矩估计和偏差修正的二阶矩估计,然后再用以上计算出来的值更新模型的参数θ。

  该算法更新梯度的指数移动均值(mt)和平方梯度(vt),而参数β1、β2∈[0,1)控制了这些移动均值(movingaverage)指数衰减率。移动均值本身使用梯度的一阶矩(均值)和二阶原始矩(有偏方差)进行估计。然而因为这些移动均值初始化为0向量,所以矩估计值会偏差向0,特别是在初始时间步中和衰减率非常小(即β接近于1)的情况下是这样的。但好消息是,初始化偏差很容易抵消,因此我们可以得到偏差修正(bias-corrected)的估计mthat和vthat。

  注意算法的效率可以通过改变计算顺序而得到提升,例如将伪代码最后三行循环语句替代为以下两个:

听说你了解深度学习最常用的学习算法:Adam优化算法?(图2)

  如果线i]是静态的(stationary),那么ζ=0。否则ζ可以保留一个很小的值,这是因为我们应该选择指数衰减率β1以令指数移动均值分配很小的权重给梯度。所以初始化均值为零向量就造成了只留下了(1−βt^2)项。我们因此在算法1中除以了ζ项以修正初始化偏差。

  在稀疏矩阵中,为了获得一个可靠的二阶矩估计,我们需要选择一个很小的β2而在许多梯度上取均值。然而正好是这种小β2值的情况导致了初始化偏差修正的缺乏,因此也就令初始化步长过大。

  本论文使用了Zinkevich2003年提出的在线学习框架分析了Adam算法的收敛性。

  图1:在MNIST图片集和有1万条词袋(BoW)特征向量的IMDB电影评论数据集上训练带有负对数似然函数的Logistic回归。

  图2:在MNIST图片数据集上训练多层神经网络。(a)图是使用了dropout随机正则化的神经网络。(b)图是使用确定性损失函数的神经网络。

  图3:卷积神经网络的训练损失。左图表示前三个epoch的训练损失,右图表示所有45个epoch上的训练损失。

  图4:在变分自编码器(VAE)中带偏差修正项(红色)和没有偏差修正项(绿色)的损失对比。

  在Adam中,单个权重的更新规则是将其梯度与当前和过去梯度的L^2范数(标量)成反比例缩放。而我们可以将基于L^2范数的更新规则泛化到基于L^p范数的更新规则中。虽然这样的变体会因为p的值较大而在数值上变得不稳定,但是在特例中,我们令p→∞会得出一个极其稳定和简单的算法(见算法2)。现在我们将推导这个算法,在使用L^p范数情况下,时间t下的步长和vt^(1/p)成反比例变化。

  其中初始值u0=0。注意这里十分便利,在该情况下我们不需要修正初始化偏差。同样AdaMax参数更新的量级要比Adam更简单,即∆t≤α。