在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。这里就对梯度下降法做一个完整的总结。
1.梯度
众所周知,在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。在向量微积分中,梯度(gradient)是一种关于多元导数的概括。平常的一元(单变量)函数的导数是标量值函数,而多元函数的梯度是向量值函数。
就像一元函数的导数表示这个函数图形的切线的斜率[3],如果多元函数在点P上的梯度不是零向量,它的方向是这个函数在P上最大增长的方向,而它的量是在这个方向上的增长率
梯度向量中的幅值和方向是与坐标的选择无关的独立量[5]。
在欧几里德空间或更一般的流形之间的多元可微映射的向量值函数的梯度推广是雅可比矩阵。在巴拿赫空间之间的函数的进一步推广是弗雷歇导数。
那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点(x0,y0),沿着梯度向量的方向就是(∂f/∂x0, ∂f/∂y0)T的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。
下面举例来讲:假设有一个房间,房间内所有点的温度由一个标量场Φ给出的,即点(x,y,z)的温度是Φ(x,y,z)。假设温度不随时间改变。然后,在房间的每一点,该点的梯度将显示变热最快的方向。梯度的大小将表示在该方向上变热的速率。考虑一座高度在(x, y)点是H(x, y)的山。H这一点的梯度是在该点坡度(或者说斜度)最陡的方向。梯度的大小告诉我们坡度到底有多陡。
梯度也可以告诉我们一个数量在不是最快变化方向的其他方向的变化速度。再次考虑山坡的例子。可以有条直接上山的路其坡度是最大的,则其坡度是梯度的大小。也可以有一条和上坡方向成一个角度的路,例如投影与水平面上的夹角为60°。则,若最陡的坡度是40%,这条路的坡度小一点,是20%,也就是40%乘以60°的余弦。
这个现象可以如下数学的表示。山的高度函数{\displaystyle H}H的梯度点积一个单位向量给出了表面在该向量的方向上的斜率。这称为方向导数。
2. 梯度下降与梯度上升
在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数,和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
梯度下降法和梯度上升法是可以互相转化的。比如我们需要求解损失函数f(θ)的最小值,这时我们需要用梯度下降法来迭代求解。但是实际上,我们可以反过来求解损失函数 -f(θ)的最大值,这时梯度上升法就派上用场了。
下面来详细总结下梯度下降法。
来源:CSDN
作者:weixin_44336910
链接:https://blog.csdn.net/weixin_44336910/article/details/103464966