数值优化(Numerical Optimization)学习系列-概述

开篇

  1. 数值优化通过迭代的方式解决优化问题,是数学建模中关键的一环。
  2. Modeling过程,需要确定优化目标、目标所依赖的变量以及变量之间的约束关系,最后通过优化算法解决问题。

基础

  1. 对于一个优化问题,通常有一个优化目标函数 f(x) x为参数变量,c(x)为约束。
  2. 最优化问题的标注形式为
    min f(x)xRns.t. Ci(x)=0 iE      Ci(x)0 iI
  3. 其中 E 表示等式集合, I 表示不等式集合
  4. 其中满足约束的解称之为 可行解

问题分类

根据目标函数或者约束函数的不同,对于最优化问题可以分为:

  • 连续/离散优化问题
  • 约束/非约束优化问题
  • 线性/非线性优化问题
  • 全局/局部优化问题
  • 随机/确定性优化问题

    了解分类规则后可以根据建模后的形式选择不同的算法。

凸优化

对于凸优化需要了解一下几个概念,详细可以参考Stephen Boyd的《凸优化》,里面对凸优化问题进行了详细的介绍。

  1. 凸集:如果集合S为凸集,当且仅当 xS, yS α(x)+(1α)(y) inS;α[0,1]
  2. 凸函数:如果函数f(x)为凸函数,当且仅当S为凸集, xS, yS; αf(x)+(1α)f(y)f(αx+(1α)y); α[0,1]
  3. 严格凸函数,凸函数能够取到非等号,即 α(0,1)
  4. 凸优化问题:对于标准形式目标函数为凸函数,等式约束为线性约束;不等式约束为凹函数。

无约束最优化问题

在机器学习中,有大量的问题可以归约为无约束最优化问题,例如线性回归、LR等。因此对于无约束问题的研究也很深入从简单的GD、SGD、TR到CG、Newton、(L-)BFGS等
1. 无约束最优化问题可以表示为 minf(x); xRn
2. 全局最优解 VS 局部最优解
* 全局最优简单理解为在整个定义域内解最小
* 局部最优:在某个邻域内解最小
3. 对于凸优化问题,任何局部最优解都是全局最优解。

局部最优解几个定理

  1. 泰勒展开公式,根据泰勒公式对于函数f(x)可以近似为
    一阶展开近似: f(x)f(x0)+f(x0)T(xx0)
    二阶展开近似: f(x)f(x0)+f(x0)T(xx0)+12(xx0)T2f(x0)(xx0)
  2. 局部最小值的一阶必要条件,如果 x 为局部最优解并且函数f一阶可导,则在 x 的邻域内 f(x)=0
  3. 局部最优解的二阶必要条件,如果 x 为局部最优解并且一阶和二阶可导,则 f(x)=0 并且 2f(x)
    证明:对于定理2,3的证明采用反证法。例如对于定理2. 假设 f(x)0 , 则根据泰勒一阶展开则可以找到 f(x)T(xx)0
  4. 局部最优的二阶充分条件:如果函数f在 x 处满足 f(x)=0 并且 2f(x) ,则 x 为局部最优解
  5. 如果函数f为凸函数,则f的任何局部最优解都为全局最优解。

优化算法概述

在后面会介绍一系列解决该问题的算法,先介绍几个简单的概念。
1. 通过数值优化算法求解,一般会给定初始点 x0,x1,x2,x3 ... xnx
2. 通常有两大类比较重要的策略 线搜索(Line Search)和信赖域(Trust Region)
3. Line Search策略:假设在某点 xk ,寻找方向 pk 和步长 α 使得 min f(xk+αpk) 最小,如果 pk 确定则只需要解决一维最优化问题就可以找到下一个搜索点,如何确定 pk 后面介绍几类策略,最简单的策略就是当前点的梯度。
4. Trust Region策略:在某店 xk 解决优化问题 min mk(xk+pk) ,其中 mk 为函数f在 xk 点的近似,同时为保证 mk 为一个较好的近似,即当 pk 远离 xk 时偏离太大,则需要保证 xk+pk 在一个可信赖的区域内;
5. 通常情况下信赖域选择为椭圆、球或者盒状区域,即一个凸集容易找到最优解。
6. 模型 mk 一般可以选择为函数f的泰勒二阶近似,即

m(xk+p)f(xk)+f(xk)Tp+12pT2Bkp
其中 Bk 为Hessian矩阵或者其近似
7. 以上两类策略的相同点是在某点 xk 通过解决一个优化问题找到下一个搜索点。LS首先选择方向 pk 通过解决一维最优化问题找到步长 α ;TR首先对步长进行约束,通过解决简单的优化问题寻找搜索方向。

线搜索中搜索方向选择

  1. 最速下降方向,即搜索方向选择为,负梯度方向: pk=fk 。由泰勒展开公式 f(xk+αpk)f(xk)+αf(xk)Tpk+12pTk2fkpk , 由于 2fk 满足正定,因此只需要 f(xk)Tpk 最小。即 minf(xk)Tpk s.t||p||=1 ;可以推出 p=fk/||fk|| 。主要问题对于复杂问题效率较慢
  2. 通用搜索方向: 从泰勒展开公式上可以看到,只要满足 fkpk0 都可以选择为搜索方向,问题是相比最速下降效率可能会较低。
  3. 牛顿方向(Nowton direction, pNk ), pNk=(2fk)1fk ,解释如下
    :mk(p)=f(xk+p)f(xk)+f(xk)Tp+12pT2fkpmin mk(p)mk(p)=0fk+f2kp=0pNk=(2fk)1fk
    关于 pNk 1) 当 2fk 正定时满足 pTfk=pT2fkp0 满足函数值下降,为有效搜索方向。2) 当 2fk 非正定时, (2fk)1 不一定存在,即使存在也不一定满足下降条件。
  4. 伪牛顿方向(Quasi-Newton 方向), pk=B1kfk ,由于Hessian矩阵计算复杂度较高而且不一定能够满足正定,可进行近似。
    f(xk+p)f(xk)+2f(xk)pxk+1=xk+psk=xk+1xkyk=fk+1fkyk=Bk+1sk()
    另外一种理解方式
    f(x)xk+1f(x)f(xk+1)+f(xk+1)T(xxk+1)+12(xxk+1)T2fk+1(xxk+1)x=xkfkfk+1+2fk+1(xkxk+1)yk=Bk+1sk
    在实际使用中一般还对 Bk+1 添加一些附加条件,例如对称、正定以及低秩等,两个比较常用的近似算法为SR1BFGS
  5. 非线性共轭梯度方向: pk=fk+βkpk1 ,后面会详细介绍该算法。

信赖域模型

  1. 对于LS中的共轭方向外,其他方向的模型均可以引入到TR中
  2. 例如,牛顿方向 mk(xk+p) 中将 Bk=0 对应于TR模型中
    minfk+Tkps.t||p||2Δkpk=Δkfk||fk||

SCALING 问题

  1. 一个poor scaled 问题是指函数f(x)在某个方向上的变化比其他方向的变化,带来更大的函数值改动。即某个方向的微小改动带来巨大函数响应,例如 f(x)=109x21+x22 对x1方向的变化比较敏感。
  2. 可以通过变量重定义的方式解决问题。
  3. 线搜索问题中的最速下降法是poor scaled算法,Newton算法也会受到影响。最速下降法对于条件数比较大的问题会带来之字迭代,收敛速度大幅下降

总结

几个重要的知识点
1. 优化问题的标准形式(后续的学习中以此为准)
2. 凸优化问题:凸集、凸函数
3. 全局最优解 VS 局部最优解
4. 局部最优解的一阶、二阶必要条件,可证明
5. 线搜索常用搜索方向;信赖域常用模型
6. poor scaled问题

猜你喜欢

转载自blog.csdn.net/fangqingan_java/article/details/46289691
今日推荐