大部分的机器学习模型里有直接或者间接地使用了梯度下降的算法。虽然不同的梯度下降算法在具体的实现细节上会稍有不同,但是主要的思想是大致一样的。梯度下降并不会涉及到太多太复杂的数学知识,只要稍微了解过微积分里导数的概念,就足够完全理解梯度下降的思想了。
梯度下降的目的
绝大多数的机器学习模型都会有一个损失函数。比如常见的均方误差(Mean Squared Error)损失函数:
(1)
其中,
表示样本数据的实际目标值,
表示预测函数
根据样本数据
计算出的预测值。从几何意义上来说,它可以看成预测值和实际值的平均距离的平方。(关于更多的损失函数的介绍,可以参见这篇文章。)
损失函数用来衡量机器学习模型的精确度。一般来说,损失函数的值越小,模型的精确度就越高。如果要提高机器学习模型的精确度,就需要尽可能降低损失函数的值。而降低损失函数的值,我们一般采用梯度下降这个方法。所以,梯度下降的目的,就是为了最小化损失函数。
梯度下降的原理
寻找损失函数的最低点,就像我们在山谷里行走,希望找到山谷里最低的地方。那么如何寻找损失函数的最低点呢?在这里,我们使用了微积分里导数,通过求出函数导数的值,从而找到函数下降的方向或者是最低点(极值点)。
损失函数里一般有两种参数,一种是控制输入信号量的权重(Weight, 简称