Adam是一种基于低阶矩的自适应随机目标函数的一阶梯度优化算法。它具有如下优点:对梯度的缩放具有不变性;既适用于数据或参数较大的问题,也同样适用于稀疏梯度问题;步长能够自动退火等。相较于SGD、RMSProp以及AdaGrad而言,在一般优化问题上都具有良好的表现。
Adam算法是对梯度的一阶矩、二阶矩进行估计并将其应用于参数更新的一种算法。
Adam算法的实现如上图所示,其中和分别是对梯度的一阶矩和二阶矩的估计,并由超参数和控制衰减。但在算法中,如果初始化和为0,会导致矩估计接近0(尤其是当接近1时),因此我们需要进行偏差矫正。
上述算法的后三行可简化为如下形式并不影响运算结果:
?
假设,对于参数更新的步长可写作,它具有上界
第一种情况仅会在稀疏性最严重的情况下发生,即除了当前时间步外,其余时间梯度都为0。这里补充证明,假设只有t时间步时,梯度不为0,则对于和有:
?由条件知随t增大,减小,因此在t=1时具有上界。
对于一般情况,我们假设梯度具有先验,此时步长满足,因此我们可以通过设置来确定迭代步长的上界,以便在一定次数内到达最优解。
通过的迭代公式,我们可以计算出与前时刻所有梯度之间的关系
我们想知道vt与真实二阶矩之间相差多少,对其求期望,得到:
如果二阶矩为静态时,ζ=0,ζ不为0时,我们可以选择来使过去较远的梯度衰减到比较小的权重,此时ζ也很小。因此我们通过上述结果可知,通过除以这个值,可以矫正偏差。也是同理。
我们通过分析其regret bound来分析它的收敛性,regret可以被定义为每一步预测的参数与可行域中最优参数差值的总和:
作者在文中证明了如下定理:
?其中以及,因此可以证明R(T)的上界为
对regret求均值,得到
可证其收敛性。
该部分,作者分别在逻辑回归、多层神经网络以及卷积神经网络上比较了几种迭代算法的优劣,可以从图中看出Adam在以上机器学习模型中均有比较好的表现。
?
?此外,作者还研究了偏差矫正对优化结果的影响,从图中可以看出,当不存在偏差矫正项时,接近1时会导致训练的不稳定,尤其是在训练初期。
作者在本文中还提出了AdaMax的迭代算法,其基本思想是在Adam的基础上进行进一步的拓展。Adam的二阶矩项采用了梯度的L2范数进行更新,作者认为可将L2范数一般化至LP范数,那么的表达式可写作:
?当,可以得到一个更为简单的算法,在这里定义满足:
?将上式写成递归式,可表达为
因此,AdaMax算法可改写称如下形式:
此外,作者还认为可以通过平均来使Adam以及AdaMax获得更好的泛化能力,即在算法中添加如下两行:
Adam算法是在AdaGrad及RMSProp等算法的基础上进一步改良的算法,首先它将动量并入到梯度的一阶矩估计中,同时增加了二阶矩(非中心方差)的估计。相比RMSProp而言,增加了偏差矫正项,避免了二阶矩估计在训练初期产生很大的偏差。Adam算法已经成为了当下比较常用的算法之一,在一般问题的优化上,都具有比较良好的表现。