数据分析第九篇:梯度下降详解

什么是梯度下降法

是一种基于搜索的最优法方法

下面这个图是在一维方向的求导,但是在多维的我们需要对各个维度求导,然后进行一个合并。多维中叫做梯度。

在直线上,导数代表斜率

在曲线方程中,导数代表切线斜率。也代表theta单位变化时,J相应的变化

 

 

在这一点上,导数为负值,当theta增加,J是减小的。导数可以代表方向,对应J增大的方向,我们需要J减小的话,就需要向导数的反方向

 

我们就需要theta-上面的公式,也就是theta在向右移动

 

注意:并不是一定有极值点,有时候会收敛到局部最优解

解决方案:

  1. 多次运行,随机化初始点
  2. 梯度下降法的初始点也是一个超参数

 

线性回归中的梯度下降法(批量梯度下降法)

梯度代表方向,对应J增大最快的方向。只不过

 

J需要对theta每个方向的求一个偏导数,只是因为现在J中包含多个未知数

 

越内层的损失函数取值越小

 

 

同上上面最后一步我们发现最后的梯度的大小和m是有关系的,m越大,梯度越大,为了让梯度和m无关,我们需要除以一个m。

 

梯度下降向量化数据标准化

 

简化后为:

 

4随机梯度下降法

由上面的图我们可以知道,每次求梯度的时候,都是讲m条数据全部进行了梯度的运算,当数据量比较大的时候是非常耗费性能的。

那我们能不能每次取出一条数据?

这样就不用除以m

 

- 随机梯度下降法,学习率的取值非常重要,我们希望我们的学习率是逐渐递减的

 

 

 

 

图中a,b都是随机梯度下降法中的超参数,一个比较好的取值就是a=5,b=50。上图的思想就是模拟退火的思想。

5梯度的调试

在一维的坐标中:

在红色点部分的导数约等于它左右附件的两点的连线的斜率

 

在多维的坐标中:

对每一个维度使用下面的方式,这样做的时间复杂度非常高

 

下面是调试代码的截图:

 

 

 

 

 

6梯度下降总结

批量梯度下降法:

每一次都要对所有的样本算一遍才能求出梯度

缺点:比较慢

优点:稳定,一定能够向着我们损失函数下降最快的方向前进

 

随机梯度下降法:

每一次只看一个样本就能求出梯度

优点:速度快

缺点:不稳定,每一次的方向是不确定的,甚至会向反方向前进

小批量梯度下降法:

每次取出部分样本,兼顾了前面两者的优点

 

posted @ 2017-12-07 16:07  风起了,风停了  阅读(3917)  评论(0编辑  收藏  举报