数值优化

Steepest Gradient Descent:
  • constant step size : \(\tau = c\) 固定梯度大小
  • Diminishing step size: \(\tau = c/k\) 每次迭代后,梯度都减小
  • Exact line search \(\tau = \arg \mathop{\min}\limits_{\alpha} f(x^{k} + \alpha d)\)
  • Inexact line search \(\tau \in { \alpha | f(x^{k}) - f(x^{k} + \alpha d) \geq -c \cdot \alpha d^{T} \bigtriangledown f(x^{k}) }\)

Inexact line search:

Newton's Method:


用泰勒展开到Hessian矩阵,这是一个二次型函数,最低点位置就是下次迭代的点。

问题:

  1. 需要计算Hessian的逆
  2. Hessian一定是正定的,如果是半正定的,会有奇异值是有零的,没法求逆。如果是不定的,那有可能会往增大的方向迭代
  3. 原函数、一阶导和二阶导都要是连续的
Practical Newton's Method:修正阻尼牛顿法,为了解决牛顿法非凸函数的不稳定性

  1. 寻找一个严格正定的M,去接近Hessian矩阵
  2. 求d的时候,可以用dM = f(x),线性求解出d。
  3. 不需要求解Hessian矩阵

怎么求M:

  • 如果函数是凸的:
  1. 那Hessian一定是正定的。选择 M = Hessian + 很小的I矩阵
  2. \([\bigtriangledown ^{2} f(x)]d = - \bigtriangledown f(x)\)
  3. \(Md = - \bigtriangledown f(x), M = LL^{T}\), 用Cholesky分解将M分解为上三角和下三角的形式,可以很快的将d求解出来
  • 如果函数是非凸的,那么Hessian是不定的:
  1. \(Md = - \bigtriangledown f(x), M = LBL^{T}\) B是一个对角矩阵
  2. B可以由b1,b2,b3...构成; b可能由一个常数(正的)或\(R^{2*2}\)的矩阵,这个矩阵一定有2个特征值,一正一负。
  3. Bunch-Kaufman Factorization

Quasi Newton's Method:拟牛顿法,BFGS,省去Hession逆矩阵求解,仍然需要函数是凸的,而且是光滑的

  • BFGS相比较牛顿收敛次数会多一点,但是计算复杂度会下降很多
    思路依然是找一个M矩阵去贴近Hession矩阵
    \(\triangle x = x^{k+1} - x^{k}\)
    \(\triangle g = \bigtriangledown f(x^{k+1}) - \bigtriangledown f (x^{k})\)
    构建公式:
    \(\triangle g \approx M^{k+1} \triangle x\)
    \(\triangle x \approx B^{k+1} \triangle g, M^{K+1} B^{k+1} = I\)

怎么挑选B


对于非凸但平滑的BFGS优化算法:

  • 只要保证\(\triangle g^{T} \triangle x > 0; B^{0}=I\)是正定的,那么后续\(B^{k+1}\)就一定是正定的

怎么保证\(\triangle g^{T} \triangle x > 0\): Wolfe conditions

strong Wolfe conditions:

BFGS无法保证一定能够收敛到梯度为0的地方,但是也仅限于一些特定的函数的迭代初期,如果后面已经到局部的时候,BFGS基本可以到达最优点
为了防止这种现象,当然也可以加一个条件 Li and Fukushima。工程上面大多数可以不用

上面的方案在拟合\(B^{k}\)的时候,会用上所有的\(\triangle g 和 \triangle x\),如果迭代的比较远的时候,历史的信息反而会产生干扰,而且B的矩阵也会变稠密

  • 采用一个滑动窗口的形式保留\(\triangle g 和 \triangle x\)
posted @ 2023-03-09 15:42  penuel  阅读(52)  评论(0编辑  收藏  举报