梯度提升与梯度下降

  • 梯度是什么
  • 梯度是谁的
  • 梯度下降
  • 梯度提升
  • 总结


梯度是什么

  “梯度提升”与“梯度下降”中的“梯度”是什么?梯度是损失函数对需要求解的模型参数的导数。梯度方向是参数导数中绝对值最大的方向,因此梯度方向有两个,一个是梯度最大方向,另一个是梯度最小方向。

梯度是谁的

  “梯度”是目标函数在当前点的梯度(不是参数的梯度),因此有了目标函数、样本点,才会有梯度。

梯度下降

  在参数空间中,梯度下降是指目标函数在当前点的取值下降(最小化目标函数),参数自身沿着负梯度的方向下降。因此梯度下降,是目标函数对最优参数的搜索,其变量是参数。
  梯度下降通常用来求解这种无约束最优化问题,它是一种迭代方法:初选取参数初值(还包括算法终止距离参数和学习率参数),不断迭代,更新参数的值,进行损失函数的最小化。
  为什么梯度的负方向是函数局部下降最快的方向?下面开始证明。
  假设迭代公式为:梯度提升回归模型建模流程图_梯度下降,将梯度提升回归模型建模流程图_数据挖掘_02梯度提升回归模型建模流程图_深度学习_03处进行泰勒展开:
梯度提升回归模型建模流程图_深度学习_04
  故:
梯度提升回归模型建模流程图_机器学习_05
  则梯度提升回归模型建模流程图_梯度下降_06是函数值的变化量,因为梯度提升回归模型建模流程图_数据挖掘_07均为向量,因此梯度提升回归模型建模流程图_梯度下降_06是两个向量进行点积,而向量进行点积绝对值最大时,是两者共线的时候。故梯度提升回归模型建模流程图_数据挖掘_07方向相同,点积正方向最大;若梯度提升回归模型建模流程图_数据挖掘_07反向,点积负方向最大。
  因此,梯度的负方向是局部下降最快的方向,反之,梯度(正)方向是函数局部上升最快的方向。
所以,梯度提升回归模型建模流程图_数据挖掘_11,此时梯度提升回归模型建模流程图_数据挖掘_12是学习率(也称为步长)。
对于最终的最优解梯度提升回归模型建模流程图_数据挖掘_13梯度提升回归模型建模流程图_数据挖掘_14

梯度提升

  在函数空间中,可以借鉴梯度下降的思想,进行最优函数的搜索。梯度提升实际仍是指对于模型的目标函数在当前点的取值提升(有说梯度提升仅指GBDT,对“新函数求导”,让“新函数”沿着梯度方向变化)。
  同样,梯度提升回归模型建模流程图_梯度提升回归模型建模流程图_15
  可以看出,这个梯度变量是一个函数,通过当前函数的负梯度方向来更新函数以修正模型,是模型更优,最后累加(加法模型)的模型为近似最优函数。

  梯度提升原理:
  假设已经有T(0≤t≤T)个不完美的模型梯度提升回归模型建模流程图_机器学习_16。梯度提升算法不改变梯度提升回归模型建模流程图_机器学习_16,而是通过增加估计其f构建新的模型梯度提升回归模型建模流程图_机器学习_18来提高整体模型的效果。如何找到最优的f(x)呢?最好的f(x)应该使得梯度提升回归模型建模流程图_梯度下降_19,或者等价于梯度提升回归模型建模流程图_梯度提升回归模型建模流程图_20
  因此梯度提升算法是将梯度提升回归模型建模流程图_深度学习_21与残差梯度提升回归模型建模流程图_机器学习_22拟合。可以观察到,残差梯度提升回归模型建模流程图_机器学习_22是损失函数梯度提升回归模型建模流程图_梯度提升回归模型建模流程图_24的负梯度方向,因此可以将其推广到其他不是平方误差(分类或者排序问题)的损失函数。也就是说,梯度提升算法实际上也是一种梯度下降算法,只需要更改损失函数和梯度就可以将其推广。
  当采用平方误差损失函数时,梯度提升回归模型建模流程图_数据挖掘_25,其损失函数变为:梯度提升回归模型建模流程图_深度学习_26
  其中梯度提升回归模型建模流程图_梯度下降_27是当前模型拟合数据的残差。
  在使用更一般的损失函数时,利用损失函数的负梯度在当前模型的值
梯度提升回归模型建模流程图_深度学习_28作为提升树算法中残差的近似值,拟合一个梯度提升模型。下面开始证明。
  对函数梯度提升回归模型建模流程图_梯度提升回归模型建模流程图_29梯度提升回归模型建模流程图_机器学习_30处的泰勒展开式为:梯度提升回归模型建模流程图_梯度提升回归模型建模流程图_31,因此,损失函数梯度提升回归模型建模流程图_机器学习_32梯度提升回归模型建模流程图_深度学习_33处的泰勒展开式为:
梯度提升回归模型建模流程图_深度学习_34
  将梯度提升回归模型建模流程图_梯度下降_35带入上式,可得:
梯度提升回归模型建模流程图_机器学习_36
  因此,梯度提升回归模型建模流程图_深度学习_28应该对应于平方误差损失函数中的梯度提升回归模型建模流程图_机器学习_22,故对于平方损失函数拟合的是残差,对于一般损失函数,拟合的是残差的近似值。

总结

  1、参数与模型
  梯度提升与梯度下降算法,都是指每一轮迭代中,利用目标函数相对于模型的负梯度方向的信息来对当前模型进行更新,只是在梯度下降中,函数是以参数化形式表示,参数的更新等价于模型的更新;而在梯度提升中,模型直接定义在函数空间中,函数的优化等价于模型的优化,大大扩展了可以使用的模型种类。
  2、近似残差
  在平方误差损失函数和指数损失函数中,损失函数的负梯度在当前模型的值作为梯度提升算法中的残差,而在其他一般损失函数中,残差梯度提升回归模型建模流程图_机器学习_22是目标函数梯度提升回归模型建模流程图_梯度提升回归模型建模流程图_24的负梯度方向,因此可以将其推广到其他不是平方误差的目标函数。
  梯度提升算法是一种梯度下降算法,不同之处在于更改损失函数和求其负梯度就能将其推广,即可以将结论推广为对于一般损失函数也可以利用损失函数的负梯度近似拟合残差。