最优化之凸集、凸函数、上确界、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 保持函数凸性的算子
凸函数的非负加权和: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)=θ1f1(x)+θ2f2(x)+⋯+θnfn(x),θn>0凸函数与仿射函数的复合函数:
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为凸函数凸函数的逐点最大值构成的函数:
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. 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θixi)≤i=1∑mθif(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)=supx∈domf(<y,x>−f(x))f^*(y) = \sup _{x\in domf}(<y,x>-f(x)) f∗(y)=x∈domfsup(<y,x>−f(x))
其中,<y,x><y,x><y,x>为两个变量的內积
对于标量:<y,x>=yx<y,x>=yx<y,x>=yx对于向量:<y,x>=yTx<y,x>=y^Tx<y,x>=yTx对于n×nn\times nn×n矩阵:<y,x>=tr(yx)<y,x>=tr(yx)<y,x>=tr(yx)
特别注意的是,共轭函数的定义域domf∗domf^*domf∗要求对于x∈domfx\in domfx∈domf时,<y,x>−f(x)<y,x>-f(x)<y,x>−f(x)有上界,即f∗(y)f^*(y)f∗(y)不能无穷大。
物理意义
对于共轭函数f∗(y)f^*(y)f∗(y),我们可以将<y,x><y,x><y,x>看成是一条过原点的直线。那么yyy就可以看做是直线的斜率,一个yyy对应一条直线。
那么共轭函数的意思就是,对于每一条直线,求在原函数定义域domfdomfdomf(即xxx可以取得值中)上,直线与原函数对应点距离最大的值(上确界)。
如图:
当什么时候对于确定的直线,与原函数的差最大呢?答案是:当原函数切线与直线斜率相同的点,差值最大。
这一结论可以通过上图直接观察得出,也可通过求导得到,如下:
∂(<y,x>−f(x))∂x=y−f′(x)=0\frac{\partial (<y,x>-f(x))}{\partial x} = y - f'(x)=0 ∂x∂(<y,x>−f(x))=y−f′(x)=0
所以通过上式我们能看到,当f′(x)=yf'(x)=yf′(x)=y时得到极值。
参看博客以及计算示例
矩阵的共轭函数计算示例
共轭函数的性质
共轭函数一定是凸函数凸函数的共轭函数的共轭函数是其本身6. Fenchel不等式
根据共轭函数的定义我们知道,f∗(y)f^*(y)f∗(y)是对于<y,x>−f(x)<y,x>-f(x)<y,x>−f(x)的上确界,则一定有:
f∗(y)≥<y,x>−f(x)f^*(y) \geq <y,x>-f(x) f∗(y)≥<y,x>−f(x)
则有
f(x)+f∗(y)≥<y,x>f(x)+f^*(y) \geq <y,x> f(x)+f∗(y)≥<y,x>
7. 凸优化问题
在优化问题中,凸优化问题有以下集中形式:
对于一个含约束的优化问题
minxf(x)s.t.x∈C\min_xf(x)\\ s.t.\ \ x \in C xminf(x)s.t.x∈C
其中,f(x)f(x)f(x)是一个凸函数,变量xxx的可行域CCC是一个凸集,该问题就是一个凸优化问题。对于一个含不等式约束的优化问题
minxf(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 xminf(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∗=argminxf(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∗=argxminf(x)subjecttogi(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∗=argminxf(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∗=argxminf(x)subjecttohi(x)=0,∀i=1,2,…,msubjecttogi(x)≤0,∀i=1,2,…,n
这里,我们一般求解最优化问题的时候,并不在意最大值和最小值的值是多少,而是极值点的是什么,因此上述问题中用x∗=argminxf(x)x^* = \arg \min_x f(x)x∗=argminxf(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∗=argminxL(x,λ,μ)=argminxf(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∗=argxminL(x,λ,μ)=argxminf(x)+i=1∑mλihi(x)+i=1∑nμigi(x)
针对上述最优化问题,该如何求解呢?
通过对xxx求梯度,我们能够得到对应xxx中变量个数的方程对于等式约束,求关于拉格朗日乘数的偏导等于0,可以得到mmm个方程,这些方程使得解xxx满足这些等式约束条件。对于不等式约束,有两种情况:
1)极值点在不等式约束范围内,即gi(x∗)<0g_i(x^*) < 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μigi(x)=0,因此,其对于新构建的方程的求解是必须的,则可以作为KKT条件之一,并得到nnn个方程
对于μigi(x)=0\mu_ig_i(x)=0μigi(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>0\mu_i>0μi>0。(为什么梯度∇xf(x)和梯度∇xg(x)\nabla_x f(x)和梯度\nabla_x g(x)∇xf(x)和梯度∇xg(x)一定是相反的呢?首先,梯度的定义是指向函数增速最快的方向,通过下图我们能够看到,∇xf(x)\nabla_x f(x)∇xf(x)是垂直于等高线向上的,而∇xg(x)\nabla_x g(x)∇xg(x)垂直于等高线向下的(因为函数里面小于0,线上等于0,则梯度肯定是向外侧的),又因为两线相切,切线相同,则两个梯度方向相反,所以μi\mu_iμi根据下列公式为正数)
根据上述阐述,我们能够总结出KKT条件:
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) ∇xf(x)+i=1∑m∇xλihi(x)+i=1∑n∇xμigi(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)∇xf(x)+i=1∑m∇xλihi(x)−i=1∑n∇xμigi(x)=0(maximization)
对于求解最大值问题,上图中∇xf(x)\nabla_xf(x)∇xf(x)方向就会反向,从而导致μi≤0\mu_i \leq 0μi≤0,为了保持下列第3条件中μi≥0\mu_i\geq0μi≥0的条件,所以在此将其之前的符号变为负号。条件2中的最后一项不受影响是因为求关于λ\lambdaλ的梯度,该项均为0,所以无所谓。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∇λλihi(x)+i=1∑n∇λμigi(x)=0Inequality 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 μigi(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条件和极值之间并不是总是充分必要条件
当对原函数f(x)f(x)f(x)没有约束的时候,即不一定是凸函数的时候,KKT为必要条件,即:若点x∗x^*x∗是函数f(x)f(x)f(x)在条件约束下的极值,那么x∗x^*x∗满足KKT条件。当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∗=argminxf(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∗=argxminf(x)subjecttohi(x)=0,∀i=1,2,…,msubjecttogi(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λihi(x)+i=1∑nμigi(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≥0maxL(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≥0maxL(x,λ,μ)(10.3)
针对这个函数,我们来根据x是不是满足约束条件来分析一下:
xxx不满足约束条件,即:
hi(x)≠0h_i(x) \neq 0hi(x)̸=0时,λi→+∞或(−∞)\lambda_i \rightarrow +\infty 或(-\infty)λi→+∞或(−∞);gi(x)>0g_i(x) > 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在满足约束条件时,我们如果求:
minxθP(x)\min_x\theta_P(x) xminθP(x)
其实就是在求xxx在满足约束条件时:
minxf(x)\min_xf(x) xminf(x)
(因为在满足约束条件的时候θp(x)=f(x)\theta_p(x) = f(x)θp(x)=f(x),见式10.4)
从而有下列等式:
(9.5)minxθP(x)=minxmaxλ,μ:μi≥0L(x,λ,μ)=minxf(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≥0maxL(x,λ,μ)=xminf(x)subjettohi(x)=0,∀i=1,…,msubjecttogi(x)≤0,∀i=1,…,n(9.5)
大白话就是说,我们转换来的θp(x)和f(x)\theta_p(x)和f(x)θp(x)和f(x)在求xxx满足约束条件时的最小值时,是等价的。
这里我们设在xxx满足约束条件时:
p∗=minxθP(x)p^* = \min_x\theta_P(x) p∗=xminθP(x)
至此,我们通过一种转换,将用拉格朗日函数形式表示的原始问题,转换到了由两个最优化问题表示的全新形式。该形式将通过进一步的转换得到其对偶函数,从而简化最优化问题求解。
10.3 对偶问题
上面我们对原始问题进行了一系列的转换,最终变成了9.5式那样的模样。然而,进行转换后,该最优化问题依然可能存在不好求的问题。那么又要想办法换一种形式,来求解这个最优化问题了。
仿照式10.3,我们定义关于λ,μ\lambda,\muλ,μ的函数:
(10.6)minxL(x,λ,μ)\min_xL(x, \lambda,\mu)\tag{10.6} xminL(x,λ,μ)(10.6)
此函数是关于xxx的函数,在求解最小化过程中,应将λ,μ\lambda,\muλ,μ视为常数,当xxx确定后,则变成了关于变量λ,μ\lambda,\muλ,μ的函数:
(10.7)θD(λ,μ)=minxL(x,λ,μ)\theta_D(\lambda, \mu) = \min_xL(x, \lambda,\mu)\tag{10.7} θD(λ,μ)=xminL(x,λ,μ)(10.7)
得到θD(λ,μ)\theta_D(\lambda,\mu)θD(λ,μ)之后考虑将其极大化,即:
(10.8)maxλ,μ:μi≥0θD(λ,μ)=maxλ,μ:μi≥0minxL(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≥0maxxminL(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≥0minxL(x,λ,μ)≤minxmaxλ,μ:μ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≥0maxxminL(x,λ,μ)≤xminλ,μ:μi≥0maxL(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(λ,μ)=minxL(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(λ,μ)=xminL(x,λ,μ)≤L(x∗,λ,μ)=f(x∗)+i=1∑mλihi(x∗)+i=1∑nμigi(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λihi(x∗)=0,∑i=1nμigi(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)<0,∀i=1,…,mg_i(x)<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(λ∗,μ∗)=minxL(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(λ∗,μ∗)=xminL(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≤都应该取等号,则有:
minxL(x,λ∗,θ∗)=L(x∗,λ∗,μ∗)\min_xL(x,\lambda^*,\theta^*) = L(x^*,\lambda^*,\mu^*)minxL(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∗=0f(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∗)<0g_i(x^*) <0gi(x∗)<0且μi∗>0\mu_i^* >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)<0,∀i=1,…,mg_i(x)<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