梯度下降算法

 

今天我们开始循序渐进地学习机器学习中相关的算法。在接触经典算法之前,我们先来了解下“梯度下降”算法。 
一、算法背景 
 作为一个算法演示的背景,我们还是采用上一章中提到的房屋价格和房屋大小的关系问题,不同大小的房屋对应不同的房价,我们要通过分析已有的数据样本,来预测一个新样本的房价。这里其实是监督式学习中回归问题的简单应用,如果所有的特性因变量都是一次的关系,那么就称之为一个线性回归问题。下面就是我们解决问题的基本思路: 

 首先从训练集中使用学习算法,得到一个关于问题的假设(实质是H(X)=Y的映射),然后选取一个新的房屋,由其大小预测其价格。解决这个问题还需要规定一些符号便于后面的说明,如: 
1. M:样本集,表示所有的训练集; 
2. X:输入变量,也叫做feature,这个例子里就是房屋大小; 
3. Y:输出变量,也叫做targeted variable,这个例子里就是房屋价格; 
4. (X,Y):表示一个训练样本实例; 
5. 第i个样本实例:; 

二、梯度下降 
 对于上面房屋价格和房屋大小的这个例子,如果我们仅仅考虑线性关系,那么Y应当都是X的线性关系。作为演示的例子,我们不妨设房屋大小、房间数量是房屋价格的两个线性因变量,那么我们的假设H(X)其实可以写作关于X的函数,为了方便,我们将后面所用到的公式和结果一并写在下面: 

(1)式中表示的是当考虑房屋大小和房间数量两个因变量时的线性函数,其中X0的值为1,X1表示房屋大小,X2表示房间数量; 
(2)式中的J函数,就是我们的目标函数,即如果存在一个函数可以最好的拟合现有的训练数据集M,那么所有样本在该函数上的方差一定最小,前面乘以1/2是为了后面运算化简的方便,不必细究; 
(3)式就是我们所说的梯度下降算法的更新公式,将现有训练集的所有样本考虑在内,那么变量成为了两个系数,因此我们不断变化系数以寻求使得H函数达到最小值的值,这里的是一个常变量,表示的是每次下降的步长,如果该值过小,导致算法收敛时间太长,如果该值过大,则有可能会越过最小值点; 
(4)式是仅仅考虑只有一个样本的时候得到的关于梯度下降的公式; 
(5)式是考虑有m个样本的时候的梯度下降公式; 
(6)式是随机梯度下降公式; 
 注意!梯度下降的思想其实很简单,如果将所有的样本值绘成等高线图,那么好比一个人站在其中一点,每当要迈步的时候都要考虑哪个方向迈一步可以最快下山。这里其选择的最快下山方向其实是该点的偏导数。具体如图: 


 同理,我们也可以看等高线图: 

 从上面的(5)式中我们可以看出,每次更新一次系数的时候,都需要遍历所有的样本集合进行运算,因此称为“批梯度算法”,但是如果遇到非常大的样本集合,这样无疑是十分低效的。因此我们又有了“随机梯度算法”,其思想就是每次只使用一个样本来更新所有的参数值,但是需要更新m*n次(m是样本大小,n是因变量个数),伪代码就是: 
Repeat { 
 For j = 1 to m { 
 (6)式 (for all i) 
 } 

随机梯度算法的收敛速度要比批梯度要快,但是最后收敛的未必有批梯度那么准确,也许会围绕最小值点来回摆动。由于梯度算法的核心是减去了偏导数,因此梯度算法一定会有收敛值,而且对于线性问题来说,所得的局部最小值往往就是全局最小值。

 用户通过云专线接入,用户独享网络链路,不用担心数据泄露风险;上层应用透明承载,可承载数据、语音、视频等综合应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值