深度学习优化算法入门:二、动量、RMSProp、Adam

简介: 编者按:DRDO研究人员Ayoosh Kathuria深入浅出地介绍了牛顿法、动量法、RMSProp、Adam优化算法。 本系列的上一篇文章介绍了随机梯度下降,以及如何应对陷入局部极小值或鞍点的问题。

编者按:DRDO研究人员Ayoosh Kathuria深入浅出地介绍了牛顿法、动量法、RMSProp、Adam优化算法。


554a2f7cd68d9702460f606472458ca79c1f1f8a

本系列的上一篇文章介绍了随机梯度下降,以及如何应对陷入局部极小值或鞍点的问题。在这篇文章中,我们将查看另一个困扰神经网络训练的问题,病态曲率。

局部极小值和鞍点会使训练停滞,而病态曲率则会减慢训练速度,以至于机器学习从业者可能会觉得搜索收敛到了一个次优极小值。让我们深入了解下什么是病态曲率。

病态曲率

考虑下面的损失曲面。

a9d1ada31e0df8d43de5bd5e4f9102fb26f22e57

如你所见,我们从随机点开始,渐渐进入蓝色的沟壑区。(颜色表示损失函数在特定点的值是高是低,红色表示高值,蓝色表示低值。)

在到达最小值之前,我们需要首先穿过沟壑区,也就是病态曲率。让我们放大一下这一区域,看看为什么称病态?

11a773375ea07dd861d70b3378029b8e955ae56e

如上图所示,梯度下降在沟壑区的脊间反复振荡,极其缓慢地向最小值处移动。这是因为w1方向要陡峭得多。

考虑下图中A点的梯度,可以分解为w1、w2方向的两个分量。w1方向的梯度要大很多,因此梯度的方向大为偏向w1,而不是w2(但w2才是能够更快到达最小值处的梯度方向)。

fde238fa39360f52a6b1d351e0d74c7b6126ead4

通常情况下,我们使用低学习率来应对这样的反复振荡,但在病态曲率区域使用低学习率,可能要花很多时间才能达到最小值处。事实上,有论文报告,防止反复振荡的足够小的学习率,也许会导致从业者相信损失完全没有改善,干脆放弃训练。

大概,我们需要找到一种方法,首先缓慢地进入病态曲率的平坦底部,然后加速往最小值方向移动。二阶导数可以帮助我们做到这一点。

牛顿法

梯度下降是一阶优化方法。它只考虑损失函数的一阶导数,不考虑高阶函数。基本上这意味着它对损失函数的曲率一无所知。梯度下降可以告诉我们损失是否下降,下降得有多快,但无法区分曲线的的弯曲程度。

bc8b739bcf96800bf7e3d12e4744392a093377d3

上图三条曲线,红点处的梯度都是一样的,但曲率大不一样。解决方案?考虑二阶导数,或者说梯度改变得有多快。

使用二阶导数解决这一问题的一个非常流行的技术是牛顿法(Newton's Method)。为了避免偏离本文的主题,我不会过多探究牛顿法的数学。相反,我将尝试构建牛顿法的直觉。

牛顿法可以提供向梯度方向移动的理想步幅。由于我们现在具备了损失曲面的曲率信息,步幅可以据此确定,避免越过病态曲率的底部。

牛顿法通过计算Hessian矩阵做到这一点。Hessian矩阵是损失函数在所有权重组合上的二阶导数的矩阵。

9aceb43621980d7bfc1cbb45b3043c491a4c62b5

Hessian提供了损失曲面每一点上的曲率估计。正曲率意味着随着我们的移动,损失曲面变得不那么陡峭了。负曲率则意味着,损失曲面变得越来越陡峭了。

ff4246659133a7bd3ead940b3046a35b01d57ee8

注意,如果这一步的计算结果是负的,那就意味着我们可以切换回原本的算法。这对应于下面梯度变得越来越陡峭的情形。

1251dd7b0641f4a9f290d17688b7c8d938e2b73e

然而,如果梯度变得越来越不陡峭,那么我们也许正向病态曲率的底部移动。这时牛顿算法提供了一个修正过的学习步幅,和曲率成反比。换句话说,如果损失曲面变得不那么陡峭,学习步幅就下降。

为何我们不常使用牛顿法?

你已经看到公式中的Hessian矩阵了。Hessian矩阵需要我们计算损失函数在所有权重组合上的梯度。也就是说,需要做的计算的数量级是神经网络所有权重数量的平方。

现代神经网络架构的参数量可能是数亿,计算数亿的平方的梯度在算力上不可行。

虽然高阶优化方法在算力上不太可行,但二阶优化关于纳入梯度自身如何改变的想法是可以借鉴的。虽然我们无法准确计算这一信息,但我们可以基于之前梯度的信息使用启发式算法引导优化过程。

动量

搭配SGD使用的一个非常流行的技术是动量(Momentum)。动量法不仅使用当前的梯度,同时还利用之前的梯度提供的信息。

3a87a2db01ee9fad5baac9585d4958aa22aa81bb

上面的第一个等式就是动量,动量等式由两部分组成,第一项是上一次迭代的动量,乘以“动量系数”。

dd63e70d69cf27af49d408e1df2214d912d46fb3

比如,假设我们将初始动量v设为0,系数定为0.9,那么后续的更新等式为:


50b8e9e77c8b5127a35f9a06808d748ffa5677a4

我们看到,后续的更新保留了之前的梯度,但最近的梯度权重更高。(致喜欢数学的读者,这是梯度的指数平均。)

下面我们来看看动量法如何帮助我们缓解病态曲率的问题。下图中,大多数梯度更新发生在之字形方向上,我们将每次更新分解为w1和w2方向上的两个分量。如果我们分别累加这些梯度的两个分量,那么w1方向上的分量将互相抵消,而w2方向上的分量得到了加强。

4382c04cc8ad67e8773768d2d665cdc7d3e803a1

也就是说,基于动量法的更新,积累了w2方向上的分量,清空了w1方向上的分量,从而帮助我们更快地通往最小值。从这个意义上说,动量法也有助于抑制振荡。

动量法同时提供了加速度,从而加快收敛。但你可能想要搭配模拟退火,以免跳过最小值。

在实践中,动量系数一般初始化为0.5,并在多个epoch后逐渐退火至0.9.

RMSProp

RMSProp,也就是均方根传播的历史很有趣。它是传奇人物Geoffrey Hinton在Coursera授课时初次提出的。

RMSProp也试图抑制振荡,但采取的方法和动量不同。此外,RMSProp可以自动调整学习率。还有,RMSProp为每个参数选定不同的学习率。

992eb3fef860f3ad22d14f717b31a3f5801fb3b1

在第一个等式中,类似之前的动量法,我们计算了梯度平方的指数平均。由于我们为每个参数单独计算,这里的梯度gt表示正更新的参数上的梯度投影。

第二个等式根据指数平均决定步幅大小。我们选定一个初始学习率η,接着除以平均数。在我们上面举的例子中,w1的梯度指数平均比w2大得多,所以w1的学习步幅比w2小得多。这就帮助我们避免了脊间振荡,更快地向最小值移动。

第三个等式不过是权重更新步骤。

上面的等式中,超参数ρ一般定为0.9,但你可能需要加以调整。等式2中的ε是为了确保除数不为零,一般定为1e-10.

注意RMSProp隐式地应用了模拟退火。在向最小值移动的过程中,RMSProp会自动降低学习步幅,以免跳过最小值。

Adam

Adam,即Adaptive Moment Optimization算法结合了动量和RMSProp的启发式算法。

51a401a802f8771237a34c26bc43336b43d77085

这里,我们计算了梯度的指数平均和梯度平方的指数平均(等式1和等式2)。为了得出学习步幅,等式3在学习率上乘以梯度的平均(类似动量),除以梯度平方平均的均方根(类似RMSProp)。等式4是权重更新步骤。

超参数β1一般取0.9,β2一般取0.99. ε一般定为1e-10.

结语

本文介绍了三种应对病态曲率同时加速训练过程的梯度下降方法。

在这三种方法之中,也许动量法用得更普遍,尽管从论文上看Adam更吸引人。经验表明这三种算法都能收敛到给定损失曲面的不同的最优局部极小值。然而,动量法看起来要比Adam更容易找到比较平坦的最小值,而自适应方法(自动调整学习率)倾向于迅速地收敛于较尖的最小值。比较平坦的最小值概括性更好。

9c8fa9bbb112f8c783f9732fbb82447d4e33a84d

尽管这些方法有助于我们驯服深度网络难以控制的损失平面,随着网络日益变深,它们开始变得不够用了。除了选择更好的优化方法,有相当多的研究试图寻找能够生成更平滑的损失曲面的架构。批量归一化(Batch Normalization)和残差连接(Residual Connections)正是这方面的两个例子。我们会在后续的文章中详细介绍它们。但这篇文章就到此为止了。欢迎在评论中提问。

原文发布时间为:2018-10-07

本文作者: weakish

本文来自云栖社区合作伙伴“深度学习自然语言处理”,了解相关信息可以关注“深度学习自然语言处理"


相关文章
|
7天前
|
机器学习/深度学习 数据处理 网络架构
基于深度学习的图像识别优化策略
【4月更文挑战第30天】 在当前的计算机视觉领域,深度学习已成为推动图像识别技术革新的核心动力。本文旨在探讨并提出一系列优化策略,以增强现有深度神经网络模型在处理复杂图像数据时的性能和效率。通过分析网络架构、训练过程和数据处理流程,我们提出了改进的模型正则化方法、高效的训练技巧以及针对特定问题的适应性调整。这些策略不仅在理论上具有创新性,而且在实践中已被证明能够显著提高模型的准确率和泛化能力,为图像识别领域的研究与应用提供了新的视角和技术路径。
|
1天前
|
机器学习/深度学习 边缘计算 算法
基于深度学习的图像识别优化策略研究
【5月更文挑战第7天】 在计算机视觉领域,图像识别作为核心任务之一,其性能的提升一直是研究的热点。随着深度学习技术的不断发展,卷积神经网络(CNN)已成为图像识别的主要工具。然而,模型复杂度和计算资源的大量需求限制了其在实际应用中的推广。本文围绕减少模型参数、提高运算效率和保持识别准确率等方面展开,提出了一种结合深度可分离卷积与注意力机制的图像识别优化策略。通过实验验证,该策略在多个标准数据集上取得了与传统卷积网络相媲美的结果,同时显著降低了参数数量和计算成本。
9 4
|
1天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
1天前
|
机器学习/深度学习 人工智能 开发框架
构建未来:基于深度学习的图像识别优化策略
【5月更文挑战第6天】随着人工智能技术的飞速发展,深度学习在图像识别领域已经取得了显著的成就。然而,为了进一步提升系统的识别效率和准确性,本文提出了一种结合最新神经网络架构与数据增强技术的图像识别优化策略。通过引入自适应学习率调整机制和混合精度训练方法,该策略旨在降低模型训练过程中的时间成本,同时提高模型在复杂环境下的泛化能力。
|
1天前
|
机器学习/深度学习 监控 算法
利用深度学习优化图像识别准确性的探索
【5月更文挑战第6天】 在数字图像处理领域,随着数据量的激增和算法复杂度的提升,传统图像识别技术面临巨大挑战。本文通过构建一个基于深度卷积神经网络(CNN)的模型,探讨了如何提高图像识别的准确性。我们详细分析了网络结构、激活函数和优化器的选择对模型性能的影响,并通过实验验证了所提出方法的有效性。结果表明,采用适当的数据增强技术和调整网络参数,可以显著提升模型在复杂数据集上的识别精度。
|
2天前
|
机器学习/深度学习 边缘计算 计算机视觉
基于深度学习的图像识别优化技术研究
【5月更文挑战第5天】 在当前的计算机视觉领域,图像识别技术已取得显著进展,尤其是深度学习方法的广泛应用。然而,随着数据量的日益增加和模型复杂度的提升,如何提高图像识别的效率与准确性成为新的挑战。本文提出了一种基于改进卷积神经网络(CNN)的图像识别优化技术,旨在减少模型参数量、加速推理过程,并保持甚至提升识别精度。通过引入深度可分离卷积、注意力机制以及量化剪枝策略,该技术在多个标准数据集上显示出了卓越的性能。
|
3天前
|
人工智能 算法 测试技术
论文介绍:进化算法优化模型融合策略
【5月更文挑战第3天】《进化算法优化模型融合策略》论文提出使用进化算法自动化创建和优化大型语言模型,通过模型融合提升性能并减少资源消耗。实验显示,这种方法在多种基准测试中取得先进性能,尤其在无特定任务训练情况下仍能超越参数更多模型。同时,该技术成功应用于创建具有文化意识的日语视觉-语言模型。然而,模型融合可能产生逻辑不连贯响应和准确性问题,未来工作将聚焦于图像扩散模型、自动源模型选择及生成自我改进的模型群体。[论文链接: https://arxiv.org/pdf/2403.13187.pdf]
109 1
|
5天前
|
机器学习/深度学习 算法 大数据
利用深度学习优化图像识别处理流程
【5月更文挑战第3天】 在当前的计算机视觉领域,图像识别的准确性与处理速度是衡量系统性能的重要指标。随着人工智能技术的飞速发展,深度学习模型尤其是卷积神经网络(CNN)在图像识别任务中取得了显著成果。本文旨在探讨如何通过优化深度学习模型的结构和参数,以及采用高效的算法来提高图像识别的处理效率和准确率。我们将介绍几种有效的技术手段,包括网络结构简化、权重共享、多尺度训练等,并通过实验验证这些方法的有效性。最终目的是为读者呈现一种平衡计算成本与识别性能的优化策略,推动深度学习在实际应用中的高效部署。
|
5天前
|
机器学习/深度学习 数据采集 人工智能
利用深度学习优化图像识别处理流程
【5月更文挑战第3天】 在现代技术环境中,图像识别作为人工智能的一个关键应用领域,其发展速度和准确性要求不断提高。本文将探讨利用深度学习技术优化图像识别处理流程的方法,包括数据预处理、模型选择、训练策略及最终的测试与部署。通过分析现有文献和最新研究成果,我们提出了一套改进的卷积神经网络(CNN)架构,该架构能够有效提升图像识别的准确率和处理速度。此外,文章还讨论了模型过拟合、数据增强以及迁移学习等关键技术的应用,并展示了这些技术如何帮助构建一个更为健壮和高效的图像识别系统。
16 5
|
6天前
|
机器学习/深度学习 人工智能 计算机视觉
基于深度学习的图像识别技术优化策略
【5月更文挑战第1天】 在当前的人工智能领域,图像识别技术已经取得了显著的进步,特别是随着深度学习方法的应用。然而,为了实现更高效准确的图像处理,本文探讨了几种可能的优化策略。这些策略旨在提高模型的性能、减少计算成本以及增强模型对不同数据集的泛化能力。我们将重点讨论数据增强、网络结构调整、知识蒸馏和迁移学习等技术,并通过实验验证所提出策略的有效性。
16 1