最优化方法课程总结四 -- 约束优化问题之KKT条件原因及推导【深刻!】

回顾

前边内容主要总结了无约束优化问题的求解步骤,即如何找一个函数的极大值,其中凸函数具备的良好性质保证局部最优解是全局最优解。一般通过最速下降法、牛顿法、共轭梯度法进行求解(针对这些方法的不足也有很多改进)。接下来主要总结在定义域有约束时,函数的优化问题。

约束优化问题

数学模型

优化目标为:\(f(x)\),约束条件为\(g_i(x)≥0, i=1, 2, ..., m\)\(h_j(x)=0, j=1,2,...,l\),定义域为\(x∈R^n\)。可将约束条件转化为对定义域的约束,这样该问题可以转化为在指定集合上寻找函数最优解。

以下对可行域进行讨论:

  1. 集合某点的可行方向:从名字中可以看出其含义,这个方向走得通,也就是在这个方向上可以找到步长使得转移后依然在该集合内。这些方向的集合被称为可行方向锥(集)有以下表示方法\(D={d|d≠0, x∈cls, 存在\delta>0, 任意\lambda ∈(0, \delta), 有x+\lambda d ∈ S}\)
  2. 函数在某点的下降方向:与之前提到的一样,函数下降方向即用泰勒公式近似左边减右边。其下降方向锥(集)有以下表示方法:\(F_0={d|\triangledown f(x)^T d < 0}\) 下降最快的方向是负梯度方向、

可以证明集合最优性条件,局部最优解处不存在可行且下降的方向(理解:存在就可以继续走~)【这是最最重要的原则,只要掌握了该思想,利用线性系统择一性,目前涉及的所有问题都会迎刃而解】

不等式优化问题

首先考虑的是不等式约束,以下述图为例:如果选择的可行域的点在内部时,可以取到合适步长保证所有方向均为其可行方向,这时约束并没有起到作用永远可以找到方向。如果选择在边界上,约束条件才会起作用。
这时局部约束方向锥有以下表示方法 \(G_0={d|\triangledown g_i(x)^Td>0}\)。这是因为\(g(y)=g(x)+\triangledown g(x)(y-x)\),其中g(x)=0【因为现在在约束条件成立的情况下讨论即g(x)=0】,要保证新生成的点依然在可行域内就需要\(\triangledown g(x)(y-x)>0\),即为\(G_0\)的表示方法。

所以不等式优化的最优性条件即为\(F_0\)\(G_0\)交集为空集。

请出非常重要的Gordan定理:设A为m×n矩阵,那么\(Ax<0\)有解的充要条件是不存在非零向量\(y≥0\),使得\(A^Ty=0\)
显而易见,我们只要把上述问题转化为\(Ax<0\),就可以将其转化为等式方程组来求解。
根据\(F_0\)\(G_0\)交集为空和他们本身的表示方法可以得到A有以下表示方法,\(x=d\)

\[\begin{pmatrix} \triangledown f(x)^T)\\ -\triangledown g_{i_1}(x)^T)\\ ...\\ -\triangledown g_{i_s}(x)^T)\\ \end{pmatrix} \]

根据上述即可得Fritz John条件:设\(\bar{x}∈S\)\(I={i|g_i(\bar{x})},f(x),g_i(x)(i∈I)\)\(\bar{x}\)处可微,\(g_i(x)(i∉I)\)\(\bar{x}\)处连续,若\(\bar{x}\)是问题的局部最优解,则存在不全为零的数\(w_0,w_i(i∈I)\),使得

\[\left\{\begin{matrix} w_0\triangledown f(\bar{x})-\sum_{i\in I}w_i\triangledown g_i(\bar{x})\\ w_0, w_i\geqslant 0, i\in I \end{matrix}\right. \]

实际上就是将上边的那个矩阵展开成表达式的形式,上边只对积极约束做了说明,采用互补松弛条件将非积极约束引入,只要取它们对应的参数为0即可。故由以上的Fritz John条件改良得到下述定理
\(\bar{x}∈S\)\(I={i|g_i(\bar{x})},f(x),g_i(x)(i∈I)\)\(\bar{x}\)处可微,\(g_i(x)(i∉I)\)\(\bar{x}\)处连续,若\(\bar{x}\)是问题的局部最优解,则存在不全为零的数\(w_0,w_i(i∈I)\),使得

\[\left\{\begin{matrix} w_0\triangledown f(\bar{x})-\sum_{i\in I}w_i\triangledown g_i(\bar{x})\\ w_ig_i(\bar{x})=0\\ w_0, w_i\geqslant 0, i\in I \end{matrix}\right. \]

注意实际转换过程中对符号的描述,只要转化为\(Ax\leqslant 0\)跟着前边的符号走就可以了!

所以判断一个点是不是 Fritz John点的步骤就是找到对应的函数的梯度,把点带进去看能不能找到不全为零的数使得方程成立。

KKT条件

KKT条件实际上就是对刚刚说的问题进行了一定的限制(也叫作约束规格),加入了{\(\triangledown g_i(\bar{x}|i \in I)\)}线性无关,这样保证了它们的系数中一定有一个不为0,就可以对\(f(x)\)的系数进行归一化,得到以下式子\(\triangledown f(\bar{x})-\sum_{i \in I}w_i \triangledown g_i(\bar{x})=0\)。在这一基础上加上上述Fritz John定理就得到了KKT条件。
在判断一个点是否是KKT点时,先写出求导的那个方程,加上原来的约束,加上互补松弛条件就构成了KKT必要条件,进行验证求解即可。
求解的时候可以利用互补松弛条件逐个分情况计算。

一般约束问题

除了不等式约束外,还可能有等式约束。只要能描述出等式约束的可行移动,就可以结合上述套路再次进行求解。
\(g(x)=0\)刻画的是一个平面,一般可能是曲面。曲线存在切线,曲面则存在切平面,套用和之前不等式一样的思路,此时选择的是{\(d\in r^3|\triangledown h(x)^Td=0\)}
这时候就要引入新的关于线性系统择一性的定理
引理1:若系统\(Ax<0, Bx=0\)无解,则系统\(A^Ty+B^Tz=0,y\geqslant 0\),且\(y≠0\)\(z≠0\)有解。

同样道理,写出自己的A B带进去就可以得到判断条件。同样进行约束规划,又有一个系数可以归一化。这样也就得到了传说中的KKT条件。
拉格朗日函数(lagrange)则可以看做是上边等式约束的原函数的一部分。并无本质缺别。
具体可见下图:

所以KKT条件可简单分为四部分:lagrange函数梯度为0,互补条件,原始可行性,对偶可行性(系数的符号要求)
这样算出来的KKT点是不是一定是局部最优解呢?
答案是不一定。

不一定的原因在于目标函数值在临界方向上非增非减,处于一种临界状态,不一定能对求解做出贡献,归根到底还是信息量的缺失。此时引出了更高维的条件,即二阶必要条件。
计算出一个点是KKT点之后还要看看该点处的二阶Hesse矩阵是否正定,半正定则可推出局部最优解。若为正定,则是严格局部最优解。

posted @ 2021-12-31 15:21  芋圆院长  阅读(1993)  评论(1编辑  收藏  举报