Adam 和 RMSprop 等优化器是在训练期间调整神经网络参数以最小化损失函数的算法。 它们通过动态调整每个参数的学习率来改进基本的随机梯度下降 (SGD),从而加快收敛速度并处理稀疏或噪声梯度等挑战。 虽然它们有相似之处,但它们在如何计算和应用这些自适应更新方面有所不同。
RMSprop(均方根传播)解决了 SGD 对所有参数使用单一学习率的限制。 它维护每个参数的平方梯度的移动平均值,这有助于规范化学习率。 具体来说,它计算过去平方梯度的指数衰减平均值,并将当前梯度除以该平均值的平方根。 这种缩放降低了具有较大历史梯度的参数的学习率,并增加了具有较小梯度的参数的学习率。 例如,在处理图像的网络中,RMSprop 可能会减慢频繁激活的卷积滤波器(具有大梯度)的更新,同时加快不太活跃的滤波器的更新。 衰减率(通常设置为 0.9)控制过去梯度被遗忘的速度,而一个小 epsilon(例如 1e-8)可以防止除以零。 RMSprop 对于非平稳问题特别有效,例如训练循环神经网络 (RNN),其中梯度幅度随时间变化很大。
Adam(自适应矩估计)结合了 RMSprop 和基于动量的优化思想。 它维护两个移动平均值:一个用于梯度(一阶矩),另一个用于平方梯度(二阶矩)。 这些平均值经过偏差校正,以考虑到它们在零处的初始化。 一阶矩的作用类似于动量,可以平滑噪声梯度,而二阶矩可以自适应地缩放学习率,类似于 RMSprop。 例如,在训练 Transformer 模型时,Adam 的动量有助于在损失景观的平坦区域中导航,而自适应缩放则处理具有不同梯度尺度的层。 Adam 的超参数(例如,beta1=0.9,beta2=0.999)通常保留为默认值,使其成为流行的“开箱即用”选择。 但是,在需要精确学习率调整的问题中,例如微调预训练模型,它有时会收敛到次优解。
在实践中,RMSprop 更适用于具有非平稳目标的任务(例如,强化学习),而 Adam 由于其稳健性而被广泛用于通用深度学习。 开发人员应该尝试这两种方法:例如,将 Adam 用于卷积网络,将 RMSprop 用于 RNN。 两种优化器都需要设置基本学习率,但 Adam 的自适应性通常减少了对大量调整的需求。 了解它们的机制有助于调试训练问题,例如发散(可能需要降低学习率)或缓慢收敛(可能受益于动量调整)。