存根 什么是梯度下降? - 联合人工智能
关注我们.

AI 101

什么是梯度下降?

mm
更新 on

什么是梯度下降?

如果您了解过神经网络的训练方式,那么您几乎肯定之前遇到过“梯度下降”这个术语。 梯度下降 是优化神经网络性能、降低网络丢失/错误率的主要方法。然而,对于那些刚接触机器学习的人来说,梯度下降可能有点难以理解,本文将尽力让您对梯度下降的运作方式有一个不错的直觉。

梯度下降是一种优化算法。 它用于通过调整网络参数来提高神经网络的性能,以使网络的预测与网络的实际/期望值(称为损失)之间的差异尽可能小。 梯度下降采用参数的初始值,并使用基于微积分的运算将其值调整为使网络尽可能准确的值。 您不需要了解很多微积分来理解梯度下降的工作原理,但您确实需要了解梯度。

什么是梯度?

假设有一个图表表示神经网络所犯的错误量。 图的底部表示误差最低的点,而图的顶部表示误差最高的点。 我们想要从图表的顶部向下移动到底部。 梯度只是量化误差与神经网络权重之间关系的一种方式。 这两件事之间的关系 可以绘制成斜率,不正确的权重会产生更多的误差。 斜率/梯度的陡度代表模型学习的速度。

更陡的斜率意味着误差大大减少,并且模型学习得很快,而如果斜率为零,则模型处于稳定状态并且无法学习。 我们可以通过计算模型的梯度、运动方向(网络参数的变化),沿着斜坡向下移动,以减少误差。

让我们稍微改变一下比喻,想象一系列的山丘和山谷。 我们想要到达山脚并找到代表损失最低的山谷部分。 当我们从山顶出发时,我们可以大步走下山,并确信我们正朝着山谷的最低点前进。

然而,当我们接近山谷的最低点时,我们的步幅需要变小,否则我们可能会超过真正的最低点。 类似地,在调整网络权重时,调整实际上可能会使其远离最低损失点,因此随着时间的推移,调整必须变得更小。 在下山到损失最低点的情况下,梯度是一个向量/指令,详细说明了我们应该采取的路径以及我们的步幅应该有多大。

现在我们知道梯度是告诉我们向哪个方向移动(应该更新哪些系数)以及我们应该采取多大的步长(应该更新多少系数)的指令,我们可以探索梯度是如何计算的。

计算梯度和梯度下降

梯度下降从损失高的地方开始,通过多次迭代,向损失最低的方向迈出一步,旨在找到最佳的权重配置。 照片:Роман Сузи 来自 Wikimedia Commons,CCY BY SA 3.0 (https://commons.wikimedia.org/wiki/File:Gradient_descent_method.png)

为了进行梯度下降,必须首先计算梯度。 为了 计算梯度,我们需要知道损失/成本函数。 我们将使用成本函数来确定导数。 在微积分中,导数仅指给定点处函数的斜率,因此我们基本上只是根据以下公式计算山的斜率 损失函数。 我们通过损失函数运行系数来确定损失。 如果我们将损失函数表示为“f”,那么我们可以说计算损失的方程如下(我们只是通过我们选择的成本函数运行系数):

损失 = f(系数)

然后我们计算导数,或确定斜率。 获得损失的导数将告诉我们哪个方向是向上或向下的斜率,通过给我们适当的符号来调整我们的系数。 我们将适当的方向表示为“delta”。

delta = 导数函数(损失)

现在我们已经确定了哪个方向是下坡方向,以达到最低损失点。 这意味着我们可以更新神经网络参数中的系数并有望减少损失。 我们将根据先前的系数减去由方向(增量)和控制变化幅度(步长的大小)确定的值的适当变化来更新系数。 控制更新大小的参数称为“学习率”,我们将其表示为“alpha”。

系数 = 系数 – (alpha * delta)

然后,我们重复这个过程,直到网络收敛到最低损失点附近,该点应该接近于零。

选择正确的学习率(alpha)值非常重要。 选择的学习率既不能太小也不能太大。 请记住,当我们接近最低损失点时,我们的步幅必须变小,否则我们将超过真正的最低损失点并最终到达另一边。 最小损失点很小,如果我们的变化率太大,误差最终可能会再次增加。 如果步长太大,网络的性能将继续在最低损失点附近反弹,在一侧超过它,然后在另一侧超过它。 如果发生这种情况,网络将永远不会收敛到真正的最佳权重配置。

相反,如果学习率太小,网络可能需要非常长的时间才能收敛到最佳权重。

梯度下降的类型

现在我们了解了梯度下降的一般工作原理,让我们看一下一些不同的方法 梯度下降的类型.

批量梯度下降:这种形式的梯度下降会在更新系数之前遍历所有训练样本。 这种类型的梯度下降可能是计算效率最高的梯度下降形式,因为权重仅在整个批次处理完毕后才更新,这意味着总共的更新较少。 但是,如果数据集包含大量训练样本,则批量梯度下降会使训练花费很长时间。

随机梯度下降:在随机梯度下降中,每次梯度下降和参数更新迭代仅处理单个训练示例。 每个训练示例都会发生这种情况。 由于在更新参数之前仅处理一个训练示例,因此它往往比批量梯度下降收敛得更快,因为更新速度更快。 但是,由于必须对训练集中的每个项目执行该过程,因此如果数据集很大,可能需要相当长的时间才能完成,因此如果愿意,可以使用其他梯度下降类型之一。

小批量梯度下降:小批量梯度下降通过将整个训练数据集分成几个小部分来进行操作。 它创建通过网络运行的较小的小批量,并且当使用小批量来计算误差时,系数会被更新。 小批量梯度下降介于随机梯度下降和批量梯度下降之间。 该模型的更新频率比批量梯度下降的情况更频繁,这意味着模型的最佳参数的收敛速度稍快且更稳健。 它的计算效率也比随机梯度下降更高

博主和程序员,擅长 机器学习 深度学习 主题。 丹尼尔希望帮助其他人利用人工智能的力量造福社会。