机器学习中为什么需要梯度下降?梯度下降算法缺点?_梯度下降和梯度提升(Gradient Boosting)...

1. 梯度下降法[1]

梯度下降法(Gradient Decent,Steepest Decent)用于求解无约束最优化问题:

记第

次迭代值为
,初始值为

更新公式:

在点
的梯度。
是学习率或步长,可以是定值,也可以是使得
下降最大的那个步长(一维搜索,line search):

通常的理解是,更新公式中的

是模型参数
,但其实
可以不仅仅可以是模型参数,后文会说明这一点。

2. 梯度提升

考虑这个例子:

给定训练集

,任务是训练一个函数
来拟合这个数据,损失函数是平方误差:

一开始,我们训练了一个函数

,赋给
。每个样本产生的误差,也叫残差(residual),是

接下来,我们要优化

,条件是不能改变
已有的内容,只能往
上继续添加函数。那么顺其自然就想到了再训练一个函数
来填补误差,即
的目标从
变成了
。然后把
添加到
。然后误差变为新的

以此类推,每次迭代都训练一个新的函数

,目标是误差
,然后把新的函数
添加到

停止迭代后,

就是若干个函数的和:

这就是梯度提升的直观例子,每次迭代训练一个弱学习器,目标是误差,最后将若干个弱学习器加到一起,作为最终的模型。

问题来了,这跟梯度下降法有什么关系?为什么叫梯度提升?

我们从梯度下降法角度来看这个例子。令优化目标为

优化变量为:

对照上节的符号,

的第
个元素是
。这就是之前说的,
可以不仅可以是模型参数,还可以直接是模型输出。

梯度是一个向量,第

维是
的偏导数:

梯度更新:

时,有

同样,有一个条件是不改变

已有的内容,只能往
上继续添加函数,所以不能把
消掉。这个更新公式的意思是,把函数的输出再加上一个误差。为了达到这个目的,就需要新训练一个函数来拟合误差,然后将函数加到
上。

也就是说,损失函数为二分之一平方误差,步长为1时,梯度下降法跟梯度提升是等价的。注意不要把梯度提升望文生义地理解成"梯度上升"。

如果把平方误差换为任意损失函数,步长换为一维搜索,就是梯度提升算法了:

梯度提升算法

给定损失函数

,数据
,输出模型
。 记
  1. 训练一个弱学习器
  2. 计算
  3. ​ 训练弱学习器
    来拟合
  4. ​ 计算步长
  5. ​ 更新
  6. 不收敛
  7. 返回

算法结束

梯度提升和梯度下降法的关系就是:殊途同归。梯度提升的目的也是梯度下降,只不过相比于普通梯度下降通过直接更新参数来梯度下降,梯度提升通过累加弱学习器来梯度下降。6-8就是"boosting",

叫做boost,所以叫梯度提升。

参考资料

《统计机器学习》第1版,李航

Greedy Function Approximation: A Gradient Boosting Machine

A Gentle Introduction to Gradient Boosting

Gradient Boosting 簡介


[1]: 李航 《统计机器学习》第1版,附录A。梯度的定义见偏导数、方向导数与梯度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值