重要性
梯度下降算法在机器学习和深度学习中扮演者重要的角色。在构建模型时, 往往需要对数据进行学习,而梯度下降就是为了让模型更好的去学习数据从而使损失函数 (Loss Function) 的值达到最小或者尽可能的小。
理解
假设我们要训练一个具有两个输入的多元线性回归 (Multivariate Linear Regression) 模型,也就是两个输入和一个输出,其公式为

损失函数使用的是平方损失函数,其公式为

从这两个表达式中,我们可以得到损失函数和两个变量相应的系数存在这一定的关系, 如图所示

因为我们的目的是通过已知的数据让损失函数的值最小,所以我们要不断的改变相应变量的系数。 首先我们先随机的给相应变量的系数设置初始值,如图2 (红色的点表示我们随机设置的初始值的大概位置)

通过图2的箭头可以看到,为了使损失函数最小,当我们设置的相关系数的初始值下降到最底端即为我们想要的系数数值。可是,我们该如何确定下降的方向和下降的速度呢?这个时候就需要用到梯度下降的方法了。
梯度下降的公式为

根据公式,我们可以知道梯度下降算法首先是先计算相应变量系数的偏导数来确定下降的方向,然后根据学习系数 (learning rate) 来确定下降的速度。形象化表示如图3

假设v为最快下降的方向,通过求1,2系数的偏导数我们可以确定在1,2系数方向上下降最快的值,如v1和v2,从而可以得到v的方向。根据设定的下降速度,理想情况下会最终走到“谷底”。
推导
根据微积分,我们可以知道损失函数的变化量也就约等于在v1和v2方向上的变化量之和

将其用线性代数的形式表示,我们就可以得到

令系数变化量为如下公式9

带入公式8中,我们可以得到损失函数的变化量一直为负值,其损失函数的值一直在减小。因此,就可以推导出梯度下降的公式了。
网友评论