XGBoost与GBDT(一)-几种最优化方法对比

2019-03-26  本文已影响0人  MashoO

前言

发现了作者的一个pptGBDT算法原理与系统设计简介,从头复习了一波相关的内容,写两篇记录下来.
从根本上来说, GBDT 与XGBoost最大的区别在于二者用的优化方法不一样,所以从先从最优化方法开始复习.

几种最优化算法

在生活或者工作中存在各种各样的最优化问题,比如每个企业和个人都要考虑的一个问题“在一定成本下,如何使利润最大化”等。最优化方法是一种数学方法,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最优的一些学科的总称。[2]

最优化问题通常分为两个大类:

在机器学习中,典型的做法就是选择一个合适的模型H(\theta),对该模型的损失函数L(\theta),通过最优化的方法最小化损失函数,从而求解模型的参数.
最常见的几种优化方法包括[2]:

梯度下降法

  1. 批量梯度下降(BGD)
    每次迭代使用所有样本,训练速度慢;矩阵计算可并行,凸函数全局最优.
  2. 随机梯度下降(SGD)
    每次迭代使用一个样本,速度快但是对噪声相当敏感,单样本不能代表全部.
  3. 小批量梯度下降(MBGD)
    每次迭代使用batch_size的样本.训练快,可并行,但是batch_size难以选取.增大bs跑一次epoch迭代次数减少,并行化效率提高,并且更准;坏处就是需要更大的内存,训练时间可能大大增加.
    几种梯度下降法对比

牛顿法与拟牛顿法

可以看出,虽然牛顿法收敛速度较快,但是每次迭代过程,计算海塞矩阵的逆过程相当繁琐,特别是当该矩阵维度较大时.因此就有了逆牛顿法,他使用正定矩阵来近似求海塞矩阵的逆.
拟牛顿法和梯度下降法一样只要求每一步迭代时知道目标函数的梯度,另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。常用的拟牛顿法有DFP算法和BFGS算法.此处不再赘述.
下面补充拟牛顿法的思路(摘自[3]):

  1. DFP算法
    构造D_k\approx {H_k}^{-1}利用一个原理,可逆的对称矩阵一定正定.假设算法的迭代过程为:
    <center>D_{k+1}=D_k + \Delta D_k</center>,根据这个原理,可以初始化一个D_0=I(单位矩阵), 构造一个\Delta D_k为对称矩阵.由此得到这个假设\Delta D_k=\alpha u u^T+\beta v v^T,代入到拟牛顿条件中得到
    s_k=D_{k+1}y_k=(D_k+\Delta D_k)y_k =D_{k}y_k+\alpha uu^{T}y_k+\beta vv^{T}y_k利用矩阵乘法的结合律变换后:s_k=D_k y_k+\alpha u^Ty_ku+\beta v^Ty_kv,u,v前面的部分为常数,假定\alpha u^Ty_k=1,\beta v^Ty_k=-1可以得到\alpha=\frac{1}{u^Ty_k},\beta = \frac{-1}{v^Ty_k},此外s_k=D_k y_k+u-v=>u-v=s_k-D_k y_k, 假设u=s_k, v=D_ky_k,再代回前面的式子得到\alpha=\frac{1}{{s_k}^Ty_k}, \beta=\frac{-1}{{y_k}^T{D_k}^Ty_k},将\alpha, \beta, u, v带入就可以得到\Delta D_k. 非常鸡贼.
  2. BFGS算法
    构造D_k\approx {H_k},利用拟牛顿条件左边公式,推导方式与DFP算法一致,相对来说效率比DFP算法好,此处不再赘述推导过程.
  3. L-BFGS算法
    针对BFGS进行速度上的优化,并行时效率较高.
1 优点 缺点
牛顿法 相对于梯度下降法,牛顿法使用二阶偏导数进行优化,收敛速度较快 牛顿法由于使用了二阶偏导数,要求目标函数必须一二阶偏导连续,并且具有正定的海塞矩阵.此外,计算海塞矩阵的过程又相对麻烦,计算量巨大.
拟牛顿法 收敛快,计算比牛顿法快 当样本量大时计算量过大

共轭梯度法

共轭梯度法是一种用于解决无约束凸二次规划问题的方法.

  1. 无约束凸二次规划问题
    最优化理论的内容,不是很熟.
    \underset{x}{min}f(x)=x^TQx+q^Tx
  2. 什么是共轭梯度
    假设Q\in \mathbb{R}^{n\times n}为对称正定矩阵, d_i \in \mathbb{R}^n, 满足{d_i}^T Q d_j=0, i\neq j, \forall i,j=1,2...m, 则称d_1,d_2...d_m对于Q相互共轭,称为Q-共轭方向组.
  3. 算法推导
    以一组共轭向量为更新方向最终会得到全局最小值,是共轭梯度法的最终原理.
    此处数学推导没有全部弄明白,后续再补充.
    直观地来说,因为一共n个方向,每次都消除了一个方向上的误差,经过n轮迭代,就一定可以得到正解。
    4.算法步骤
    x_0出发,依次沿d_0,d_1,...d_{k-1}进行搜索则:
    x_k = x_{i+1}+\sum_{j=i+1}^{k-1}\lambda_j d_j (i=0,1,...k-1)
    它的搜索方向是负梯度方向和上一次搜索方向的一个组合
    d_k=-g_k+\beta_{k-1} d_{k-1},其中\beta一般有两种公式
  4. 优缺点
    收敛快,计算量大,介于牛顿法与梯度下降法之间.

启发式算法

启发式方法指人在解决问题时所采取的一种根据经验规则进行发现的方法。其特点是在解决问题时,利用过去的经验,选择已经行之有效的方法,而不是系统地、以确定的步骤去寻求答案。启发式优化方法种类繁多,包括经典的模拟退火方法、遗传算法、蚁群算法以及粒子群算法等等。

拉格朗日乘数法

上面前三种算法,解决的问题都仅限于无约束的凸优化, 而拉格朗日乘数法则解决含有约束条件的优化问题,例如svm算法的解法推导.约束优化问题的一般形式是:
\underset{s.t.g(x.y.z)=0}{min/max f(x,y,z)}
这个问题可以转化成函数F(x,y,z,\lambda)=f(x,y,z)+\lambda g(x,y,z)的无条件极值问题.
对于约束条件为不等式的问题,有科学家拓展了拉格朗日乘数法.增加了kkt条件以求解.没学过最优化,这块就没法细谈了.有机会一定要补上.

参考文献

[1]Poll的笔记.常见的几种最优化方法[EB/OL].https://www.cnblogs.com/maybe2030/p/4751804.html,2015-08-23.
[2]超神冉.最优化算法——常见优化算法分类及总结[EB/OL].https://blog.csdn.net/qq997843911/article/details/83445318,2018-10-27.
[3]李航.统计学习方法[M].清华大学出版社:北京,2012:220.
[4]Ja1r0.共轭梯度法[EB/OL].https://zhuanlan.zhihu.com/p/28623599,2018-05-28.

上一篇下一篇

猜你喜欢

热点阅读