优化方法

一阶优化方法:梯度下降法
梯度下降不一定能够找到全局最优解,有可能是一个局部最优解。如果损失函数是凸函数,梯度下降法得到的解一定是全局最优解。

梯度下降法分为三类:

  • batch gradient descent
    每次更新参数使用全部的样本,当样本数目很多的时候,训练过程很慢
  • stochastic gradient descent
    每次更新参数使用一个样本,当样本数目很多的时候,训练速度快
  • mini-batch gradient descent
    每次更新参数使用小批量的样本

梯度下降法使用的是一阶信息,通俗讲就是只是用了当前点一阶导数信息决定搜索方向。
在这里插入图片描述

二阶优化方法:牛顿法
牛顿法迭代轮数远小于梯度下降法,因为其使用了二阶信息。通俗点就是利用当前点的一阶和二阶导数来决定搜索方向。
当是多变量的时候,需要Hessian矩阵的逆。

每次迭代过程中都需要计算Hessian矩阵及其逆,特别是维度很高的时候,计算量很大,因此机器学习优化问题中很少用到牛顿法。
在这里插入图片描述

拟牛顿法
上面提到牛顿法在计算Hessian矩阵及其逆的时候,计算量很大。因此很多牛顿法的变形出现了,统称拟牛顿法。

拟牛顿法的核心思想是:不用二阶导数而构造出可以近似Hessian矩阵(或Hessian矩阵的逆)的正定矩阵。最常用的拟牛顿算法如下:

  • DFP
    核心:通过迭代的方法,对 H k + 1 1 H_{k+1}^{-1} 做近似
  • BFGS
    与DFP相比,BFGS性能更佳,目前它成为求解无约束非线性优化问题最常用的方法之一。
    BFGS是采用迭代的方法,直接逼近Hessian矩阵。
  • L-BFGS
    BFGS需要用到N×N的矩阵,当N很大的时候,存储它需要很大的内存资源。L-BFGS对BFGS算法进行了近似,核心思想:不再存储完整的矩阵

拟牛顿条件:指出了用来近似的矩阵应该满足的条件
符号说明:用B表示对Hessian矩阵H的近似,用D表示对Hessian矩阵的逆 H 1 H^{-1} 的近似。
y k = H k + 1 s k y_k = H_{k+1} \cdot s_k
或者 s k = H k + 1 1 y k s_k = H_{k+1}^{-1} \cdot y_k
这就是拟牛顿条件。
因此B和D需满足:
y k = B k + 1 s k y_k = B_{k+1} \cdot s_k
s k = D k + 1 y k s_k = D_{k+1} \cdot y_k
推导过程请参考 https://blog.csdn.net/itplus/article/details/21896619

[1] https://blog.csdn.net/haolexiao/article/details/60780350
[2] https://blog.csdn.net/itplus/article/details/21896453
[3] https://www.cnblogs.com/ooon/p/5729982.html 建议批判性阅读,因为本人觉得里面有些地方是有问题的

猜你喜欢

转载自blog.csdn.net/YQMind/article/details/84798674