最优化之凸集、凸函数、上确界、Jensen不等式、共轭函数、Fenchel不等式、拉格朗日乘子法、KKT条件、拉格朗日对偶


1.直线的向量表达

1.1 共线定理

对于任意两个向量a⃗,b⃗\vec{a}, \vec{b}a,b且b⃗≠0\vec{b} \neq 0b̸​=0,当a⃗∣∣b⃗\vec{a}||\vec{b}a∣∣b时,存在唯一实数λ\lambdaλ,使得a⃗=λb⃗\vec{a}=\lambda \vec{b}a=λb

1.2 共面定理

如果两个向量a⃗,b⃗\vec{a},\vec{b}a,b不共线,则向量p⃗\vec{p}p​与向量a⃗,b⃗\vec{a},\vec{b}a,b共面的充要条件是存在唯一的实数对x,yx,yx,y,使得
p⃗=xa⃗+yb⃗\vec{p}=x\vec{a} + y\vec{b} p​=xa+yb

1.3 直线的向量参数方程

使用上图作为参考,我们得到:
对于直线上任意第一点PPP,我们有
AP⃗=θAB⃗\vec{AP} = \theta\vec{AB} AP=θAB
(1)OP⃗=OA⃗+AP⃗=OA⃗+θAB⃗=OA⃗+θ(AO⃗+OB⃗)=OA⃗+θAO⃗+θOB⃗=OA⃗−θOA⃗+θOB⃗=(1−θ)OA⃗+θOB⃗\begin{aligned} \vec{OP} &= \vec{OA} + \vec{AP} \\ &= \vec{OA} + \theta\vec{AB}\\ &= \vec{OA} + \theta(\vec{AO} + \vec{OB}) \\ &= \vec{OA} +\theta \vec{AO} + \theta \vec{OB}\\ &=\vec{OA} - \theta \vec{OA} + \theta \vec{OB}\\ &= (1 - \theta) \vec{OA} + \theta \vec{OB}\\ \tag{1} \end{aligned} OP​=OA+AP=OA+θAB=OA+θ(AO+OB)=OA+θAO+θOB=OA−θOA+θOB=(1−θ)OA+θOB​(1)
设OOO为原点(0,0)(0,0)(0,0),假设AAA点坐标为(5,1)(5,1)(5,1),BBB点坐标为(2,3)(2,3)(2,3)。则对于θ∈R\theta \in Rθ∈R有,PPP点(x,y)(x, y)(x,y)与A,BA,BA,B两点共线。根据公式1有:
(x,y)⃗=(1−θ)⋅(5,1)⃗+θ⋅(2,3)⃗\vec{(x,y)} = (1-\theta) \cdot \vec{(5,1)} + \theta \cdot \vec{(2,3)} (x,y)​=(1−θ)⋅(5,1)​+θ⋅(2,3)​
则有
(2){x=(1−θ)⋅5+θ⋅2y=(1−θ)⋅1+θ⋅3,θ∈R\begin{cases} x = (1-\theta) \cdot 5 + \theta \cdot 2 \\ y = (1-\theta) \cdot 1 + \theta \cdot 3 \\ \end{cases} , \theta \in R \tag{2} {x=(1−θ)⋅5+θ⋅2y=(1−θ)⋅1+θ⋅3​,θ∈R(2)

当θ∈R\theta \in Rθ∈R时,点PPP即(x,y)(x,y)(x,y)表示的是过点A,BA,BA,B的直线;而当θ∈[0,1]\theta \in [0,1]θ∈[0,1]时,点PPP即(x,y)(x,y)(x,y)表示的是线段ABABAB。

对于三维平面及以上之后再补充论证。

2. 凸集

2.1 仿射集

仿射集:如通过集合CCC中任意两个不同点a,ba,ba,b的直线仍在集合CCC内,则称集合CCC为仿射集。
∀a,b∈C,∀θ∈R,则c=θ⋅a+(1−θ)⋅b∈C\forall a,b \in C, \forall \theta \in R, 则c = \theta \cdot a + (1-\theta) \cdot b \in C ∀a,b∈C,∀θ∈R,则c=θ⋅a+(1−θ)⋅b∈C

2.2 凸集

凸集:如通过集合CCC中任意两个不同点a,ba,ba,b的线段仍在集合CCC内,则称集合CCC为凸集。
∀a,b∈C,∀θ∈[0,1],则c=θ⋅a+(1−θ)⋅b∈C\forall a,b \in C, \forall \theta \in [0,1], 则c = \theta \cdot a + (1-\theta) \cdot b \in C ∀a,b∈C,∀θ∈[0,1],则c=θ⋅a+(1−θ)⋅b∈C

3. 凸函数

3.1 凸函数定义

若函数fff的定义域domfdomfdomf为凸集,且满足
∀x1,x2∈domf,θ∈[0,1],有f(θx1+(1−θ)x2)≤θf(x1)+(1−θ)f(x2)\forall x_1,x_2 \in domf, \theta \in [0,1], 有 f(\theta x_1 + (1-\theta)x_2) \leq \theta f(x_1) + (1-\theta)f(x_2) ∀x1​,x2​∈domf,θ∈[0,1],有f(θx1​+(1−θ)x2​)≤θf(x1​)+(1−θ)f(x2​)
则该函数fff为凸函数。其中,我们可以将θx1+(1−θ)x2\theta x_1 + (1-\theta)x_2θx1​+(1−θ)x2​看做公式2中计算的xxx,将θf(x1)+(1−θ)f(x2)\theta f(x_1) + (1-\theta)f(x_2)θf(x1​)+(1−θ)f(x2​)看做公式2中计算的yyy,这样的话该公式
简而言之,就是函数fff上的任意两点a,ba,ba,b连接成的线段,都在a,ba,ba,b之间函数fff取值之上。如图所示(图中的ttt与上文中θ\thetaθ相同):

如果一个函数是凸函数,那该函数的图像上方区域一定是凸集;同样的,一个函数图像的上方区域是凸集,那么该函数为凸函数。

3.2 保持函数凸性的算子
  1. 凸函数的非负加权和:
    f(x)=θ1f1(x)+θ2f2(x)+⋯+θnfn(x),θn>0f(x) = \theta_1f_1(x)+ \theta_2f_2(x) + \dots + \theta_nf_n(x),\ \theta_n > 0 f(x)=θ1​f1​(x)+θ2​f2​(x)+⋯+θn​fn​(x), θn​>0
  2. 凸函数与仿射函数的复合函数:
    y=u2是凸函数,u=ax+b(直线为仿射函数),则y=(ax+b)2为凸函数y=u^2是凸函数,u= ax+b(直线为仿射函数),则y=(ax+b)^2为凸函数 y=u2是凸函数,u=ax+b(直线为仿射函数),则y=(ax+b)2为凸函数
  3. 凸函数的逐点最大值构成的函数:
    f(x)=max{f1(x),f2(x),…,fn(x)}f(x) = max\{f_1(x),f_2(x), \dots,f_n(x)\} f(x)=max{f1​(x),f2​(x),…,fn​(x)}即选取在定义域中,各个函数对于每一点的最大值组合成的函数,同样为凸函数
  4. 凸函数的逐点上确界构成的函数

4. Jensen 不等式

Jensen不等式是将上述的凸函数性质拓展到了nnn个点上了。

对于任意点集{x1,x2,…,xn}\{x_1,x_2,\dots,x_n\}{x1​,x2​,…,xn​},若θi≥0,∑i=1nθi=1\theta_i \geq 0, \sum_{i=1}^{n}\theta_i = 1θi​≥0,∑i=1n​θi​=1,则对于凸函数f(x)f(x)f(x)有:
f(∑i=1mθixi)≤∑i=1mθif(xi)f(\sum_{i=1}^{m}\theta_ix_i) \leq \sum_{i=1}^{m}\theta_if(x_i) f(i=1∑m​θi​xi​)≤i=1∑m​θi​f(xi​)

证明用数学归纳法。

在概率论中,如果把θi\theta_iθi​看做是xix_ixi​的离散概率分布,那可以将上式改写为:
f(E[x])≤E[f(x)]f(E[x])\leq E[f(x)] f(E[x])≤E[f(x)]
其中,E[⋅]E[\cdot]E[⋅]表示数学期望。

对于连续变量,有:
f(∫xp(x)dx)≤∫f(x)p(x)dxf(\int xp(x)dx) \leq \int f(x)p(x)dx f(∫xp(x)dx)≤∫f(x)p(x)dx

5. 共轭函数(对偶函数)

定义

对于原函数(不一定是凸函数)f(x),x∈domff(x),x\in domff(x),x∈domf,其共轭函数为:
f∗(y)=sup⁡x∈domf(&lt;y,x&gt;−f(x))f^*(y) = \sup _{x\in domf}(&lt;y,x&gt;-f(x)) f∗(y)=x∈domfsup​(<y,x>−f(x))
其中,&lt;y,x&gt;&lt;y,x&gt;<y,x>为两个变量的內积

  • 对于标量:&lt;y,x&gt;=yx&lt;y,x&gt;=yx<y,x>=yx
  • 对于向量:&lt;y,x&gt;=yTx&lt;y,x&gt;=y^Tx<y,x>=yTx
  • 对于n×nn\times nn×n矩阵:&lt;y,x&gt;=tr(yx)&lt;y,x&gt;=tr(yx)<y,x>=tr(yx)
    特别注意的是,共轭函数的定义域domf∗domf^*domf∗要求对于x∈domfx\in domfx∈domf时,&lt;y,x&gt;−f(x)&lt;y,x&gt;-f(x)<y,x>−f(x)有上界,即f∗(y)f^*(y)f∗(y)不能无穷大。
物理意义

对于共轭函数f∗(y)f^*(y)f∗(y),我们可以将&lt;y,x&gt;&lt;y,x&gt;<y,x>看成是一条过原点的直线。那么yyy就可以看做是直线的斜率,一个yyy对应一条直线。

那么共轭函数的意思就是,对于每一条直线,求在原函数定义域domfdomfdomf(即xxx可以取得值中)上,直线与原函数对应点距离最大的值(上确界)。

如图:

当什么时候对于确定的直线,与原函数的差最大呢?答案是:当原函数切线与直线斜率相同的点,差值最大。

这一结论可以通过上图直接观察得出,也可通过求导得到,如下:
∂(&lt;y,x&gt;−f(x))∂x=y−f′(x)=0\frac{\partial (&lt;y,x&gt;-f(x))}{\partial x} = y - f'(x)=0 ∂x∂(<y,x>−f(x))​=y−f′(x)=0
所以通过上式我们能看到,当f′(x)=yf'(x)=yf′(x)=y时得到极值。

参看博客以及计算示例
矩阵的共轭函数计算示例

共轭函数的性质
  1. 共轭函数一定是凸函数
  2. 凸函数的共轭函数的共轭函数是其本身

6. Fenchel不等式

根据共轭函数的定义我们知道,f∗(y)f^*(y)f∗(y)是对于&lt;y,x&gt;−f(x)&lt;y,x&gt;-f(x)<y,x>−f(x)的上确界,则一定有:
f∗(y)≥&lt;y,x&gt;−f(x)f^*(y) \geq &lt;y,x&gt;-f(x) f∗(y)≥<y,x>−f(x)
则有
f(x)+f∗(y)≥&lt;y,x&gt;f(x)+f^*(y) \geq &lt;y,x&gt; f(x)+f∗(y)≥<y,x>

7. 凸优化问题

在优化问题中,凸优化问题有以下集中形式:

  1. 对于一个含约束的优化问题
    min⁡xf(x)s.t.x∈C\min_xf(x)\\ s.t.\ \ x \in C xmin​f(x)s.t.  x∈C
    其中,f(x)f(x)f(x)是一个凸函数,变量xxx的可行域CCC是一个凸集,该问题就是一个凸优化问题。
  2. 对于一个含不等式约束的优化问题
    min⁡xf(x)s.t.hi(x)=0s.t.gi(x)≤0\min_xf(x)\\ s.t. \ \ h_i(x) =0\\ s.t. \ \ g_i(x) \leq 0 xmin​f(x)s.t.  hi​(x)=0s.t.  gi​(x)≤0
    其中,f(x)f(x)f(x)是一个凸函数,gi(x)g_i(x)gi​(x)是凸函数,hi(x)h_i(x)hi​(x)是仿射函数(这样的要求是为了保证可行域是一个凸集),该问题就是一个凸优化问题。
    凸优化问题对于约束条件的要求

8. 拉格朗日乘子法

在数学中的最优化问题中,拉格朗日乘数法是一种寻求多元函数在其变量受到一个或多个等式约束条件时的极值的方法,即

x∗=arg⁡min⁡xf(x)subjecttogi(x)=0,∀i=1,2,…,kx^* = \arg \min_x f(x)\\ subject\ to\ g_i(x) = 0, \forall i = 1,2,\dots,k x∗=argxmin​f(x)subject to gi​(x)=0,∀i=1,2,…,k

这种方法可以将一个有nnn个变量与kkk个约束条件的最优化问题转换为一个解有n+kn+kn+k个变量的方程组的解的问题。

这种方法中引入了一个或一组新的未知数,即拉格朗日乘数,又称拉格朗日乘子,他们是转换后的方程,即约束方程中作为梯度的线性组合中各个向量的系数。

比如,求f(x,y)f(x,y)f(x,y)在g(x,y)=0g(x,y)=0g(x,y)=0是的最大值是,我们引入新的变量拉格朗日乘数λ\lambdaλ,这时我们只需要求解下列拉格朗日函数的取得极值时的λ\lambdaλ即可得到所需的函数极值。

L(x,y,λ)=f(x,y)+λ(g(x,y))L(x,y,\lambda) = f(x,y) + \lambda(g(x,y)) L(x,y,λ)=f(x,y)+λ(g(x,y))

更一般地,对于含有nnn个变量和kkk个约束的情况,有:
L(x1,…,xn,λ1,…,λk)=f(x1,…,xn)−∑i=1kλi(gi(x1,…,xn))L(x_1,\dots,x_n,\lambda_1,\dots,\lambda_k) = f(x_1,\dots,x_n)-\sum_{i=1}^{k}\lambda_i(g_i(x_1,\dots,x_n)) L(x1​,…,xn​,λ1​,…,λk​)=f(x1​,…,xn​)−i=1∑k​λi​(gi​(x1​,…,xn​))
通过求导计算
∇L(x1,…,xn,λ1,…,λk)=0\nabla L(x_1,\dots,x_n,\lambda_1,\dots,\lambda_k)=0 ∇L(x1​,…,xn​,λ1​,…,λk​)=0
得到方程组,解方程组即可求得多组满足约束的点,将各个解带入原方程f(x1,…,xn)f(x_1,\dots,x_n)f(x1​,…,xn​),其中最大(小)的值即为所求的在满足约束情况下的极值。

为什么这样做可以求得最优化解?


如图所示,当满足约束条件g(x,y)=0g(x,y)=0g(x,y)=0时,只有满足的这一点与f(x,y)f(x,y)f(x,y)的等高线相切,才可能是极值。因为如果只是相交的话,那必定在该点的两侧中,有其他的点,使得f(x,y)f(x,y)f(x,y)取值更大。

通过上述,可将问题转化为:

找到g(x,y)=0g(x,y)=0g(x,y)=0上的一点,这一点g(x,y)=0g(x,y)=0g(x,y)=0和f(x,y)=df(x,y)=df(x,y)=d的梯度共线。
可将这句话拆分成三个条件
g(x,y)=0∂f(x,y)∂x=λ∂g(x,y)∂x∂f(x,y)∂y=λ∂g(x,y)∂yg(x,y)=0\\ \frac{\partial f(x,y)}{\partial x}=\lambda \frac{\partial g(x,y)}{\partial x}\\ \frac{\partial f(x,y)}{\partial y}=\lambda \frac{\partial g(x,y)}{\partial y} g(x,y)=0∂x∂f(x,y)​=λ∂x∂g(x,y)​∂y∂f(x,y)​=λ∂y∂g(x,y)​
这三个式子其实就是按照拉格朗日乘子法构建的新函数的梯度等于零时的方程组:
∇L(x,y,λ)=0\nabla L(x,y,\lambda)=0 ∇L(x,y,λ)=0

例子 1


例子 2


凸优化中为什么要用到拉格朗日乘子法?

对于普通的优化问题,我们可以直接使用求导来计算函数的极小值。

但是,当有几个约束条件之后,原函数是什么样子,我们很难搞清楚了。即使通过使用消元法,有时往往也难以求解。

这时,使用拉格朗日乘子法,能够较为方便的求解函数的极值。

9. KKT条件

上面的拉格朗日乘子法能够解决在有等式约束条件下的最优化求值问题。Karush-Kuhn-Tucker(KKT)条件将拉格朗日乘子法扩展到了有不等式约束条件下时的最优化求值问题。

问题用数学公式表示为:
x∗=arg⁡min⁡xf(x)subjecttohi(x)=0,∀i=1,2,…,msubjecttogi(x)≤0,∀i=1,2,…,nx^* = \arg \min_x f(x)\\ subject\ to\ h_i(x)=0,\forall i = 1,2,\dots,m\\ subject\ to\ g_i(x)\leq 0,\forall i = 1,2,\dots,n x∗=argxmin​f(x)subject to hi​(x)=0,∀i=1,2,…,msubject to gi​(x)≤0,∀i=1,2,…,n

这里,我们一般求解最优化问题的时候,并不在意最大值和最小值的值是多少,而是极值点的是什么,因此上述问题中用x∗=arg⁡min⁡xf(x)x^* = \arg \min_x f(x)x∗=argminx​f(x)来表示问题。

同样的,为了求解在有mmm个等式约束hi(x)h_i(x)hi​(x)和nnn个不等式约束gi(x)g_i(x)gi​(x)的情况下f(x)f(x)f(x)的最优解。我们将问题转换成 :

把损失函数和约束条件放到同一个最小化问题中,在等式约束前乘以拉格朗日乘数λi\lambda_iλi​,在不等式约束前乘以KKT乘数μi\mu_iμi​,从而得到如下最优化问题 (generalized lagrange function)

x∗=arg⁡min⁡xL(x,λ,μ)=arg⁡min⁡xf(x)+∑i=1mλihi(x)+∑i=1nμigi(x)x^* = \arg\min_x L(x, \lambda,\mu) = \arg \min_x f(x)+\sum_{i=1}^{m}\lambda_ih_i(x)+\sum_{i=1}^{n}\mu_ig_i(x) x∗=argxmin​L(x,λ,μ)=argxmin​f(x)+i=1∑m​λi​hi​(x)+i=1∑n​μi​gi​(x)

针对上述最优化问题,该如何求解呢?

  1. 通过对xxx求梯度,我们能够得到对应xxx中变量个数的方程
  2. 对于等式约束,求关于拉格朗日乘数的偏导等于0,可以得到mmm个方程,这些方程使得解xxx满足这些等式约束条件。
  3. 对于不等式约束,有两种情况:
    1)极值点在不等式约束范围内,即gi(x∗)&lt;0g_i(x^*) &lt; 0gi​(x∗)<0,那么该约束对于极值的选择没有约束作用,我们可以将其对应的KKT乘数μi=0\mu_i=0μi​=0。
    2)极值点在不等式约束的边上,即gi(x∗)=0g_i(x^*) = 0gi​(x∗)=0,那么该约束就变成了与拉格朗日乘数相同的情况。
    以上两种情况,都对应了方程μigi(x)=0\mu_ig_i(x)=0μi​gi​(x)=0,因此,其对于新构建的方程的求解是必须的,则可以作为KKT条件之一,并得到nnn个方程
  4. 对于μigi(x)=0\mu_ig_i(x)=0μi​gi​(x)=0中的μi\mu_iμi​,并不想λi\lambda_iλi​一样可以取任意值。因为当μi\mu_iμi​不为0的时候,根据f(x)和g(x)f(x)和g(x)f(x)和g(x)的梯度,我们能得到μi&gt;0\mu_i&gt;0μi​>0。(为什么梯度∇xf(x)和梯度∇xg(x)\nabla_x f(x)和梯度\nabla_x g(x)∇x​f(x)和梯度∇x​g(x)一定是相反的呢?首先,梯度的定义是指向函数增速最快的方向,通过下图我们能够看到,∇xf(x)\nabla_x f(x)∇x​f(x)是垂直于等高线向上的,而∇xg(x)\nabla_x g(x)∇x​g(x)垂直于等高线向下的(因为函数里面小于0,线上等于0,则梯度肯定是向外侧的),又因为两线相切,切线相同,则两个梯度方向相反,所以μi\mu_iμi​根据下列公式为正数)

根据上述阐述,我们能够总结出KKT条件:

  1. Stationarity
    ∇xf(x)+∑i=1m∇xλihi(x)+∑i=1n∇xμigi(x)=0(mimimization)\nabla_xf(x) + \sum_{i=1}^{m}\nabla_x\lambda_ih_i(x) + \sum_{i=1}^{n}\nabla_x\mu_ig_i(x) = 0 (mimimization) ∇x​f(x)+i=1∑m​∇x​λi​hi​(x)+i=1∑n​∇x​μi​gi​(x)=0(mimimization)
    ∇xf(x)+∑i=1m∇xλihi(x)−∑i=1n∇xμigi(x)=0(maximization)\nabla_xf(x) + \sum_{i=1}^{m}\nabla_x\lambda_ih_i(x) - \sum_{i=1}^{n}\nabla_x\mu_ig_i(x) = 0 (maximization)∇x​f(x)+i=1∑m​∇x​λi​hi​(x)−i=1∑n​∇x​μi​gi​(x)=0(maximization)
    对于求解最大值问题,上图中∇xf(x)\nabla_xf(x)∇x​f(x)方向就会反向,从而导致μi≤0\mu_i \leq 0μi​≤0,为了保持下列第3条件中μi≥0\mu_i\geq0μi​≥0的条件,所以在此将其之前的符号变为负号。条件2中的最后一项不受影响是因为求关于λ\lambdaλ的梯度,该项均为0,所以无所谓。
  2. Equality constraints
    ∇λf(x)+∑i=1m∇λλihi(x)+∑i=1n∇λμigi(x)=0\nabla_{\lambda}f(x) + \sum_{i=1}^{m}\nabla_{\lambda}\lambda_ih_i(x) + \sum_{i=1}^{n}\nabla_{\lambda}\mu_ig_i(x) = 0 ∇λ​f(x)+i=1∑m​∇λ​λi​hi​(x)+i=1∑n​∇λ​μi​gi​(x)=0
  3. Inequality constraints a.k.a. complementary slackness condition
    μigi(x)=0,∀i=1,2,…,n\mu_ig_i(x) =0, \forall i= 1,2,\dots,n μi​gi​(x)=0,∀i=1,2,…,n
    μi≥0,∀i=1,2,…,n\mu_i \geq 0, \forall i = 1,2,\dots,n μi​≥0,∀i=1,2,…,n

值得注意的是,KKT条件和极值之间并不是总是充分必要条件

  1. 当对原函数f(x)f(x)f(x)没有约束的时候,即不一定是凸函数的时候,KKT为必要条件,即:若点x∗x^*x∗是函数f(x)f(x)f(x)在条件约束下的极值,那么x∗x^*x∗满足KKT条件
  2. 当f(x)和gi(x)f(x)和g_i(x)f(x)和gi​(x)是连续可微且是凸函数,hi(x)h_i(x)hi​(x)是线性(仿射函数)时,KKT为充分必要条件,即除了若点x∗x^*x∗是函数f(x)f(x)f(x)在条件约束下的极值,那么x∗x^*x∗满足KKT条件,还有若点x∗x^*x∗满足KKT条件,则点x∗x^*x∗是f(x)f(x)f(x)在约束条件下的极值点

KKT条件解释

10. 拉格朗日对偶(Lagrange duality)

通过上面关于拉格朗日乘子法KKT条件阐述,我们了解了如何面对含有约束条件的最优化问题。其核心思想为,将约束条件通过拉格朗日乘数和KKT乘数添加到最优化问题当中,从而形成一个没有约束条件的最优化问题。

然而,有时候我们用拉格朗日乘子法将原问题转化后,根据KKT条件得到的多个方程联立的方程组还是不好求解。那该怎么办呢?当原问题在满足某些条件的前提下,我们可以将原问题(primary)转换成其对应的对偶问题(duality),通过求解对偶问题,得到原问题的解。下面来解释如何应用对偶来简化最优化过程。

10.1 原始问题

同样的,与KKT条件使用的情况一下,这里我们的原始问题是包含等式约束和不等式约束的最优化问题,公式如下:
x∗=arg⁡min⁡xf(x)subjecttohi(x)=0,∀i=1,2,…,msubjecttogi(x)≤0,∀i=1,2,…,nx^* = \arg \min_x f(x)\\ subject\ to\ h_i(x)=0,\forall i = 1,2,\dots,m\\ subject\ to\ g_i(x)\leq 0,\forall i = 1,2,\dots,n x∗=argxmin​f(x)subject to hi​(x)=0,∀i=1,2,…,msubject to gi​(x)≤0,∀i=1,2,…,n
我们将该问题称之为约束最优化问题的原始问题

10.2 广义拉格朗日乘子法转化后的原始问题再转化

通过使用拉格朗日乘子法将原始问题转换成拉格朗日函数:

(10.1)L(x,λ,μ)=f(x)+∑i=1mλihi(x)+∑i=1nμigi(x)L(x, \lambda,\mu) = f(x)+\sum_{i=1}^{m}\lambda_ih_i(x)+\sum_{i=1}^{n}\mu_ig_i(x)\tag{10.1} L(x,λ,μ)=f(x)+i=1∑m​λi​hi​(x)+i=1∑n​μi​gi​(x)(10.1)

我们将对该函数求极值,来得到原始函数的最优化解。通常情况下,可以根据KKT条件(其中一个条件为μi≥0,∀i=1,2,…,n\mu_i \geq 0, \forall i = 1,2,\dots,nμi​≥0,∀i=1,2,…,n),来构建方程组,从而解得我们需要的极值点,然后带入到原始方程f(x)f(x)f(x)来选择我们先要的最大值或者最小值。

但是在这里,我们选择进行一种新的变换,来构建原始函数的对偶函数,通过求解对偶函数来得到原始函数的最优解。

首先,我们将L(x,λ,μ)L(x,\lambda,\mu)L(x,λ,μ)看做是关于λ,μ\lambda,\muλ,μ的函数,我们要求其最大值,即:
(10.2)max⁡λ,μ:μi≥0L(x,λ,μ)\max_{\lambda,\mu:\mu_i \geq0}L(x,\lambda,\mu)\tag{10.2} λ,μ:μi​≥0max​L(x,λ,μ)(10.2)
在这里,着重强调一下是关于λ,μ\lambda,\muλ,μ的函数,在求解该方程的时候,将xxx视为常量,在确定了λ,μ\lambda,\muλ,μ之后,函数将变成只与xxx有关的函数,我们将该函数定义为:
(10.3)θP(x)=max⁡λ,μ:μi≥0L(x,λ,μ)\theta_P (x)= \max_{\lambda,\mu:\mu_i \geq0}L(x,\lambda,\mu)\tag{10.3} θP​(x)=λ,μ:μi​≥0max​L(x,λ,μ)(10.3)

针对这个函数,我们来根据x是不是满足约束条件来分析一下:

  • xxx不满足约束条件,即:
    hi(x)≠0h_i(x) \neq 0hi​(x)̸​=0时,λi→+∞或(−∞)\lambda_i \rightarrow +\infty 或(-\infty)λi​→+∞或(−∞);gi(x)&gt;0g_i(x) &gt; 0gi​(x)>0时,μi→+∞\mu_i \rightarrow +\inftyμi​→+∞时,θP(x)\theta_P(x)θP​(x)的最大值为+∞+\infty+∞
  • xxx满足约束条件,很明显函数可以将μi=0\mu_i=0μi​=0,从而转换为f(x)f(x)f(x)(注意,在这里我们将f(x)f(x)f(x)视为常量,那么其最大值即为本身)

因此,通过以上的分析,我们能够将θp(x)\theta_p(x)θp​(x)写成如下形式:
(10.4)θP(x)={f(x),x满足原始问题约束+∞,others\theta_P(x) = \begin{cases}f(x), \ \ \ \ \ \ \ x满足原始问题约束\\+\infty, \ \ \ \ \ \ \ \ others\end{cases}\tag{10.4} θP​(x)={f(x),       x满足原始问题约束+∞,        others​(10.4)

那么当xxx在满足约束条件时,我们如果求:
min⁡xθP(x)\min_x\theta_P(x) xmin​θP​(x)
其实就是在求xxx在满足约束条件时:
min⁡xf(x)\min_xf(x) xmin​f(x)
(因为在满足约束条件的时候θp(x)=f(x)\theta_p(x) = f(x)θp​(x)=f(x),见式10.4)

从而有下列等式:
(9.5)min⁡xθP(x)=min⁡xmax⁡λ,μ:μi≥0L(x,λ,μ)=min⁡xf(x)subjettohi(x)=0,∀i=1,…,msubjecttogi(x)≤0,∀i=1,…,n\min_x\theta_P(x) = \min_x \max_{\lambda,\mu:\mu_i \geq0}L(x,\lambda,\mu)= \min_x f(x) \\ subjet\ to\ h_i(x) = 0, \forall i = 1,\dots, m\\ subject\ to\ g_i(x) \leq 0, \forall i =1,\dots,n\tag{9.5} xmin​θP​(x)=xmin​λ,μ:μi​≥0max​L(x,λ,μ)=xmin​f(x)subjet to hi​(x)=0,∀i=1,…,msubject to gi​(x)≤0,∀i=1,…,n(9.5)

大白话就是说,我们转换来的θp(x)和f(x)\theta_p(x)和f(x)θp​(x)和f(x)在求xxx满足约束条件时的最小值时,是等价的。

这里我们设在xxx满足约束条件时:
p∗=min⁡xθP(x)p^* = \min_x\theta_P(x) p∗=xmin​θP​(x)

至此,我们通过一种转换,将用拉格朗日函数形式表示的原始问题,转换到了由两个最优化问题表示的全新形式。该形式将通过进一步的转换得到其对偶函数,从而简化最优化问题求解。

10.3 对偶问题

上面我们对原始问题进行了一系列的转换,最终变成了9.5式那样的模样。然而,进行转换后,该最优化问题依然可能存在不好求的问题。那么又要想办法换一种形式,来求解这个最优化问题了。

仿照式10.3,我们定义关于λ,μ\lambda,\muλ,μ的函数:
(10.6)min⁡xL(x,λ,μ)\min_xL(x, \lambda,\mu)\tag{10.6} xmin​L(x,λ,μ)(10.6)
此函数是关于xxx的函数,在求解最小化过程中,应将λ,μ\lambda,\muλ,μ视为常数,当xxx确定后,则变成了关于变量λ,μ\lambda,\muλ,μ的函数:

(10.7)θD(λ,μ)=min⁡xL(x,λ,μ)\theta_D(\lambda, \mu) = \min_xL(x, \lambda,\mu)\tag{10.7} θD​(λ,μ)=xmin​L(x,λ,μ)(10.7)

得到θD(λ,μ)\theta_D(\lambda,\mu)θD​(λ,μ)之后考虑将其极大化,即:
(10.8)max⁡λ,μ:μi≥0θD(λ,μ)=max⁡λ,μ:μi≥0min⁡xL(x,λ,μ)\max_{\lambda,\mu:\mu_i \geq 0}\theta_D(\lambda,\mu) =\max_{\lambda,\mu:\mu_i \geq 0}\min_xL(x,\lambda,\mu) \tag{10.8} λ,μ:μi​≥0max​θD​(λ,μ)=λ,μ:μi​≥0max​xmin​L(x,λ,μ)(10.8)

对比式10.8和式10.5我们能够看到,两者在形式上很对称,只不过最优化的顺序不同而已。我们将式10.8称为原始问题的对偶问题

同样的,设对偶问题的最优值:
d∗=max⁡λ,μ:μi≥0θD(λ,μ)d^*=\max_{\lambda,\mu:\mu_i \geq 0}\theta_D(\lambda,\mu) d∗=λ,μ:μi​≥0max​θD​(λ,μ)

10.4 对偶问题与原始问题的关系

定理:若原始问题和对偶问题都有最优值,则:
(10.9)d∗=max⁡λ,μ:μi≥0min⁡xL(x,λ,μ)≤min⁡xmax⁡λ,μ:μi≥0L(x,λ,μ)=p∗d^*=\max_{\lambda,\mu:\mu_i \geq 0}\min_xL(x,\lambda,\mu) \leq\min_x \max_{\lambda,\mu:\mu_i \geq0}L(x,\lambda,\mu)=p^*\tag{10.9} d∗=λ,μ:μi​≥0max​xmin​L(x,λ,μ)≤xmin​λ,μ:μi​≥0max​L(x,λ,μ)=p∗(10.9)
证明
记p∗p^*p∗为原始问题的最优解,对应最优解的最优变量取值为x∗x^*x∗,有p∗=f(x∗)p^*=f(x^*)p∗=f(x∗);
记d∗d^*d∗为对偶问题的最优解,对应最优解的最优变量取值为λ∗,μ∗\lambda^*,\mu^*λ∗,μ∗,有d∗=θD(λ∗,μ∗)d^*=\theta_D(\lambda^*,\mu^*)d∗=θD​(λ∗,μ∗);

对于任意的λ,μ\lambda,\muλ,μ,有:
θD(λ,μ)=min⁡xL(x,λ,μ)≤L(x∗,λ,μ)=f(x∗)+∑i=1mλihi(x∗)+∑i=1nμigi(x∗)≤f(x∗)=p∗\theta_D(\lambda,\mu) = \min_xL(x,\lambda,\mu)\leq L(x^*,\lambda,\mu)=f(x^*)+\sum_{i=1}^{m}\lambda_ih_i(x^*)+\sum_{i=1}^{n}\mu_ig_i(x^*) \leq f(x^*) = p^* θD​(λ,μ)=xmin​L(x,λ,μ)≤L(x∗,λ,μ)=f(x∗)+i=1∑m​λi​hi​(x∗)+i=1∑n​μi​gi​(x∗)≤f(x∗)=p∗

该式中第二个等号成立是因为x∗x^*x∗是一个可行解,所以约束条件gi(x)≤0g_i(x)\leq 0gi​(x)≤0和hi(x)=0h_i(x) =0hi​(x)=0满足,所以∑i=1mλihi(x∗)=0,∑i=1nμigi(x∗)≤0\sum_{i=1}^{m}\lambda_ih_i(x^*) =0,\sum_{i=1}^{n}\mu_ig_i(x^*)\leq0∑i=1m​λi​hi​(x∗)=0,∑i=1n​μi​gi​(x∗)≤0。

由于以上推导是对于任意的λ,μ\lambda,\muλ,μ,所以d∗=θD(λ∗,μ∗)≤p∗d^*=\theta_D(\lambda^*,\mu^*) \leq p^*d∗=θD​(λ∗,μ∗)≤p∗

该定理说明:原始问题的最小值不小于对偶问题的最大值,这一定理对于原始问题和对偶问题是否是凸优化问题并没有限制。是普遍成立的。

推论:设x∗,λ∗,μ∗x^*,\lambda^*,\mu^*x∗,λ∗,μ∗分别是原始问题和对偶问题的可行解,由于式10.9我们知道,x∗,λ∗,μ∗x^*,\lambda^*,\mu^*x∗,λ∗,μ∗分别是原始问题和对偶问题的最优解。

通常,对偶问题相对于原问题有比较好的形式(有看到“无论原问题形式如何,对偶问题都是一个凸优化问题”的说法,但没见过证明。),这样,当原问题不好求解时,可以转而求解对偶问题。问题是一般情况下有d∗≤p∗d^* \leq p^*d∗≤p∗,所以求解对偶问题只能得到原始问题的下届,不能保证d∗=p∗d^*= p^*d∗=p∗

但是我们想要通过对偶问题来求解原始问题,必须要使得原始问题的最小值和对偶问题的最大值点相等才行。

所以,当原始问题满足某些条件时,可以保证d∗=p∗d^*= p^*d∗=p∗

Slater条件对于原始函数和对偶函数的影响

定义:对于原始问题及其对偶问题,假设函数f(x)f(x)f(x)和gi(x)g_i(x)gi​(x)是凸函数,hi(x)h_i(x)hi​(x)是仿射函数,且不等式约束gi(x)g_i(x)gi​(x)是严格可行的,即存在一个xxx,使得不等式约束gi(x)&lt;0,∀i=1,…,mg_i(x)&lt;0 ,\forall i = 1,\dots,mgi​(x)<0,∀i=1,…,m,则存在x∗x^*x∗是原始问题的解,λ∗,μ∗\lambda^*,\mu^*λ∗,μ∗是对偶问题的解,并使得d∗=p∗d^*=p^*d∗=p∗。

也就是说如果原始问题是凸优化问题并且满足 Slater 条件的话,那么强对偶性成立。需要注意的是,这里只是指出了强对偶成立的一种情况,并不是唯一的情况。

KKT条件对于原始函数和对偶函数的影响

上面我们专门讲KKT条件的时候,没有考虑对偶问题的存在。现在我们看看在同时考虑原始问题和对偶问题时,KKT条件是怎样影响的。

对于一般的最优化问题,KKT条件是原始问题和对偶问题等价的必要条件,即当d∗=p∗d^* =p^*d∗=p∗时,最优值结果x∗,λ∗,μ∗x^*,\lambda^*,\mu^*x∗,λ∗,μ∗满足KKT条件。下面证明由强对偶关系推导出KKT条件。

由强对偶推导出KKT条件
考虑一般情况下(不一定是凸优化),如果有d∗=p∗d^*=p^*d∗=p∗,对应的点为x∗,λ∗,μ∗,x^*,\lambda^*,\mu^*,x∗,λ∗,μ∗,则:
d∗=θD(λ∗,μ∗)=min⁡xL(x,λ∗,μ∗)≤L(x∗,λ∗,μ∗)=f(x∗)+∑i=1mλi∗hi(x∗)+∑i=1nμi∗gi(x∗)≤f(x∗)=p∗d^*=\theta_D(\lambda^*,\mu^*) = \min_xL(x,\lambda^*,\mu^*) \leq L(x^*,\lambda^*,\mu^*) = f(x^*)+\sum_{i=1}^{m}\lambda_i^*h_i(x^*)+\sum_{i=1}^{n}\mu_i^*g_i(x^*) \leq f(x^*) = p^* d∗=θD​(λ∗,μ∗)=xmin​L(x,λ∗,μ∗)≤L(x∗,λ∗,μ∗)=f(x∗)+i=1∑m​λi∗​hi​(x∗)+i=1∑n​μi∗​gi​(x∗)≤f(x∗)=p∗

由于d∗=p∗d^*=p^*d∗=p∗,所以公式中的≤\leq≤都应该取等号,则有:

  • min⁡xL(x,λ∗,θ∗)=L(x∗,λ∗,μ∗)\min_xL(x,\lambda^*,\theta^*) = L(x^*,\lambda^*,\mu^*)minx​L(x,λ∗,θ∗)=L(x∗,λ∗,μ∗)说明x∗x^*x∗是L(x,λ∗,μ∗)L(x,\lambda^*,\mu^*)L(x,λ∗,μ∗)的一个极值点,所以L(x,λ∗,μ∗)L(x,\lambda^*,\mu^*)L(x,λ∗,μ∗)在x∗x^*x∗处的偏导为0,即∂L(x,λ∗,μ∗)∂x∣x∗=0\frac{\partial L(x,\lambda^*,\mu^*)}{\partial x}|_{x^*}=0∂x∂L(x,λ∗,μ∗)​∣x∗​=0
  • f(x∗)+∑i=1mλi∗hi(x∗)+∑i=1nμi∗gi(x∗)=f(x∗)f(x^*)+\sum_{i=1}^{m}\lambda_i^*h_i(x^*)+\sum_{i=1}^{n}\mu_i^*g_i(x^*) = f(x^*)f(x∗)+∑i=1m​λi∗​hi​(x∗)+∑i=1n​μi∗​gi​(x∗)=f(x∗),由于x∗x^*x∗是满足约束条件的,因此根据约束条件有
    1)hi(x∗)=0,∀i=1,…,mh_i(x^*) =0, \forall i = 1,\dots,mhi​(x∗)=0,∀i=1,…,m,从而∑i=1mλi∗hi(x∗)=0\sum_{i=1}^{m}\lambda_i^*h_i(x^*)=0∑i=1m​λi∗​hi​(x∗)=0;
    2)gi(x∗)≤0,μi∗≥0g_i(x^*) \leq0, \mu_i^* \geq0gi​(x∗)≤0,μi∗​≥0,但是由于条件1),我们得到∑i=1nμi∗gi(x∗)=0\sum_{i=1}^{n}\mu_i^*g_i(x^*) =0∑i=1n​μi∗​gi​(x∗)=0,所以,如果某个gi(x∗)&lt;0g_i(x^*) &lt;0gi​(x∗)<0且μi∗&gt;0\mu_i^* &gt;0μi∗​>0,则该项为负数,根据取值范围我们知道,μi∗gi(x∗)是≤0\mu_i^*g_i(x^*)是\leq 0μi∗​gi​(x∗)是≤0的,因此为了保证∑i=1nμi∗gi(x∗)=0\sum_{i=1}^{n}\mu_i^*g_i(x^*) =0∑i=1n​μi∗​gi​(x∗)=0,必须求和中的每一项都为零,即μi∗gi(x∗)=0,∀i=1,…,n\mu_i^*g_i(x^*)=0, \forall i = 1, \dots,nμi∗​gi​(x∗)=0,∀i=1,…,n

通过整理以上条件,我们能得到:
{∂L(x,λ∗,μ∗)∂x∣x∗=0hi(x∗)=0,∀i=1,…,mgi(x∗)≤0,∀i=1,…,nμi∗gi(x∗)=0,∀i=1,…,nμi∗≥0,∀i=1,…,n\begin{cases} \frac{\partial L(x,\lambda^*,\mu^*)}{\partial x}|_{x^*}=0\\ h_i(x^*)=0, \forall i = 1, \dots, m\\ g_i(x^*) \leq 0, \forall i = 1, \dots, n\\ \mu_i^*g_i(x^*) = 0, \forall i = 1, \dots, n\\ \mu_i^* \geq0 , \forall i = 1, \dots, n \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​∂x∂L(x,λ∗,μ∗)​∣x∗​=0hi​(x∗)=0,∀i=1,…,mgi​(x∗)≤0,∀i=1,…,nμi∗​gi​(x∗)=0,∀i=1,…,nμi∗​≥0,∀i=1,…,n​

上面方程组其实就是KKT条件,也就是说任何强对偶问题(不一定通过Slater条件推出),KKT条件都是d∗=p∗d^*=p^*d∗=p∗的必要条件。

但是,如果原始问题是凸优化问题是,那么KKT条件就升级为充要条件。 也就是说只要找到x∗,λ∗,μ∗x^*,\lambda^*,\mu^*x∗,λ∗,μ∗满足KKT条件,那么原始问题和对偶问题就有相同的解,分别在x∗x^*x∗和(λ∗,μ∗)(\lambda^*,\mu^*)(λ∗,μ∗)处取得。

定义: 对于原始问题及其对偶问题,假设函数f(x)f(x)f(x)和gi(x)g_i(x)gi​(x)是凸函数,hi(x)h_i(x)hi​(x)是仿射函数,且不等式约束gi(x)g_i(x)gi​(x)是严格可行的,即存在一个xxx,使得不等式约束gi(x)&lt;0,∀i=1,…,mg_i(x)&lt;0 ,\forall i = 1,\dots,mgi​(x)<0,∀i=1,…,m,则存在x∗x^*x∗是原始问题的解,λ∗,μ∗\lambda^*,\mu^*λ∗,μ∗是对偶问题的解,并使得d∗=p∗d^*=p^*d∗=p∗的充要条件是x∗,λ∗,μ∗x^*,\lambda^*,\mu^*x∗,λ∗,μ∗满足KKT条件。

Slater条件、KKT条件与强对偶关系

10.5 总结

对于有约束的凸优化问题,我们可以用广义拉格朗日乘子法将约束条件拉入到最优化函数中从而转化为无约束问题,如果该原始问题求解棘手,在满足KKT条件下,可以通过求解对偶问题的解来代替原始问题,使得求解更加容易。

参考资料1
参考资料2
参考资料3

最优化之凸集、凸函数、上确界、Jensen不等式、共轭函数、Fenchel不等式、拉格朗日乘子法、KKT条件相关推荐

  1. 拉格朗日乘子法-KKT不等式约束

    文章目录 不等式约束 极小值点落在可行域内(不包含边界) 极小值点落在可行域外(包含边界) 总结 不等式约束 对于不等式约束g(x)<=0,和等式约束h(x)=0不一样,h(x)=0可以在平面上 ...

  2. 最优化:拉格朗日乘子法

    作者:桂. 时间:2017-03-27 20:26:17 链接:http://www.cnblogs.com/xingshansi/p/6628785.html 声明:欢迎被转载,不过记得注明出处哦~ ...

  3. 【最优化】拉格朗日乘子法

    拉格朗日乘子法 前面几节讲述的都是无约束优化问题的相关算法,但是在实际生活中碰到的几乎都是有约束问题模型. 等式约束的拉格朗日乘子法 算法框架 1. 问题描述 以下对约束优化问题中常出现的概念做一下简 ...

  4. 机器学习中的数学——拉格朗日乘子法(二):不等式约束与KKT条件

    分类目录:<算法设计与分析>总目录 相关文章: ·拉格朗日乘子法(一):等式约束的拉格朗日乘子法 ·拉格朗日乘子法(二):不等式约束与KKT条件 现在接着<拉格朗日乘子法(一):等式 ...

  5. 用初中数学题理解SVM中不等式约束、拉格朗日乘子法、kkt条件、对偶

    先把kkt条件列出来: 注意上面照片中的a就相当于高等数学中的lambda ############################################################## ...

  6. 基本不等式凸函数拉格朗日乘子

    文章目录 基本不等式及其证明 证明M2‾≤M3‾\overline{M2}\leq\overline{M3}M2≤M3 证明M1‾≤M2‾\overline{M1}\leq\overline{M2}M ...

  7. 最优化课程笔记07——约束问题的非线性规划方法(重点:拉格朗日乘子法和惩罚函数法)

    7.1 间接法:约束转化为无约束问题(含一个重点:拉格朗日乘子法) 当维数多的时候不适用 7.1.2拉格朗日乘子法(重点) 7.1.2.1 等式约束问题 7.1.2.2 不等式约束问题 7.1.3 惩 ...

  8. 凸优化、最优化、凸集、凸函数

    原文:https://www.cnblogs.com/AndyJee/p/5048735.html 我们知道压缩感知主要有三个东西:信号的稀疏性,测量矩阵的设计,重建算法的设计.那么,在重建算法中,如 ...

  9. 凸集+非凸集+凸函数+非凸函数

    凸集+非凸集+凸函数+非凸函数 凸数据+非凸数据定义是什么? 什么是凸样本集和非凸样本集? 凸函数,非凸函数? 凸集的定义:集合C内的任意取两点,形成的线段均在集合C内,则称集合C为凸集.仿射集一定是 ...

最新文章

  1. 关于某日访问次数最多的IP的topK问题的三种解法
  2. Codespaces
  3. 用pulse generator产生脉冲信号
  4. 8086的两种工作模式_Lora自组网网关的两种工作模式
  5. 项目添加服务器上数据库正常,添加本地的数据库出现问题(The user specified as a definer ('root'@'%') does not exist)...
  6. vue cli3 绑定域名_使用CLI设置WildFly绑定地址并关闭
  7. 【php-laravel框架】第二节:laravel常用的扩展包汇总及安装教程
  8. dart 爬取 妹子图 豆瓣影评
  9. ps6人脸识别液化工具在哪_ps液化工具在哪
  10. Java标准教程:Java 2D绘图--第4章 使用Text API
  11. 资产证券化:国际借鉴与中国实践案例 读后感
  12. 力扣刷题 DAY_75 贪心
  13. 快手Android一面复盘
  14. 所有学java的女生都进来看看
  15. android 键盘将底部视图顶起,android 弹出软键盘将底部视图顶起问题
  16. Golang 在linux中新建用户
  17. 抱怨其实是对自己的不满
  18. 将字符串中的小写字母转换为相应的大写字母
  19. CMake命令之add_custom_comand 和 add_custom_target
  20. IT各个层次角色与职责

热门文章

  1. 解析FPS,刷新率,垂直同步
  2. pandas.Series.str.extract 正则提取数据
  3. 《惢客创业日记》2019.09.02(周一) 把习惯变成闹钟
  4. 从C到C++ 番外const的用法
  5. MP2459被完美替代内部集成有功率MOSFET管FS2459的60V0.5A降压IC
  6. Google浏览器怎么导入证书
  7. MPI并行编程: 矩阵乘法,积分计算,PSPR排序
  8. 解决ECharts官网打开缓慢的问题
  9. Alist+KODI打造免费家庭影院
  10. 西安交通大学计算机考研考数学几,西安交通大学电子信息专业考研考数学几?...