联系我们

AI 101

什么是梯度下降?

mm

更新

 on

什么是梯度下降?

如果您已经了解了如何训练神经网络,那么您几乎肯定会碰到“梯度下降”一词。 梯度下降 是优化神经网络性能,降低网络丢失/错误率的主要方法。但是,对于那些初学者来说,梯度下降可能有点难以理解 机器学习,本文将尽力为您提供有关梯度下降操作方式的直观信息。

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

什么是渐变?

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

陡峭的坡度意味着可以大大减少误差,并且模型正在快速学习,而如果坡度为零,则表明模型处于平稳状态并且无法学习。通过为模型计算梯度,运动方向(网络参数的变化),我们可以使坡度朝较小的误差方向移动。

让我们稍微转移一下隐喻,想象一下一系列的丘陵和山谷。我们想到达山脚,找到代表最低损失的山谷部分。当我们从山顶开始时,我们可以沿着山下大步,并确信我们正朝着山谷的最低点前进。

但是,当我们靠近山谷的最低点时,我们的步幅将需要变小,否则我们可能会超出真实的最低点。同样,调整网络的权重时,调整实际上有可能使它远离损失最小的点,因此调整必须随时间变小。在将山坡降到最低损失点的情况下,梯度是一个矢量/指令,详细说明了我们应采取的路径以及步幅应为多少。

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

计算梯度& 梯度下降

梯度下降 starts at a place of high loss 和 by through multiple iterations, takes steps in the direction of lowest loss, aiming to find the optimal weight configuration. Photo: Роман Сузи via Wikimedia Commons, CCY BY SA 3.0 (//commons.wikimedia.org/wiki/File:Gradient_descent_method.png)

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

损耗= f(系数)

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

增量=衍生函数(损失)

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

系数=系数– (alpha * delta)

然后,我们只是重复此过程,直到网络收敛到最低损耗点附近为止,该最低损耗点应该接近零。

为学习率(alpha)选择正确的值非常重要。选择的学习率不能太小或太大。请记住,当我们接近最低损失点时,我们的步幅必须变小,否则我们将超越最低损失的真实点并最终到达另一端。最小的损失点很小,并且如果我们的变化率太大,那么错误可能最终会再次增加。如果步长太大,则网络的性能将继续在最低损耗点附近反弹,一方面过高,另一方面又过高。如果发生这种情况,网络将永远不会收敛于真正的最佳权重配置。

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

梯度下降的类型

现在我们了解了梯度下降的总体原理,让我们看一下其中的一些不同之处 梯度下降的类型.

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

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

迷你批处理梯度下降:迷你批处理梯度下降通过将整个训练数据集划分为多个小节来进行操作。它创建了通过网络运行的较小的迷你批次,并且当使用迷你批次来计算误差时,会更新系数。迷你批量梯度下降在随机梯度下降和批量梯度下降之间处于中间位置。与“批次梯度下降”相比,该模型的更新频率更高,这意味着该模型的最佳参数收敛更快,更可靠。它也比随机梯度下降法更有效的计算

专门从事以下工作的Blogger和程序员 机器学习 深度学习 话题。 Daniel希望帮助他人将AI的力量用于社会公益。