代价函数
代价函数(cost function,loss function)作用是确定函数中的最优参数,使得拟合数据点的误差达到最小,即拟合效果最好。
当参数和
取不同数值时,假设函
的取值也会相应的改变,以至于损失函数的数值也会发生相应的变化。而我们的目的时让假设函数的拟合效果达到最好,即损失函数䣌数值越小越好。因此我们可以以,
和
为坐标轴来建立图像,如下图所示:
显然,在该图像的底部,即是代价函数取得最小值的点。即假设函数
的拟合效果达到最好。
但是我们该如何找到该点,其中梯度下降法便是找到该点的方法之一。
梯度下降
算法基本思想:
开始时随机选择一个参数的组合
,计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合,持续这么迭代直到求出一个局部最小值(local minimum)。
但是因为没有尝试完所有的参数组合,所以不能确定得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。
在实际算法中,常用批量梯度下降算法(Batch Gradient Descent)来同时更新多个参数
:
解释下这个更新公式:
- 是待更新的参数 ( , )
- 是学习率(learning rate),决定了代价函数在下降方向每次更新的步长
- 是代价函数对( , )的偏导数
- 因为是求偏导,所以( , )必须同步更新
可以用一句话总结这个公式:在批量梯度下降中,每一次同时让所有参数减去学习率
乘以代价函数的偏导数。
梯度下降的线性回归
我们用梯度下降算法来求平方误差代价函数的最小值,两个部分的公式如下:
当你理解了梯度下降算法的公式后,便可以看出求解的关键点就在于求出代价函数关于参数
的偏导数:
当我们在程序中求出了所有参数的偏导数后,接着就可以按照算法的逻辑来同步更新参数
,再一步步迭代下去直到找到最优解。
要注意一点,因为这里代价函数求出的偏导,在计算时需要使用到所有的训练集,因为它含有求和公式,需要累加所有训练数据的误差,所以这里的梯度下降算法也称为批量梯度下降,其中批量的意思就是每次梯度下降时都会用到所有的训练样本。