提到梯度下降我们知道梯度下降算法是很多机器学习算法、深度学习算法的基础。
首先我们需要明确一些概念什么是梯度:
梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
梯度的数学定义可以看这里梯度的概念
梯度下降的基本思想
1、确定一个小目标----预测函数
就比如说我们现在有一些二维平面的样本点,横纵坐标有相关性,我们的任务就是设计一种算法让机器拟合数据
2、找到差距----代价函数
如何才能找到最优的拟合函数呢?
首先我们需要量化数据的偏离程度误差(我们比较常用的是均方误差)
其余所有点的误差都是一样的,而我们的目的是求所有点的误差的平方的平均值
我们将上面的所有式子求和再求平均值就可以得到均方误差
由于上面式子中的xi、yi都是已知的为常量,我们可以用a、b、c来代替简化上面的式子
经过上面的操作之后我们就可以得到一个形式简洁的一元二次函数,这个误差函数就表示了我们学习需要付出的代价因此常常被称为代价函数
因为a是所有横坐标的平方和所以一定为正数,这个关于w的二次函数的图像开口应向上类似下图
3、明确搜索方向----梯度计算
我们机器学习的目标是拟合出最接近训练数据的直线,也就是找到使得误差代价最小的参数w,对应在函数图像上就是最低点,这个寻找最低点的过程就是梯度下降需要完成的任务
4、大胆的往前走吗?----学习率
5、不达目标不罢休----循环迭代
梯度下降法的变体
1、BGD(批量梯度下降法)
用全部训练样本参与训练
优点是精确度高,缺点是很慢搜索代价很大
2、SGD(随机梯度下降)
每次只用一个样本进行计算
优点是速度快,缺点同样也很明显精确度不高
3、MBGD(小批量梯度下降)
综合了1和2