一.梯度
梯度是一个向量,梯度的方向指向函数在某一点上变化最快的方向上,即与最大方向导数的方向相同。梯度的模为方向导数的模。
梯度的表示与求法:
梯度的负方向是函数值下降最快的方向,因此沿着梯度向量的方向,更加容易找到函数的最大值。反过来,沿着梯度的负方向,更容易找到函数的最小值。
二.梯度下降与梯度上升
在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数f(θ)的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 -f(θ)的最大值,这时梯度上升法就派上用场了。
梯度下降的理解
下面这幅图,可以看做两座高山,我们希望能以最快的速度下山,那我们每一步需要朝向什么方向呢?假设我们从图上“+”位置开始下山,我们假定第二幅图中的方向就是下山最快的方向,那达到第二个位置的时候,相当于处在一个新起点,我们会照着第一步的方法,再选择一个新的我们认为最好的方向走第二步,如下面第三幅图所示。我们照着这种方式,一步一步走下去,直到山脚。也就是在图中,不管从哪个位置开始,每走到一个位置,就需要判断,找到最好的位置走第二步。而这种找最好位置的方法就是梯度下降算法。即每到一个位置,求解当前位置的梯度,沿着梯度的负方向(图像上当前最陡峭的位置)向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了图像的局部最低点。(注:局部最低点不一定是整个数据集的最低点)。
因为走到的是局部最低点,不是整体最低点,所以梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。而且,相近的起点,可能最终的结果也有很大差别。比如下图,虽然起点与上面情况起点相差很少,但是通过下降梯度算法,最终的位置却到了另外一个局部最低点。