原问题-对偶问题-KKT条件
本文主要是对第1个视频的文字总结,原视频讲得很好。
计算实例部分可以看看第2个链接中的文章。
拉格朗日函数的直观理解
单个等式约束
- 目标函数 f ( x , y ) f(x,y) f(x,y)可以在 X-Y 平面上画等高线来表示
- 等式约束条件 y − g ( x ) = 0 y-g(x)=0 y−g(x)=0是 X-Y 平面上的一条曲线。
- 目标函数最小值一定是在曲线与等高线相切处取到,数学形式就是曲线的法线方向和 f ( x , y ) f(x,y) f(x,y)的梯度方向在同一直线上,可以通过调整 λ \lambda λ使得两者大小相等,方向相反。
多个线性不等式约束条件
- 起作用的约束条件取到等号,系数大于0,对应约束条件是紧致的
- 不起作用的约束条件取不到等号,系数等于0,对应约束条件是松弛的
- 归纳成一个式子: λ i g i ( x ∗ ) = 0 \lambda_ig_i(\mathbf{x}^*)=0 λigi(x∗)=0
原问题
min x f 0 ( x ) , x ∈ R n s.t. { f i ( x ) ⩽ 0 , i = 1 , ⋯ , m h j ( x ) = 0 , j = 1 , ⋯ , q \begin{align*} &\min_{\mathbf{x}}{f_0(\mathbf{x})},\mathbf{x}\in \mathbb{R}^n\\ &\text{s.t.}\left\{ \begin{aligned} &{f_i}({\mathbf{x}}) \leqslant 0,\quad i = 1, \cdots ,m \\ &{h_j}({\mathbf{x}}) = 0,\quad j = 1, \cdots ,q \\ \end{aligned} \right. \end{align*} xminf0(x),x∈Rns.t.{fi(x)⩽0,i=1,⋯,mhj(x)=0,j=1,⋯,q
等价于
L ( x , λ , v ) = f 0 ( x ) + ∑ i = 1 m λ i f i ( x ) + ∑ j = 1 q v j h j ( x ) min x max λ , v L ( x , λ , v ) s.t. λ ≥ 0 \begin{align*} &L(\mathbf{x},\boldsymbol{\lambda},\boldsymbol{v}) =f_0(\mathbf{x})+\sum_{i=1}^{m}{\lambda_i f_i(\mathbf{x})}+\sum_{j=1}^{q}{v_jh_j(\mathbf{x})}\\ &\min_{\mathbf{x}}{\max_{\boldsymbol{\lambda},\boldsymbol{v}}{L(\mathbf{x},\boldsymbol{\lambda},\boldsymbol{v})}} \\ &\text{s.t.} \enspace \boldsymbol{\lambda} \geq \boldsymbol{0} \end{align*} L(x,λ,v)=f0(x)+i=1∑mλifi(x)+j=1∑qvjhj(x)xminλ,vmaxL(x,λ,v)s.t.λ≥0
对偶问题
交换原问题中 min x \min_{\mathbf{x}} minx和 max λ , v \max_{\boldsymbol{\lambda},\boldsymbol{v}} maxλ,v的顺序:
g ( λ , v ) = min x L ( x , λ , v ) max λ , v g ( λ , v ) s.t. λ ≥ 0 \begin{align*} &g(\boldsymbol{\lambda},\boldsymbol{v}) =\min_{\mathbf{x}}{L(\mathbf{x},\boldsymbol{\lambda},\boldsymbol{v})}\\ &\max_{\boldsymbol{\lambda},\boldsymbol{v}}{g(\boldsymbol{\lambda},\boldsymbol{v})} \\ &\text{s.t.} \enspace \boldsymbol{\lambda} \geq \boldsymbol{0} \end{align*} g(λ,v)=xminL(x,λ,v)λ,vmaxg(λ,v)s.t.λ≥0
等价于
max λ , v g ( λ , v ) s.t. { ∇ x L ( x , λ , v ) = 0 λ ≥ 0 \begin{align*} &\max_{\boldsymbol{\lambda},\boldsymbol{v}}{g(\boldsymbol{\lambda},\boldsymbol{v})} \\ &\text{s.t.} \enspace \left\{ \begin{aligned} &\nabla_{\mathbf{x}}{L(\mathbf{x},\boldsymbol{\lambda},\boldsymbol{v})}=\boldsymbol{0} \\ &\boldsymbol{\lambda} \geq \boldsymbol{0}\\ \end{aligned} \right. \end{align*} λ,vmaxg(λ,v)s.t.{∇xL(x,λ,v)=0λ≥0
不论原问题是不是凸优化问题,其对偶问题一定是一个凸优化问题,因为
g ( λ , v ) = f 0 ( x ∗ ) + ∑ i = 1 m λ i f i ( x ∗ ) + ∑ j = 1 q v j h j ( x ∗ ) g(\boldsymbol{\lambda},\boldsymbol{v})=f_0(\mathbf{x^*})+\sum_{i=1}^{m}{\lambda_i f_i(\mathbf{x^*})}+\sum_{j=1}^{q}{v_jh_j(\mathbf{x^*})} g(λ,v)=f0(x∗)+i=1∑mλifi(x∗)+j=1∑qvjhj(x∗)
是关于 λ i \lambda_i λi和 v j v_j vj的线性函数。
对偶问题和原问题的关系
- 原问题的解 P ∗ P^* P∗一定大于等于对偶问题的解 D ∗ D^* D∗
强对偶关系
当原问题和对偶问题是强对偶关系时, P ∗ = D ∗ P^*=D^* P∗=D∗。
判断两者是否满足强对偶关系,有充分条件和必要条件。
- 充分条件——Slater条件
- 原问题是一个凸优化问题,即目标函数 f 0 ( x ) f_0(\mathbf{x}) f0(x)是一个凸函数,约束条件是一个凸集
- 同时,原问题满足Slater条件,即可行域内部存在一个点满足 f i ( x ) < 0 f_i(\mathbf{x})<0 fi(x)<0
- 必要条件——KKT条件
KKT条件有5个条件,分别保证原问题和对偶问题的约束,以及确定不等式约束是紧致还是松弛:
{ f i ( x ∗ ) ⩽ 0 , i = 1 , ⋯ , m h j ( x ∗ ) = 0 , j = 1 , ⋯ , q ∇ x L ( x ∗ , λ , v ) = 0 λ ≥ 0 λ i f i ( x ∗ ) = 0 , i = 1 , ⋯ , m \left\{ \begin{align*} &{f_i}({\mathbf{x^*}}) \leqslant 0,\quad i = 1, \cdots ,m \\ &{h_j}({\mathbf{x^*}}) = 0,\quad j = 1, \cdots ,q \\ &\nabla_{\mathbf{x}}{L(\mathbf{x^*},\boldsymbol{\lambda},\boldsymbol{v})}=\boldsymbol{0} \\ &\boldsymbol{\lambda} \geq \boldsymbol{0}\\ &\lambda_i f_i(\mathbf{x}^*)=0, i = 1, \cdots ,m \end{align*} \right. ⎩ ⎨ ⎧fi(x∗)⩽0,i=1,⋯,mhj(x∗)=0,j=1,⋯,q∇xL(x∗,λ,v)=0λ≥0λifi(x∗)=0,i=1,⋯,m
一般来说,可以把KKT条件当做充要条件使用
用KKT条件求解约束优化问题的实例
见此文中的 4.1节——数值计算实操