每个 AI 工程师都应该知道的深度学习优化器类型

已发表: 2020-12-01

目录

介绍

深度学习在灵活性、更高的准确性和工业应用中的广泛可能性方面是机器学习的一大进步。 无论是聊天应用程序、语法自动更正、不同语言之间的翻译、假新闻检测,还是基于一些初始措辞的自动故事写作,深度学习几乎在每个领域都有应用。

有了这么多的使用,这些算法在最少的资源下运行变得很重要,这样我们就可以降低经常性成本并在更短的时间内提供有效的结果。 优化器是一种更新各种参数的方法或算法,可以以更少的努力减少损失。 让我们看看一些流行的深度学习优化器,它们可以提供可接受的结果。

从世界顶级大学学习AI ML 课程获得硕士、Executive PGP 或高级证书课程以加快您的职业生涯。

梯度下降 (GD)

这是最基本的优化器,直接使用损失函数和学习率的导数来减少损失并达到最小值。 这种方法也被用于神经网络的反向传播,其中更新的参数在不同层之间共享,具体取决于何时达到最小损失。 很容易实现和解释结果,但它有各种问题。

计算整个数据集梯度时会更新权重,这会减慢处理速度。 它还需要大量内存来存储这些临时数据,使其成为一个资源匮乏的进程。 尽管该算法背后的想法非常适合,但需要对其进行调整。

随机梯度下降

这是 GD 方法的更改版本,其中模型参数在每次迭代时更新。 这意味着在每个训练样本之后,都会测​​试损失函数并更新模型。 这些频繁的更新导致在更短的时间内收敛到最小值,但其代价是增加了方差,这会使模型超出所需位置。

但与前一种技术相比,这种技术的一个优点是内存需求低,因为现在不需要存储损失函数的先前值。

小批量梯度下降

这种 GD 方法的另一个变体是小批量,其中模型参数以小批量更新。 这意味着在每 n 个批次之后,模型参数将被更新,这确保了模型以更少的步骤向最小值前进,而不会经常脱轨。 这导致模型中的内存使用量减少和方差低。

阅读:机器学习项目理念

基于动量的梯度下降

让我们回顾一下我们用来更新参数的方法。 基于损失函数的一阶导数,我们正在反向传播梯度。 更新的频率可以是在每次迭代、一个批次或最后一次之后,但我们没有考虑参数中有多少更新。

如果这个历史元素包含在下一次更新中,那么它可以加速整个过程,这就是动量在这个优化器中的含义。 这个历史元素就像我们的大脑如何记忆事物一样。 如果你走在一条街上并且你走了很远的距离,那么你会确定你的目的地在前面一段距离,你会提高你的速度。

该元素取决于先前的值、学习率和一个名为 gamma 的新参数,该参数控制此历史更新。 更新规则类似于 w = w – v,其中 v 是历史元素。

Nesterov 加速梯度 (NAG)

基于动量的 GD 通过最早收敛到最小值来推动当前使用的优化器,但它引入了一个新问题。 这种方法需要大量的 u 形转弯,并且在最小山谷中进出振荡,从而增加了总时间。 花费的时间仍然比正常的 GD 少,但这个问题也需要修复,这是在 NAG 中完成的。

这里采用的方法是首先使用历史元素进行参数更新,然后只计算可以向前或向后移动它的导数。 这被称为前瞻方法,它更有意义,因为如果曲线接近最小值,那么导数可以使其缓慢移动,从而减少振荡,从而节省更多时间。

另请阅读:您应该知道的深度学习技术

阿达格勒

到目前为止,我们只关注模型参数如何影响我们的训练,但我们还没有讨论在整个训练过程中被赋予恒定值的超参数。 一个这样重要的超参数是学习率,改变它可以改变训练的速度。

对于大多数值为零的稀疏特征输入,我们可以提供更高的学习率,这将提高由这些稀疏特征导致的衰减梯度。 如果我们有密集的数据,那么我们可以有更慢的学习。

解决方案是有一个自适应学习率,可以根据提供的输入而改变。 Adagrad 优化器试图通过与梯度的更新历史成比例地衰减学习率来提供这种自适应性。

这意味着当有较大的更新时,历史元素会被累积,因此会降低学习率,反之亦然。 这种方法的一个缺点是学习率急剧下降,一段时间后它接近于零。

RMSProp

这是对 Adagrad 优化器的改进。 这旨在通过采用梯度的指数平均值而不是梯度平方的累积和来降低学习率的激进性。 自适应学习率保持不变,因为现在指数平均会在更新较少的情况下惩罚较大的学习率,而在更新次数较多的情况下会惩罚较小的学习率。

亚当

自适应矩估计结合了 RMSProp(均方根道具)和基于动量的 GD 的强大功能。 在 Adam 优化器中,动量 GD 保存更新历史的能力和 RMSProp 提供的自适应学习率使 Adam 优化器成为一种强大的方法。 它还引入了两个新的超参数 beta1 和 beta2,它们通常保持在 0.9 和 0.99 左右,但您可以根据您的用例更改它们。

必读:深度学习中的正则化

结论

在本文中,我们按照易用性的顺序研究了 8 种深度学习优化器,以及下一个优化器如何克服一个优化器的限制,依此类推。 这里提到的一个或其他优化器有更多修改,但这些是您在寻求复杂解决方案之前应该考虑的基本修改。

在其中选择一个赢家对于用例和您正在处理的问题非常主观,但肯定可以将 Adam Optimizer 排在首位,因为它与动量概念相结合,改变了模型参数的更新方式并适应不断变化的不同场景的学习率,可以有效处理任何类型的输入。

总体趋势表明,对于相同的损失,这些优化器收敛于不同的局部最小值。 虽然自适应学习优化器收敛于更尖锐的最小值,但其他类型的技术收敛于更平坦的最小值,这更适合泛化。 这些技术只能在一定程度上有所帮助,因为随着深度神经网络变得越来越大,需要更有效的方法才能获得良好的结果。

如果您对掌握机器学习和 AI 感到好奇,请通过我们的 IIIT-B 和利物浦约翰摩尔斯大学的机器学习和 AI 理学硕士来提升您的职业生涯。

优化器如何进行深度学习?

虽然目前神经网络都是炒作,但优化器对于神经网络的学习来说更为基础。 虽然神经网络可以自行学习,而无需先前的知识,但优化器是一个与神经网络一起运行的程序,可以让它学习得更快。 简而言之,它通过改变神经网络的参数来实现这一点,从而使使用该神经网络的训练变得更快、更容易。 这些优化器允许神经网络实时工作,训练只需几分钟。 没有他们,培训很容易需要几天时间。

为什么深度学习算法难以优化?

深度学习系统通常被认为难以优化,因为它们庞大而复杂,通常涉及多层和非线性。 优化器需要处理一个庞大的系统,这并不容易理解。 一些深度学习工具仅提供有限数量的可调整参数,这限制了它们的实用性。 然而,有一些有效的方法可以优化深度学习模型并提高它们的泛化能力。

深度学习中有哪些不同的优化器?

在深度学习中,优化器用于调整模型的参数。 优化器的目的是调整模型权重以最大化损失函数。 损失函数被用作衡量模型执行情况的一种方式。 训练神经网络模型时必须使用优化器。 有多种不同的优化器可用于深度学习模型。 一些最流行的优化器是 RMSprop、动量和 Adam