1. 梯度下降法[1]
梯度下降法(Gradient Decent,Steepest Decent)用于求解无约束最优化问题:
记第
更新公式:
通常的理解是,更新公式中的
2. 梯度提升
考虑这个例子:
给定训练集
一开始,我们训练了一个函数
接下来,我们要优化
以此类推,每次迭代都训练一个新的函数
停止迭代后,
这就是梯度提升的直观例子,每次迭代训练一个弱学习器,目标是误差,最后将若干个弱学习器加到一起,作为最终的模型。
问题来了,这跟梯度下降法有什么关系?为什么叫梯度提升?
我们从梯度下降法角度来看这个例子。令优化目标为
优化变量为:
对照上节的符号,
梯度是一个向量,第
梯度更新:
同样,有一个条件是不改变
也就是说,损失函数为二分之一平方误差,步长为1时,梯度下降法跟梯度提升是等价的。注意不要把梯度提升望文生义地理解成"梯度上升"。
如果把平方误差换为任意损失函数,步长换为一维搜索,就是梯度提升算法了:
梯度提升算法
给定损失函数
- 训练一个弱学习器
- 计算
-
-
-
- 训练弱学习器
来拟合
- 计算步长
- 更新
-
不收敛
- 返回
算法结束
梯度提升和梯度下降法的关系就是:殊途同归。梯度提升的目的也是梯度下降,只不过相比于普通梯度下降通过直接更新参数来梯度下降,梯度提升通过累加弱学习器来梯度下降。6-8就是"boosting",
参考资料
《统计机器学习》第1版,李航
Greedy Function Approximation: A Gradient Boosting Machine
A Gentle Introduction to Gradient Boosting
Gradient Boosting 簡介
[1]: 李航 《统计机器学习》第1版,附录A。梯度的定义见偏导数、方向导数与梯度