梯度下降直觉 - 机器是如何学习的

梯度下降法是一种求函数最小值的算法。在机器学习中,预测值和实际值之间的差称为误差。将所有数据点上的所有误差加在一起时称为成本。

当然,我们希望最小化代表此成本的函数 - 成本函数。

在机器学习中梯度下降是什么意思呢?

通过使用称为反向传播的技术来训练神经网络。梯度下降是反向传播的一个非常重要的部分。

梯度下降法是一种非常流行的方法来调整机器学习模型的参数,以达到最小的误差状态。

机器学习算法是告诉机器学习数据的行为。鉴于机器只能理解0和1,有必要通过数学模型表示数据。任何数学模型都会有一些参数,例如直线有两个参数 - 斜率和截距:y = m * x + b。

正如线性回归中所解释的那样,我们的目的是为我们的数据拟合一条直线。这本质上意味着调整参数m和b,使之符合线表示数据的方式。

上 :直线模型的参数 下:神经网络的参数

其他的数学模型也包含参数,例如神经网络中所有隐含层的权重都是该网络的参数。权重是一层神经元和另一层神经元之间连接的强度。每一个权重都成为一个需要调整的参数,以便我们的模型能够最好地表示数据并在未来给出准确的预测。

注意m和b是如何变化的。

Gradient Descent如何运作?

好了,现在我们知道梯度下降用于找到机器学习模型的最小误差(最低成本)状态,让我们看看它是如何工作的。

想象一个迷路的徒步旅行者。他在山顶附近迷路了,不知道要走哪条路。他需要从他可以走的地方找到通往山谷的路。

实质上,梯度下降也是如此。

  1. 随机选择我们的旅行者的起点。
  2. 我们测量了他站的那个点的山的坡度
  3. 我们往下走了一步
  4. 步长与该点的斜率绝对值成正比。这意味着斜率越陡步长越大。

迷路的徒步旅行者

现在让我们试着把这个类比和我们的实际问题等同起来。

  • 山=成本函数
  • 旅行者的地面位置=参数
  • 山的斜率=成本函数的导数
  • Step =改变参数
  • 如果cost函数包含2个参数,那么这座山就是三维的,看起来就像这两个参数中的一个:

数学

要了解Gradient Descent,我们需要了解以下内容

  • 参数
  • 成本函数
  • 梯度=成本函数的导数
  • 学习率
  • 更新规则

1)参数

假设我们有n + 1个参数表示

2)成本函数

成本函数基本上是用不同的方法来总结误差——预测的b/w和实际的b/w之差。我们不讨论成本函数是怎样的,我们用字母J来表示它,因为J是所有参数的函数,我们把它写成

对于1个变量情况,我们只有θ0和J(θ0)

3)梯度=斜率

为了计算斜率,我们计算该点处的损失函数的导数。下面的符号表示损失函数,即对theta_j的偏导数。

这是正斜率。如果那个徒步旅行者在左边的山峰上,他会得到一个-ve

4)学习率

学习率由字符α表示。Alpha控制我们在下降期间采取的步长有多大。由于我们的步长由上面所示的导数确定,因此alpha乘以该导数以控制步长。

如果α太小,徒步旅行者将花费太长时间来到山谷,即梯度下降将花费太长时间来收敛

非常小的alpha导致极小的步骤,导致收敛慢

如果阿尔法太大,徒步旅行者将移动得非常快,错过山谷。

大alpha不会让梯度下降收敛

5)更新规则

最后,梯度下降只不过是更新规则。更新规则同时更新所有参数。通过步长值减去参数的当前值。其公式来自于上述所有项的组合。

更新规则

注意:如果斜率为负,第二项将变为正(由于负号),这将导致参数值增加。所以当斜率为-ve时,则向右移动了一点。如果斜率是+ve,徒步旅行者向左移动一点。当斜率为0时,第二项为0,则值不变。

综上所述

  • 对所有thetas /参数进行初步猜测
  • 应用更新规则,直到成本函数达到稳定的最小值

要注意的事情

  • 梯度下降的第一步总是随机初始化。现在我们可能很幸运,将我们的theta初始化为最低限度,但这很少见。更有可能的是,我们最终可能从一个点开始它永远不会到达全局最小值。它可能会陷入局部极小值。例如,如果徒步旅行者从山顶的右侧出发,他会被困在局部的最小值中。

局部最小值问题

  • 步长:坡度越大,我们所采取的步长就越大。这是因为更陡的斜率会导致更大的导数值,θ就会使变化更大。所以越高,徒步旅行者移动得越快,当我们接近最小值时,我们就会慢下来。
  • 收敛:如果alpha太小,我们可能永远不会收敛,如果它太大,我们可能会 overshoot。下面你可以看到alpha = 0.03太慢,alpha = 0.4恰好,而alpha = 1.02太大。
  • 算法的灵活性:由于梯度下降与数学模型无关,并且仅依赖于成本函数,因此它适用于各种机器学习算法 - 线性回归,逻辑回归,神经网络等。
  • 动量:还记得局部的最小问题吗?有时人们使用动量的概念来防止GD卡住。动量项确保系统只在全局最小值上稳定。

上:Momentum让系统达到全局最小化。下:陷入局部极小值

(0)

相关推荐