机器学习之梯度下降学习笔记

来源:互联网 发布:大数据成熟度模型 编辑:程序博客网 时间:2024/05/21 00:50


1、监督式学习的应用:梯度下降

1.1批梯度下降算法

线性回归、梯度下降与正规化方程

m:表示训练样本的数量

X:表示输入变量(也称为特征)如房子的大小

Y: 表示输出变量(也称为目标变量)如对应的价格

Θ:被称为学习算法的参数

学习算法的任务:利用训练集合选择或学习得到合适的参数值。

X,Y表示一个样本

Xi,Yi表示第i个样本

(hypothesis假设集合)hx映射到输出y(首先是讨论线性模型所以hx)有如下形式)

h(x) = θ 0+ θ 1.x1+ θ 2.x2

x0 = 1   h(x) = θ 0.x01.x1+θ 2.x2==θ Tx

n:特征数目:

h(x) = θ 0.x01.x1+θ 2.x2+....+θn.xn==θ Tx

怎样选择参数θ使我们得到h对结果(如房屋价格)更精确的预测?

对训练的数据的拟合度来得到更精确的预测,比如房屋的价格,我们需要预测的房屋价格和房屋真实价格总误差最小。

令我们要做的就是

批量梯度下降算法batch(每次迭代需要遍历整个集合,因为它是基于你的m个训练样本进行求和):

批量梯度下降法是按下面的流程进行的:
1)首先对 θ 赋值,这个值可以是随机的,也可以让 θ 是一个全零的向量。 
2)改变 θ 的值,使得J(θ)按梯度下降的方向进行减少每次选择下降最快的方向

3)第三步重复第二步的步骤,直至找到局部最低点。

 

梯度下降法有时会依赖所选取的初始值

梯度方向由 J(θ) θ的偏导数( J(θ)在 θ方向上的变化率)确定,由于求的是
结果为 :

其中a为每次更新的迭代步长,其为手动设置,不能太大以防越过最小值。

更新迭代公式

 

 

如何判定收敛到最小值?

可两次执行看最终的最小值是否有很大的变化,若没有则收敛到局部最小值

梯度下降算法如何环视四周并选取下降最陡的方向?

计算偏导的时候,求导的结果已经告诉了你下降最陡的方向。梯度下降的数学推导过程如图:

 

以上图的性质生成梯度下降算法:

总共m个训练样本,,每次更新需要计算所有样本的梯度。实际上对于线性的h(x)来说(这是一个类线性假设),其对应的J(θ)仅仅是一个二次函数,其图像并不会像上面的图像那样复杂(上面图像有多个局部最优解,取决于选取的初始向量),而此J(θ)图像类似于一个碗状,只有一个全局最优解,没有其他局部最优解。

 

当你接近最小值的时候步子会越来越小,直到最终收敛,原因是你在更新的时候你会减去步长乘以梯度,直至最终收敛,到最后梯度也会减为0,也就是说当你接近最小值的时候,梯度也会越来越小直到减为0

批量梯度下降算法batch缺点很明显:每次迭代需要遍历整个集合,因为它是基于训练的m个训练样本进行求和的计算,如果训练样本达到几十万甚至几亿的规模,显然这种方法不太适用。

 

1.2随机梯度下降算法

当样本数量非常大时,显然批量梯度下降并不试用,我们可以使用随机梯度下降算法(有时我们也称它为增量梯度下降)。算法如下:

 

迭代式子:同样的它需要对所有的i进行计算(1-n所有特征),直到算法结束的时候仅仅会使用少数样本(具体过程:使用第一个训练样本进行更新,得到新的θi接着使用第二个样本执行第二次的更新,这样调整参数的速度会快很多,因为你不需要在调整之前遍历所有的数据,每次更新只需要训练一个样本)   

大批量数据的情况下,随机梯度下降算法比批量梯度下降算法训练速度快,但是随机梯度下降算法不会精确的收敛到全局最小值,会在全局最小值周围徘徊,能够很接近全局最小值,对于我们来说这已经足够了。

 

总的来说:梯度下降迭代更新的方式有两种,一种是批梯度下降,也就是对全部的训练数据求得误差后再对 θ进行更新,另外一种是增量梯度下降,每扫描一个样本就 θ进行更新。 前一种方法能够不断收敛,后一种方法结果可能不断在收敛处徘徊。

 

以上为迭代算法求最小值,实际上对于这类特定的最小二乘回归问题或者是普通的最小二乘问题,实际上存在着其他方法取得最小值。另外一种方法可以给出参数向量的解析表达式,这样为了求参数的值就不需要进行迭代了,在下一篇进行详细阐述。

学习视频资料:http://open.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html

原创粉丝点击