数据分析第九篇:梯度下降详解
1 什么是梯度下降法
是一种基于搜索的最优法方法
下面这个图是在一维方向的求导,但是在多维的我们需要对各个维度求导,然后进行一个合并。多维中叫做梯度。
在直线上,导数代表斜率
在曲线方程中,导数代表切线斜率。也代表theta单位变化时,J相应的变化
在这一点上,导数为负值,当theta增加,J是减小的。导数可以代表方向,对应J增大的方向,我们需要J减小的话,就需要向导数的反方向
我们就需要theta-上面的公式,也就是theta在向右移动
注意:并不是一定有极值点,有时候会收敛到局部最优解
解决方案:
- 多次运行,随机化初始点
- 梯度下降法的初始点也是一个超参数
2 线性回归中的梯度下降法(批量梯度下降法)
梯度代表方向,对应J增大最快的方向。只不过
J需要对theta每个方向的求一个偏导数,只是因为现在J中包含多个未知数
越内层的损失函数取值越小
同上上面最后一步我们发现最后的梯度的大小和m是有关系的,m越大,梯度越大,为了让梯度和m无关,我们需要除以一个m。
3 梯度下降向量化和数据标准化
简化后为:
4随机梯度下降法
由上面的图我们可以知道,每次求梯度的时候,都是讲m条数据全部进行了梯度的运算,当数据量比较大的时候是非常耗费性能的。
那我们能不能每次取出一条数据?
这样就不用除以m
- 随机梯度下降法,学习率的取值非常重要,我们希望我们的学习率是逐渐递减的
图中a,b都是随机梯度下降法中的超参数,一个比较好的取值就是a=5,b=50。上图的思想就是模拟退火的思想。
5梯度的调试
在一维的坐标中:
在红色点部分的导数约等于它左右附件的两点的连线的斜率
在多维的坐标中:
对每一个维度使用下面的方式,这样做的时间复杂度非常高
下面是调试代码的截图:
6梯度下降总结
批量梯度下降法:
每一次都要对所有的样本算一遍才能求出梯度
缺点:比较慢
优点:稳定,一定能够向着我们损失函数下降最快的方向前进
随机梯度下降法:
每一次只看一个样本就能求出梯度
优点:速度快
缺点:不稳定,每一次的方向是不确定的,甚至会向反方向前进
小批量梯度下降法:
每次取出部分样本,兼顾了前面两者的优点