KKT条件

无约束优化

首先给出一些基本概念定义:

  1. 凸集: 欧式空间中,集合中任意两点的连线都在集合中,我们就说这个集合是凸集;
  2. 凸函数: 对于任意属于[0,1]的a和任意属于凸集的两点x, y,有 f ( a x + ( 1 − a ) y ) ≤ a ∗ f ( x ) + ( 1 − a ) ∗ f ( y ) f( ax + (1-a)y ) \le a * f(x) + (1-a) * f(y) f(ax+(1a)y)af(x)+(1a)f(y),几何上的直观理解就是两点连线上某点的函数值,大于等于两点之间某点的函数值。凸函数的任一局部极小点也是全局极小点;
  3. 半正定矩阵: 特征值大于0的实对称矩阵;
  4. 半正定矩阵的充要条件: 行列式(n阶顺序主子式)等于0,行列式的i阶顺序主子式大于等于0, 1 ≤ i ≤ n − 1 1\le i \le n-1 1in1;
  5. 凸函数的充要条件: 如果 f ( x ) f(x) f(x)在开凸集 S S S上有二阶连续偏导数,且 f ( x ) f(x) f(x)的海塞矩阵(二阶偏导矩阵)在 S S S上处处半正定,则 f ( x ) f(x) f(x) S S S上的凸函数。

为了避免函数陷入局部最优,在平时的建模中,尽量使用凸函数最为优化问题的目标函数。针对无约束优化问题的凸函数,可直接通过 f ( x ) f(x) f(x)梯度等于0来求全局极值点。

带约束优化

现考虑如下形式的优化问题:
{ min ⁡ f ( x )  s.t.  g i ( x ) < 0 , i = 1 , 2 , … , q h j ( x ) = 0 , j = q + 1 , … , m x ∈ D \left\{\begin{array}{l}\min f(x) \\ \text { s.t. } g_{i}(x)<0, i=1,2, \ldots, q \\ h_{j}(x)=0, j=q+1, \ldots, m \\ x \in D\end{array}\right. minf(x) s.t. gi(x)<0,i=1,2,,qhj(x)=0,j=q+1,,mxD
其中 f ( x ) f(x) f(x) 是目标函数, g ( x ) g(x) g(x)为不等式约束, h ( x ) h(x) h(x)为等式约束。
f ( x ) , g ( x ) , h ( x ) f(x),g(x),h(x) f(x),g(x),h(x)均为线性函数,则该优化问题为线性优化问题
若任意一个函数为非线性函数,则成为非线性规划;
若目标函数为二次函数,约束全为线性函数,则称为二次规划;
f ( x ) f(x) f(x)为凸函数, g ( x ) g(x) g(x)为凸函数, h ( x ) h(x) h(x)为线性函数,则该问题为凸优化。注意这里的不等式约束 g ( x ) ≤ 0 g(x)\le 0 g(x)0则要求 g ( x ) g(x) g(x)为凸函数,若 g ( x ) ≥ 0 g(x)\ge 0 g(x)0则要求 g ( x ) g(x) g(x)为凹函数。
凸优化的任意局部极值点也是全局极值点,局部最优也是全局最优。

等式约束

先举例说明带等式约束的问题求解方法。
目标函数 f ( x ) = x 1 + x 2 f(x)=x_1+x_2 f(x)=x1+x2,等式约束 h ( x ) = x 1 2 + x 2 2 − 2 h(x)=x_1^2+x_2^2-2 h(x)=x12+x222,求解极值点。
f ( x ) f(x) f(x)在二维平面上的等高线就是一条条斜率相同的直线, h ( x ) = 0 h(x)=0 h(x)=0在二维平面上的等高线就是一个圆,如图所示:在这里插入图片描述
可以明显的看出,在圆圈 h ( x ) h(x) h(x)的限制下,直线 f ( x ) f(x) f(x)的最小值为-2,在左下角直线 x 1 + x 2 = 2 x_1+x_2=2 x1+x2=2和圆的交点上。
不考虑圆 h ( x ) h(x) h(x)的限制时, f ( x ) f(x) f(x)要得到极小值,需要往 f ( x ) f(x) f(x)的负梯度(下降最快的方向)方向走,如下左图蓝色箭头。
如果考虑圆 h ( x ) h(x) h(x)的限制,要得到极小值,需要沿着圆的切线方向走,如下右图红色粗箭头。注意这里的方向不是 h ( x ) h(x) h(x)的梯度,而是正交于 h ( x ) h(x) h(x)的梯度, h ( x ) h(x) h(x)梯度如下右图的红色细箭头。

在极小值点, f ( x ) f(x) f(x) h ( x ) h(x) h(x)的等高线是相切的。
在这里插入图片描述
在这里插入图片描述
容易发现,在关键的极小值点处, f ( x ) f(x) f(x)的负梯度和h(x)的梯度在同一直线上,如下图左下方critical point的蓝色和红色箭头所示。

注意图中所示是同向的,但是这里并不一定是同向,有可能反向(因为等式约束 h ( x ) = 0 h(x)=0 h(x)=0,把 h ( x ) h(x) h(x)变成 − h ( x ) -h(x) h(x)求解是一样的,这个时候 h ( x ) h(x) h(x)的梯度就相反了)
在这里插入图片描述
显然,要取得极小值点, f ( x ) f(x) f(x) h ( x ) h(x) h(x)的梯度要在同一条线上,即 ∇ x f ( x ∗ ) = μ ∇ x h ( x ∗ ) \nabla_{\mathbf{x}} f\left(\mathbf{x}^{*}\right)=\mu \nabla_{\mathbf{x}} h\left(\mathbf{x}^{*}\right) xf(x)=μxh(x)
综上,只要满足上面式子,并且 h ( x ) = 0 h(x)=0 h(x)=0,得到的 x x x就是要求的极小值点(或极大值点,本文只讨论极小值点)。这也就引出了经典的求解带约束问题的优化方法:拉格朗日乘子法

原问题: min ⁡ x ∈ R 2 f ( x ) \min _{\mathbf{x} \in \mathbb{R}^{2}} f(\mathbf{x}) minxR2f(x) subject to h ( x ) = 0 h(\mathbf{x})=0 h(x)=0
拉格朗日乘子: L ( x , μ ) = f ( x ) + μ h ( x ) \mathcal{L}(\mathbf{x}, \mu)=f(\mathbf{x})+\mu h(\mathbf{x}) L(x,μ)=f(x)+μh(x)
(1) ∇ x L ( x ∗ , μ ∗ ) = 0 \nabla_{\mathbf{x}} \mathcal{L}\left(\mathbf{x}^{*}, \mu^{*}\right)=\mathbf{0} xL(x,μ)=0
(2) ∇ μ L ( x ∗ , μ ∗ ) = 0 \nabla_{\mu} \mathcal{L}\left(\mathbf{x}^{*}, \mu^{*}\right)=0 μL(x,μ)=0

注意:优化问题是凸优化时,则通过上面两个条件得到的就是极小值点,而且是全局最小;否则,这连个条件只是极值点的必要条件,需要附加一个正定的条件才能变成充要条件,如下:
L ( x , μ ) = f ( x ) + μ h ( x ) \mathcal{L}(\mathbf{x}, \mu)=f(\mathbf{x})+\mu h(\mathbf{x}) L(x,μ)=f(x)+μh(x)
(1) ∇ x L ( x ∗ , μ ∗ ) = 0 \nabla_{\mathbf{x}} \mathcal{L}\left(\mathbf{x}^{*}, \mu^{*}\right)=\mathbf{0} xL(x,μ)=0
(2) ∇ μ L ( x ∗ , μ ∗ ) = 0 \nabla_{\mu} \mathcal{L}\left(\mathbf{x}^{*}, \mu^{*}\right)=0 μL(x,μ)=0
(3) y t ( ∇ x x 2 L ( x ∗ , μ ∗ ) ) y ≥ 0 ∀ y \mathbf{y}^{t}\left(\nabla_{\mathbf{x x}}^{2} \mathcal{L}\left(\mathbf{x}^{*}, \mu^{*}\right)\right) \mathbf{y} \geq 0 \quad \forall \mathbf{y} yt(xx2L(x,μ))y0y s.t. ∇ x h ( x ∗ ) t y = 0 \nabla_{\mathbf{x}} h\left(\mathbf{x}^{*}\right)^{t} \mathbf{y}=0 xh(x)ty=0

不等式约束

对于不等式约束 g ( x ) ≤ 0 g(x)\le 0 g(x)0,和等式约束 h ( x ) = 0 h(x)=0 h(x)=0不一样, h ( x ) = 0 h(x)=0 h(x)=0可以在平面上画出一条等高线,而 g ( x ) ≤ 0 g(x) \le 0 g(x)0是一个区域,很多个等高线堆叠而成的一块区域,我们把这块区域称为可行域。不等式约束分两种情况来讨论,第一种是(不考虑可行域限制时的)极小值点落在可行域内(不包含边界),第二种是(不考虑可行域限制时的)极小值点落在可行域外(包含边界)。下面举两个例子来解释这两种情况,然后总结两种情况给出转换求解。

极值点落在可行域内(不包含边界):
考虑目标函数 f ( x ) = x 1 2 + x 2 2 f(x)=x^2_1+x^2_2 f(x)=x12+x22,不等值约束 g ( x ) = x 1 2 + x 2 2 − 1 g(x)=x^2_1+x^2_2−1 g(x)=x12+x221,显然f(x)的极小值为原点 ( 0 , 0 ) (0,0) (0,0),落在可行域内。可行域以原点为圆心,半径为1。这种情况约束不起作用,考虑极小值点 x ∗ x^* x,这个时候, g ( x ∗ ) < 0 g(x^*) < 0 g(x)<0 f ( x ∗ ) f(x^*) f(x)的梯度等于0。
在这里插入图片描述
极值点落在可行域外(包含边界)
考虑目标函数 f ( x ) = ( x 1 − 1.1 ) 2 + ( x 2 + 1.1 ) 2 f(x)=(x_1−1.1)^2+(x_2+1.1)^2 f(x)=(x11.1)2+(x2+1.1)2 ,不等值约束 g ( x ) = x 1 2 + x 2 2 − 1 g(x)=x^2_1+x^2_2−1 g(x)=x12+x221,显然 f ( x ) f(x) f(x)的极小值为原点 ( 1.1 , − 1.1 ) (1.1, -1.1) (1.1,1.1),落在可行域外。可行域以原点为圆心,半径为1。
这种情况约束起作用,要考虑求解 f ( x ) f(x) f(x)在可行域内的极小值点。
对于 f ( x ) f(x) f(x)而言要沿着 f ( x ) f(x) f(x)的负梯度方向走,才能走到极小值点,如下图的蓝色箭头。
这个时候 g ( x ) g(x) g(x)的梯度往区域外发散,如下图红色箭头。
显然,走到极小值点的时候, g ( x ) g(x) g(x)的梯度和 f ( x ) f(x) f(x)的负梯度同向。因为极小值点在边界上,这个时候 g ( x ) g(x) g(x)等于0。
在这里插入图片描述
总结
极小值点落在可行域内(不包含边界):这个时候可行域的限制不起作用,相当于没有约束,直接f(x)的梯度等于0求解,这个时候 g ( x 极 小 值 点 ) < 0 g(x极小值点)<0 g(x)<0(因为落在可行域内),即:
(1) g ( x ∗ ) < 0 g\left(\mathbf{x}^{*}\right)<0 g(x)<0
(2) ∇ x f ( x ∗ ) = 0 \nabla_{\mathbf{x}} f\left(\mathbf{x}^{*}\right)=\mathbf{0} xf(x)=0

极小值点落在可行域外(包含边界):可行域的限制起作用,极小值点应该落在可行域边界上即 g ( x ) = 0 g(x)=0 g(x)=0,类似于等值约束,此时有 g ( x ) g(x) g(x)的梯度和 f ( x ) f(x) f(x)的负梯度同向,即:
(1) g ( x ∗ ) = 0 g\left(\mathbf{x}^{*}\right)=0 g(x)=0
(2) − ∇ x f ( x ∗ ) = λ ∇ x g ( x ∗ ) -\nabla_{\mathbf{x}} f\left(\mathbf{x}^{*}\right)=\lambda \nabla_{\mathbf{x}} g\left(\mathbf{x}^{*}\right) xf(x)=λxg(x) with λ > 0 \lambda>0 λ>0

总结以上两种情况,可以构造拉格朗日函数来转换求解问题。
对于不等式约束的优化,需要满足三个条件,满足这三个条件的解x*就是极小值点。
这三个条件就是著名的KKT条件,它整合了上面两种情况的条件。
优化问题: min ⁡ x ∈ R 2 f ( x ) \min _{\mathbf{x} \in \mathbb{R}^{2}} f(\mathbf{x}) minxR2f(x) subject to g ( x ) ≤ 0 g(\mathbf{x}) \leq 0 g(x)0
拉格朗日乘子: L ( x , λ ) = f ( x ) + λ g ( x ) \mathcal{L}(\mathbf{x}, \lambda)=f(\mathbf{x})+\lambda g(\mathbf{x}) L(x,λ)=f(x)+λg(x)
(1) ∇ x L ( x ∗ , λ ∗ ) = 0 \nabla_{\mathbf{x}} \mathcal{L}\left(\mathbf{x}^{*}, \lambda^{*}\right)=\mathbf{0} xL(x,λ)=0
(2) λ ∗ ≥ 0 \lambda^{*} \geq 0 λ0
(3) λ ∗ g ( x ∗ ) = 0 \lambda^{*} g\left(\mathbf{x}^{*}\right)=0 λg(x)=0

特别注意:优化问题是凸优化的话,KKT条件就是极小值点(而且是全局极小)存在的充要条件。
不是凸优化的话,KKT条件只是极小值点的必要条件,不是充分条件,KKT点是驻点,是可能的极值点。也就是说,就算求得的满足KKT条件的点,也不一定是极小值点,只是说极小值点一定满足KKT条件。
不是凸优化的话,还需要附加多一个正定的条件才能变成充要条件,如下图所示。

优化问题: min ⁡ x ∈ R 2 f ( x ) \min _{\mathbf{x} \in \mathbb{R}^{2}} f(\mathbf{x}) minxR2f(x) subject to g ( x ) ≤ 0 g(\mathbf{x}) \leq 0 g(x)0
拉格朗日乘子: L ( x , λ ) = f ( x ) + λ g ( x ) \mathcal{L}(\mathbf{x}, \lambda)=f(\mathbf{x})+\lambda g(\mathbf{x}) L(x,λ)=f(x)+λg(x)
(1) ∇ x L ( x ∗ , λ ∗ ) = 0 \nabla_{\mathbf{x}} \mathcal{L}\left(\mathbf{x}^{*}, \lambda^{*}\right)=\mathbf{0} xL(x,λ)=0
(2) λ ∗ ≥ 0 \lambda^{*} \geq 0 λ0
(3) λ ∗ g ( x ∗ ) = 0 \lambda^{*} g\left(\mathbf{x}^{*}\right)=0 λg(x)=0
(4) g ( x ∗ ) ≤ 0 g\left(\mathbf{x}^{*}\right) \leq 0 g(x)0
(5) Plus positive definite constraints on ∇ x x L ( x ∗ , λ ∗ ) \nabla_{\mathrm{xx}} \mathcal{L}\left(\mathrm{x}^{*}, \lambda^{*}\right) xxL(x,λ).

优化约束总结
优化问题: min ⁡ x ∈ R 2 f ( x ) \min _{\mathbf{x} \in \mathbb{R}^{2}} f(\mathbf{x}) minxR2f(x)
约束条件: h i ( x ) = 0 h_{i}(\mathbf{x})=0 hi(x)=0 for i = 1 , … , l i=1, \ldots, l i=1,,l and g j ( x ) ≤ 0 g_{j}(\mathbf{x}) \leq 0 gj(x)0 for j = 1 , … , m j=1, \ldots, m j=1,,m
拉格朗日乘子: L ( x , μ , λ ) = f ( x ) + μ t h ( x ) + λ t g ( x ) \mathcal{L}(\mathbf{x}, \boldsymbol{\mu}, \boldsymbol{\lambda})=f(\mathbf{x})+\boldsymbol{\mu}^{t} \mathbf{h}(\mathbf{x})+\boldsymbol{\lambda}^{t} \mathbf{g}(\mathbf{x}) L(x,μ,λ)=f(x)+μth(x)+λtg(x)
(1) ∇ x L ( x ∗ , μ ∗ , λ ∗ ) = 0 \nabla_{\mathbf{x}} \mathcal{L}\left(\mathrm{x}^{*}, \boldsymbol{\mu}^{*}, \boldsymbol{\lambda}^{*}\right)=\mathbf{0} xL(x,μ,λ)=0
(2) λ j ∗ ≥ 0 \lambda_{j}^{*} \geq 0 λj0 for j = 1 , … , m j=1, \ldots, m j=1,,m
(3) λ j ∗ g j ( x ∗ ) = 0 \lambda_{j}^{*} g_{j}\left(\mathbf{x}^{*}\right)=0 λjgj(x)=0 for j = 1 , … , m j=1, \ldots, m j=1,,m
(4) g j ( x ∗ ) ≤ 0 g_{j}\left(\mathbf{x}^{*}\right) \leq 0 gj(x)0 for j = 1 , … , m j=1, \ldots, m j=1,,m
(5) h ( x ∗ ) = 0 \mathbf{h}\left(\mathbf{x}^{*}\right)=\mathbf{0} h(x)=0
(6) Plus positive definite constraints on ∇ x x L ( x ∗ , λ ∗ ) \nabla_{\mathrm{xx}} \mathcal{L}\left(\mathrm{x}^{*}, \boldsymbol{\lambda}^{*}\right) xxL(x,λ).

拉格朗日对偶性
在约束优化问题中,常常用拉格朗日对偶性将原始问题转为对偶问题,通过解对偶问题来得到原始问题的解;
为什么要用对偶?
(1)满足某些条件时,对偶问题等于原问题的解(强对偶)
(2)无论原始问题是否是凸的,对偶问题都是凸优化问题

显然,在某些情况下,直接对对偶问题求解可以得到原问题的解,而且对偶问题是凸优化,易于求解。所以利用对偶来求解是很有用的。

原始问题:
{ min ⁡ f ( x )  s.t.  g i ( x ) ≤ 0 , i = 1 , 2 , ⋯   , q h j ( x ) = 0 , j = q + 1 , ⋯   , m x ∈ D \begin{cases}\min & f(x) \\ \text { s.t. } & g_{i}(x) \leq 0, \quad i=1,2, \cdots, q \\ & h_{j}(x)=0, \quad j=q+1, \cdots, m \\ & x \in D\end{cases} min s.t. f(x)gi(x)0,i=1,2,,qhj(x)=0,j=q+1,,mxD
拉格朗日函数: L ( x , α , β ) = f ( x ) + ∑ i = 1 q α i g i ( x ) + ∑ j = q + 1 m β j h j ( x ) L(x, \alpha, \beta)=f(x)+\sum_{i=1}^{q} \alpha_{i} g_{i}(x)+\sum_{j=q+1}^{m} \beta_{j} h_{j}(x) L(x,α,β)=f(x)+i=1qαigi(x)+j=q+1mβjhj(x)
考虑函数: Θ P ( x ) = max ⁡ α , β : α i ⩾ 0 L ( x , α , β ) \Theta_{P}(x)=\max _{\alpha, \beta: \alpha_{i} \geqslant 0} L(x, \alpha, \beta) ΘP(x)=maxα,β:αi0L(x,α,β)
显然满足约束时函数等于 f ( x ) f(x) f(x),不满足约束时函数等于正无穷,容易得到 Θ P ( x ) = { f ( x ) , x  satisfy constraints  + ∞ ,  others  } \Theta_{P}(x)=\left\{\begin{array}{c}f(x), x \text { satisfy constraints } \\ +\infty, \text { others }\end{array}\right\} ΘP(x)={f(x),x satisfy constraints +, others }
极小化该函数得到的 min ⁡ x Θ P ( x ) = min ⁡ x max ⁡ α , β : α i ⩾ 0 L ( x , α , β ) \min _{x} \Theta_{P}(x)=\min _{x} \max _{\alpha, \beta: \alpha_{i} \geqslant 0} L(x, \alpha, \beta) minxΘP(x)=minxmaxα,β:αi0L(x,α,β)
和原始的优化问题是等价。
同时,我们定义原始问题的最优值为 p ∗ = min ⁡ x Θ P ( x ) p^{*}=\min _{x} \Theta_{P}(x) p=minxΘP(x)

对偶问题
考虑函数 Θ D ( α , β ) = min ⁡ x L ( x , α , β ) \Theta_{D}(\alpha, \beta)=\min _{x} L(x, \alpha, \beta) ΘD(α,β)=minxL(x,α,β)
极大化该函数得到: max ⁡ α , β : α i ⩾ 0 Θ D ( α , β ) = max ⁡ α , β : α i ⩾ 0 min ⁡ x L ( x , α , β ) \max _{\alpha, \beta: \alpha_{i} \geqslant 0} \Theta_{D}(\alpha, \beta)=\max _{\alpha, \beta: \alpha_{i} \geqslant 0} \min _{x} L(x, \alpha, \beta) maxα,β:αi0ΘD(α,β)=maxα,β:αi0minxL(x,α,β)
我们把这个极大化问题视为对偶问题。
同时,我们定义对偶问题的最优值为 d ∗ = max ⁡ α , β : α i ⩾ 0 Θ D ( α , β ) d^{*}=\max _{\alpha, \beta: \alpha_{i} \geqslant 0} \Theta_{D}(\alpha, \beta) d=maxα,β:αi0ΘD(α,β)

原始问题和对偶问题的关系
可以得知 d ∗ ≤ p ∗ d^∗\le p^∗ dp,因为 p p p是先求最大的一块区域然后在这块区域求最小, d d d是先求最小的一块区域然后在这块区域求最大,最大里面的最小,总会比最小里面的最大要大(或等于)。
如果 d ∗ ≤ p ∗ d^∗\le p^∗ dp,称为弱对偶,对于所有优化问题都成立,这个时候我们可以得到原始问题的一个下界。
如果 d ∗ = p ∗ d^∗= p^∗ d=p,称为强对偶,满足某些条件才成立,这时可以用解对偶问题替代原始问题。那么满足什么样的条件可以得到强对偶呢

如果原问题是一个凸优化,并且不等式约束 g ( x ) g(x) g(x)是严格可行的,即存在 x x x对所有 i i i g i ( x ) < 0 g_i(x)<0 gi(x)<0,那么强对偶成立。这里需要注意的是,这里的条件只是强对偶成立的一种情况,对于非凸的问题也有可能是强对偶。
强对偶成立时,将拉格朗日函数分别对原变量 x x x和对偶变量 α α α β β β分别求导,令导数等于零(还需要满足KKT条件),即可求解对偶问题的解,也就求得了原问题的解。

对偶求解和拉格朗日乘子法求解
对于拉格朗日乘子法求解,当原问题是凸优化的时候,考虑满足KKT的条件,对于拉格朗日函数求导等于0即可得到解。
对于对偶问题求解,转换为对偶函数求解,为了得到原始问题的解,要求强对偶,而在强对偶(不一定满足原问题凸优化)的情况下,考虑满足KKT的条件,对于拉格朗日函数求导等于0即可得到解。
当原问题是凸优化的时候,强对偶和KKT条件是互为充要条件的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值