《过早的优化是万恶之源》。-DonaldErvinKnuth,计算机科学家和数学家敏捷是软件开发过程中的一个众所周知的术语。它背后的基本思想很简单:快速构建→发布→获得反馈→根据反馈进行修改→重复该过程。这种方法的目标是让用户可以访问产品,并让用户通过反馈指导您以尽可能少的错误获得最好的产品。另外,改进的步骤要小,还要让用户持续参与。在某种程度上,敏捷软件开发过程涉及快速迭代。梯度下降的基本过程或多或少是相同的——尽快从一个解决方案开始,尽可能多地测量和迭代。目标梯度下降算法是一个迭代过程,它允许我们找到函数的最小值(这里不提及一些额外的注意事项)。下面的公式把整个梯度下降算法总结成一行:但是我们是怎么得到这个公式的呢?其实很简单,只包含一些高中数学知识(小编:海外高中数学?捂脸)。通过这篇文章,我们希望在线性回归模型的背景下理解和重现这个公式。机器学习模型在二维空间中有一些数据点。假设数据与一组学生的身高和体重有关。我们想预测这些数量之间的某种关系,以便我们可以预测未来新学生的体重。这本质上是监督机器学习技术的一个简单案例。现在,让我们在空间中画一条任意线并通过一些数据点。直线方程为Y=mX+b,其中m是斜率,b是直线在Y轴上的截距。预测:给定一组已知的输入及其相应的输出。机器学习模型试图根据这些数据预测新输入的输出。机器学习过程误差(Error)是两个预测??结果之间的差异。一个相关的概念是成本函数或损失函数。成本函数成本函数/损失函数评估我们的机器学习算法的性能。损失函数计算单个训练样本的误差,成本函数是损失函数在整个训练集上的平均值。因此,我交替使用这两个术语。基本上,成本函数告诉我们模型在给定m和b值的情况下“有多好”进行预测。例如,如果数据集中有N个点,并且对于所有N个数据点,我们希望最小化它的误差。所以成本函数将是总平方误差,即:N个数据点的成本函数为什么我们使用平方差而不是直接使用绝对差?因为平方差可以让我们更容易推导出一条回归线。实际上,要找到那条线,我们需要计算成本函数的一阶导数,计算绝对值的倒数比计算平方值的导数要难得多。1.最小化代价函数任何机器学习算法的目标都是最小化代价函数。这是因为实际值和预测值之间的误差越低,算法的学习效果就越好。由于我们想要低误差值,我们希望m和b的这些值产生尽可能小的误差。2.我们究竟如何最小化任意函数?仔细观察,我们的成本函数的形式为Y=X2。在笛卡尔坐标系中,这是一个抛物线方程,可以画成如下形式:.由于这是一个2D图,因此很容易找到它的最小值,但在更高维度中情况并非如此。在这些情况下,我们需要设计一种算法来定位最小值,这个算法就是梯度下降。梯度下降梯度下降是最常用的优化算法之一,也是最常用的神经网络优化方法。这是一种用于寻找函数最小值的迭代优化算法。1.直观理解假设你正沿着下图行走,当前位于绿点处。你的目标是到达最小值,也就是红点位置;但是在您所在的位置,您看不到最小值在哪里。可能的行动如下:你可以向上或向下如果你决定朝哪个方向前进,你可以迈出一大步或一小步到达那里。从本质上讲,为了达到最小值,您应该知道两件事:走哪条路以及要走多大的路。梯度下降算法可以使用导数来帮助我们有效且高效地做出这些决策。导数是源自微积分的术语,可以计算为图形在特定点的斜率。所以,如果我们有能力计算出这条切线,我们或许就能弄清楚该往哪个方向走才能达到最小值。稍后我们将对此进行更详细的介绍。2.最小值在上图中,我们可以在绿点处画一条切线,我们知道如果向上移动,我们将远离最小值,反之亦然。此外,这条切线让我们了解坡度有多陡。蓝点的斜率没有绿点的陡峭,这意味着从蓝点到最小值所需的步长比绿点小得多。3.成本函数的数学解释现在,让我们把上面描述的所有内容放到一个数学公式中。在等式y=mX+b中,m和b是它的参数。在训练过程中,他们的价值观会发生微小的变化。我们将这个小变化表示为δ。参数的值会分别以m=m-δm和b=b-δb的方式更新。这里我们的目标是找到使y=mx+b中的误差最小的m和b值,即最小化成本函数的值。重写成本函数:想法是通过计算函数的导数和斜率,我们可以找到该函数的导数/斜率。学习率达到最小值或底部时的步长称为学习率。更大的步幅/更高的学习率可以覆盖更大的区域,但有超过最小值的风险。另一方面,较小的步幅/较低的学习率需要很长时间才能达到最低点。下图演示了学习率的概念。在第三张图中,我们以最少的步数达到了最小值。这是这个问题的学习率。可以看出,当学习率太低时,需要很多步才能收敛。当学习率过高时,梯度下降将达不到最小值,如下图所示。不同学习率的实验结果可以参考:https://developers.google.com/machine-learning/crash-course/fitter/graph。导数机器学习在优化问题中使用导数。梯度下降等优化算法使用导数来实际决定是增加还是减少权重,以增加或减少目标函数。如果我们可以计算一个函数的导数,我们就知道前进的方向是使该函数最小化的方向。我们主要处理微积分中的两个概念:1.幂法则幂法则计算变量的幂次方的导数。2.链式法则链式法则用于计算复合函数的导数。链式法则可以用莱布尼兹表示法表示如下:如果变量z依赖于变量y,而变量y又依赖于变量x,则y和z是因变量,z也通过中间变量依赖于x。这称为链式法则,可以在数学上写为:让我们通过一个例子来理解:使用幂法则和链式法则求导数,我们可以计算成本函数如何随m和b变化。这就涉及到偏导数的概念,即如果一个函数有两个变量,求函数对一个变量的偏导数的方法就是把另一个变量当作常数。举个例子会更清楚:3.计算梯度下降现在我们将这些微积分规则应用于我们的原始方程,并找到成本函数关于m和b的导数。重新审视成本函数:为了简单起见,让我们去掉求和符号。这个求和部分很重要,尤其是涉及到随机梯度下降(SGD)和批量梯度下降的概念时。在批量梯度下降过程中,我们一次检查所有训练示例的错误;而在SGD期间,我们一次检查每个错误。但是,为简单起见,假设我们每次都检查每个错误。现在,让我们计算关于m和b的误差梯度:将这些值放回成本函数,并将其与学习率相乘:现在,这个等式中的2并不那么重要,因为它只是意味着我们的学习率是原来的两倍或一半。所以我们把它扔掉。所以最后整篇文章归结为两个表达梯度下降的简单方程。m1,b1=下一个位置参数;m?,b?=当前位置参数。因此,为了求解梯度,我们使用新的m和b值迭代我们的数据点并计算偏导数。这个新的梯度表示成本函数在当前位置的斜率以及我们应该移动的方向以更新我们的参数。我们更新的大小由学习率控制。总结这篇文章的目的是为了演示梯度下降的概念。我们使用梯度下降作为线性回归的优化策略。通过绘制拟合线测量学生身高和体重之间的关系。然而,重要的是要指出,选择这个线性回归示例是为了简化演示,并且梯度下降也可以与其他机器学习技术一起使用。原文链接:https://towardsdatascience.com/understanding-the-mathematics-behind-gradient-descent-dde5dc9be06e)》]点此阅读本作者更多好文
