最优化理论与方法1--理论基础

读书期间没有学习过最优化理论相关的课程,因工作需要了解,机缘巧合在B站上看到了上财崔雪婷老师的课程,听了一下讲的挺不错,在此结合网络资源记录一些笔记,供自己回顾使用。因自己只为工程使用,并不求数学严谨,只求通俗易懂。附上崔老师的课程链接。https://www.bilibili.com/video/BV1m7411u72b?from=search&seid=4862713296099276815。另参考书为《最优化理论基础与方法》第二版(王燕军)

 

1. 基本概念

  1. 凸集:一个集合中任意两个点连线上的点还在这个集合中。
  2. 凸组合:若干点在某种意义下构成的非负线性组合组成的全集。
  3. 凸包:给定任意集合,包含该集合的最小凸集称为该集合的凸包
  4. 数学基础:

\( f(x) \) 是n元函数,自变量为 \( x = (x_{1}, x_{2}, ..., x_{n})^{T}\)

  • n元函数梯度(一阶导)
  • Hessian矩阵(二阶导)
  • 线性函数和二次函数的梯度、Hessian矩阵

线性函数:\( f(x) = b^{T}x\),则\( \nabla f(x) = b\),\( \nabla^{2}f(x) = 0\)

二次函数:\( f(x) = x^{T}Ax + b^{T}x + c\),这里\( A \)为对称阵,则\( \nabla f(x) = 2Ax + b\),\( \nabla^{2}f(x) = 2A\)

  • Jacobi矩阵:向量函数一阶导。

以上具体的一些数学定义可见:https://zhuanlan.zhihu.com/p/94879910?from_voters_page=true 


2. 凸集及其性质

  1. 投影定理 (TODO)
  2. 点和凸集的分离 (TODO)
  3. 支撑超平面:超平面 \( a^{T}x = b \),支撑超平面定义可见参考链接。
  4. 仿射变换:\( f(x) = Ax + b \),向量的线性运算 

3. 凸函数及其性质

凸函数的定义:凸集上函数\( f(x) \)值满足下列式子:

对于任意\( 0 \leq \alpha \leq 1\),有\( f(\alpha x + (1 - \alpha)y) \leq \alpha f(x) + (1 - \alpha) f(y)\)

形状上和通常认知的凸是相反的(因为凸优化问题通常是求最小值,所以对应凸函数是长成下凹的)。

几个重要性质:

(1)凸优化问题的局部极小值是全局极小值

(2)凸函数其Hessian矩阵半正定

以上一些重要的数学表达可见:https://zhuanlan.zhihu.com/p/95081047


4. 凸优化问题

凸优化问题:凸集上的凸函数求最小值。不等式约束的函数是凸,等式约束是线性函数。(TODO此处需要补充一个连接)

优化问题的局部解/全局解通常可以转化为其一阶二阶导数的表达形式。

https://blog.csdn.net/feilong_csdn/article/details/83476277?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162166522416780264042172%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162166522416780264042172&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-83476277.first_rank_v2_pc_rank_v29&utm_term=%E5%87%B8%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187 (凸函数及凸优化的几个比较好的性质)


5. 无约束优化

一阶必要条件:若点k是函数的一个局部解,若函数可微,那么在点k处的梯度为一个零向量。

二阶必要条件:一个点是局部解,若函数二阶可微,那么这个点的Hesse矩阵是半正定的。

最速下降,牛顿法,共轭梯度 (详细算法留在下一篇中)


6. 约束规划最优性条件

KKT条件算是最优化理论的一个核心概念,虽然崔老师讲的很形象了,但是对于非数学背景的我来说理解上还是比较吃力。这里找到一个比较形象的解释来理解KKT条件究竟是表达什么:https://www.cnblogs.com/liaohuiqiang/p/7805954.html (拉格朗日,KKT条件几何解释)。其中最关键的是理解在最优解处优化目标函数的梯度方向和等式/不等式约束梯度方向的关系,需要一致。基于这种前提,就可以通过拉格朗日函数将原有的约束优化问题转化为拉格朗日函数求极值问题。

  • 最优性条件:就是给出了最优解所要满足的条件,有些可以直接求解,有些是给找寻最优解提供一个理论依据,或者准则。
  • 等式约束:拉格朗日乘子法。这个方法把等式约束优化问题转化成了无约束优化问题,因为最后直接化成了方程组形式,所以有可能直接解出来的。
  • 不等式约束:KKT条件可以理解为拉格朗日乘子的推广。其中关于最优解在/不在\( g(x) \)约束内的讨论比较形象,其中\( \lambda g(x) = 0\)表达出了这两个必有一个为0,也对应着上述的两种情况。\( g(x) = 0\)意味着目标函数的\( f(x) \)的最小值是在约束外的,那此时约束起了作用,最优解落在约束的边界上。\( \lambda = 0\)意味着此时的最优解是靠\( \nabla f(x) = 0\)来找到的,最优解落在了\( g(x) < 0\)的范围内。

7. 对偶理论

对偶理论是最优化理论早期发展的重要产物,从方法论上来看就非常古典,由于自我感觉我大概率不会用到,所以就搞清楚出发点,细节以后需要再慢慢琢磨吧。这里就回答一个问题:对偶理论到底是在搞什么?可参考:https://zhuanlan.zhihu.com/p/158870559,其中也有很多引文可参考。上面这个问题可以引申为两个问题:

(1)为什么要研究对偶问题?:原问题非凸,或者比较难解。对偶问题一定是凸优化问题,比较好解。

(2)对偶问题怎么定义,怎么理解?定义说实话有点绕,详细的数学描述可以参考上述链接。本质上来说,是通过广义拉格朗日函数在自变量定义域外,又引入了一个参数域\( \lambda \)和\( \mu \),然后使得对偶问题是原问题的下界,那对偶问题的研究对原问题研究就变得很有价值,甚至在某些情况下等价。关于下界:原问题可以等价为在\( \lambda \)和\( \mu \)域上求先最大,再在\( x \)域上求最小。对偶问题是先在\( x \)域上求最小,再在\( \lambda \)和\( \mu \)域上求最大。所以最小值的最大值肯定比最大值的最小值要小,成为下界。《最优化理论基础与方法》82页有个图示,可以辅助理解。

这里有一个疑问:对偶问题求最优的时候,函数最优值可以求出来,但是求得的是最优时的\( \lambda \)和\( \mu \)?对应的自变量怎么办?除了最优值,我们往往更关心最优解。

这里书中强调了两种方法(次梯度法,割平面法),但是并不觉得是特定于对偶问题的,这两种方法其实也广泛应用于其他问题的求解,关于具体算法将在下一篇中记录。

你可能感兴趣的:(数学基础,机器学习,数学)