在监督学习的线性回归问题中,我们要在大量的数据中去拟合一条曲线,得到一个预测函数,来预测下一次的值。
那么怎么得到这个预测函数呢?我们通过不断改变假设函数中的每个参数,直到代价函数的值最小的时候,假设函数中的参数就足够“完美”了,这个时候的假设函数也就能比较准确的预测下一次的值,也就称它为预测函数。那么我们按照怎么一种规则来改变假设函数中的参数呢?梯度下降算法就是用来改变假设函数的参数的一种算法。
如果我们有一个两个参数θ1 θ2的假设函数。代价函数图如下:我们随机选取θ1 θ2的值,得到代价函数的值,我们的目标是到达图像的最低点,代价函数值最小。于是我们开始改变θ1 θ2的值,走下坡路。直到到达局部最低点。这个不断更新参数θ1 θ2的过程,就像在下山,梯度下降是不是很形象啊?
我们从最简单的例子说起:
假设函数:
代价函数:
更改θ1的公式:
在梯度下降算法公式中:α代表学习速率,是代价函数对要改变的参数求偏导。
也就是每次梯度下降(更新参数),就进行一次这样的计算
下降一步,同时修改更新所有参数。
注意!
修改每次梯度下降是同时更新所有参数。方式是左图而不是右图:
Batch Gradient Descent
Batch Each step of gradient descent uses all the training examples.
批量梯度下降的每一步都使用了所有的训练实例。
也就是每次更新一次所有的假设函数中的参数值,就使用了全部的样本数据来求代价函数的值。
如果有超大量样本数据,你的α又比较小,那效率将会……别人家里全部的电器都会说话了,你还在这里梯度下降.
所以我们还有另外一种方式
随机梯度下降是每次修改一次所有的参数,只用一个样本数据。少了算法公式中误差平方累加的过程。
区别是:批量梯度下降收敛得慢,但是收敛的比较接近目标参数值。
随机梯度下降收敛的快,可能还没有用完整套数据,就已经收敛的差不多了,但是下降震荡的幅度大,收敛不够那么接近目标参数值。
此外还有小批量梯度下降,请自行脑补。。。