Skip to content

Latest commit

 

History

History
127 lines (64 loc) · 8.21 KB

5-concepts-gradient-descent-cost-function.md

File metadata and controls

127 lines (64 loc) · 8.21 KB

你应该了解的梯度下降和成本函数的 5 个概念

原文:www.kdnuggets.com/2020/05/5-concepts-gradient-descent-cost-function.html

这张图片是在香港的 Brick Hill(南朗山)顶端拍摄的。


我们的前三个课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业。

2. 谷歌数据分析专业证书 - 提升你的数据分析技能

3. 谷歌 IT 支持专业证书 - 支持你所在的组织的 IT


梯度下降是一种迭代优化算法,用于在机器学习中最小化损失函数。损失函数描述了给定当前参数集(权重和偏置)的模型表现如何,梯度下降用于找到最佳的参数集。我们使用梯度下降来更新我们模型的 参数。例如,参数指的是 线性回归 中的系数和神经网络中的 权重

在本文中,我将解释梯度下降和成本函数的 5 个主要概念,包括:

  • 最小化成本函数的原因

  • 梯度下降的计算方法

  • 学习率的作用

  • 批量梯度下降(BGD)

  • 随机梯度下降(SGD)

什么是成本函数?

学习神经网络的主要步骤是定义一个成本函数(也称为损失函数),它衡量网络在测试集上预测输出的效果。目标是找到一组能够最小化成本的权重和偏置。一个常用的函数是 均方误差,它测量实际值y与估计值y(预测值)之间的差异。下面回归线的方程是 hθ(x) = θ + θ1x,它只有两个参数:权重(θ1)和偏置 (θ0)

最小化成本函数

任何机器学习模型的目标是最小化成本函数。

如何最小化成本函数

我们的目标是从右上角的山(高成本)移动到左下角的深蓝色海洋(低成本)。为了获得最低的错误值,我们需要调整权重θ0**’**和‘θ1’以达到最小的误差。这是因为实际值和预测值之间的误差较低意味着算法在学习上表现良好。梯度下降是一种高效的优化算法,旨在找到函数的局部或全局最小值。

计算梯度下降

梯度下降利用微积分迭代地运行,以找到对应于给定成本函数最小值的参数的最优值。在数学上,‘导数’的技巧对最小化成本函数极为重要,因为它帮助找到最小点。导数是微积分中的一个概念,指的是函数在某一点的斜率。我们需要知道斜率,以便了解移动系数值的方向(符号),以便在下一次迭代中获得更低的成本。

θ1 会逐渐收敛到最小值。

一个函数(在我们这个例子中是J(θ))关于每个参数(在我们这个例子中是权重θ)的导数告诉我们函数对该变量的敏感度,或变量的变化如何影响函数值。因此,梯度下降***使得学习过程能够对学习到的估计值进行修正更新,将模型向最优的参数组合(θ)靠拢。成本是在每次梯度下降算法迭代中,为整个训练数据集计算的。在梯度下降中,算法的一次迭代称为一个批次,表示用于计算每次迭代的梯度的数据集中的样本总数。

导数的步骤

如果你对微积分有一些基本了解会更好,因为在这个过程中应用了偏导数和链式法则。

为了解析梯度,我们使用新的*权重 ‘θ0**’**偏差 ‘θ1’*值对数据点进行迭代,并计算偏导数。这一新的梯度告诉我们在当前位置(当前参数值)函数的斜率,以及我们应该移动的方向来更新参数。更新的大小由学习率控制。

学习率(α)

请注意,我们使用‘:=’来表示赋值或更新。

这些步骤的大小称为学习率(α),它给予我们对步骤大小的额外控制。使用较大的学习率,我们可以每一步覆盖更多的范围,但我们冒着超越最低点的风险,因为山坡的斜率不断变化。使用非常低的学习率,我们可以自信地朝负梯度方向移动,因为我们如此频繁地重新计算它。低学习率更为精确,但计算梯度耗时,因此我们需要很长时间才能到达底部。最常用的学习率有:0.001, 0.003, 0.01, 0.03, 0.1, 0.3

现在让我们讨论梯度下降算法的三种变体。它们之间的主要区别在于计算每个学习步骤的梯度时所使用的数据量。它们之间的权衡是梯度的准确性与执行每个参数更新(学习步骤)的时间复杂度。

随机梯度下降(SGD)

然而,在我们的数据集中应用典型的梯度下降优化技术存在一个缺点。由于我们必须使用所有的一百万个样本来完成一次迭代,而这必须在每次迭代中进行直到达到最小点,因此计算成本非常高。这一问题可以通过随机梯度下降来解决。

词语‘stochastic’指的是一个与随机概率相关的系统或过程。随机梯度下降利用这一概念来加速梯度下降的过程。因此,与典型的梯度下降优化方法不同,随机梯度下降在每次迭代中只使用 1 个示例的成本梯度(详细情况见下图)。虽然使用整个数据集对于以较少噪声或较少随机性的方式达到最小值非常有用,但当我们的数据集非常大时,就会出现问题。

两者之间的主要区别在于,随机梯度下降方法帮助我们避免了找到局部极值或局部最小值而不是整体全局最小值的问题。

如前所述,随机梯度下降方法一次处理一轮或一行数据,因此,其波动性远高于批量梯度下降。

梯度下降算法的三种变体

  • 批量梯度下降(BGD):计算训练数据集中每个示例的误差,但只有在评估了所有训练示例后才更新模型。

  • 随机梯度下降(SGD):计算误差并更新模型,对训练数据集中的每个示例进行处理。

  • 小批量梯度下降:将训练数据集分成小批量,这些小批量用于计算模型误差并更新模型系数。(这是深度学习领域中最常用的梯度下降实现)

迷你批量梯度下降可以在SGD的鲁棒性和BGD的效率之间找到平衡。

总结

阅读完这篇博客后,你现在应该对梯度下降和成本函数的 5 个概念有了更好的理解:

  • 成本函数是什么,如何最小化它?

  • 如何计算梯度下降?

  • 什么是学习率?

  • 什么是批量梯度下降(BGD)?

  • 为什么随机梯度下降(SGD)在机器学习中如此重要?

更多相关话题