拉格朗日乘法是最优化问题中,当多元函数的变量受到一个或多个等式约束时,求局部极值的方法。通过将由n个变量和k个约束条件的最优化问题,转化成一个解有 n+k 个变量的方程组的解的问题。
对于一个2变量1等式约束的优化问题:
min x , y f ( x , y ) s.t. g ( x , y ) = c \min _{x, y} f(x, y) \quad \text { s.t. } g(x, y)=c x,yminf(x,y) s.t. g(x,y)=c
如何求该问题的最优解呢,我们引入拉格朗日乘法,引入 β \beta β作为拉格朗日乘数,再引入朗格朗日函数的极值:
L ( x , y , λ ) = f ( x , y ) + λ ⋅ ( g ( x , y ) − c ) ( 1 ) \mathcal{L}(x, y, \lambda)=f(x, y)+\lambda\cdot(g(x, y)-c) \qquad (1) L(x,y,λ)=f(x,y)+λ⋅(g(x,y)−c)(1)
我们通过对式子(1)中的三个变量求导,并令其等于0,来计算的鞍点
∇ x L ( x , y , λ ) = 0 ∇ y L ( x , y , λ ) = 0 ( 2 ) ∇ λ L ( x , y , λ ) = 0 \nabla_{x} \mathcal{L}(x, y, \lambda)=0 \\ \nabla_{y} \mathcal{L}(x, y, \lambda)=0 \qquad(2) \\ \nabla_{\lambda} \mathcal{L}(x, y, \lambda)=0 ∇xL(x,y,λ)=0∇yL(x,y,λ)=0(2)∇λL(x,y,λ)=0
这样,我们就能解出一些可能的点,然后在筛选出最优点。 因为,导数为0是某点是极值点的必要条件而不是充分条件
这样做的解释性如下:
如上图所示,函数 f ( x ) f(x) f(x)的等高线如图所示,梯度方向朝外,也就是越往外边大,约束条件 g ( x , y ) − c = 0 g(x,y)-c=0 g(x,y)−c=0的等高线为红线,梯度防线向左。我们要找到满足等式约束条件的最小值,也就是f(x,y),的等高线向外扩张的时候,第一次与红线相切的地方,就是我们要求的最小值,因为相切时候是f(x,y)由小变大的时候第一次满足等式约束条件,而越往外函数值越大,所以当前就是我们要求的最小值。
此时因为相切,原函数和条件函数在切点的法线是共线的,并且切点在约束函数上有满足约束条件,我们有:
f ′ ( x ) = λ g ′ ( x ) f ′ ( y ) = λ g ′ ( y ) g ( x , y ) − c = 0 f^{\prime}(x)=\lambda g^{\prime}(x) \\ f^{\prime}(y)=\lambda g^{\prime}(y) \\ g(x, y)-c =0 f′(x)=λg′(x)f′(y)=λg′(y)g(x,y)−c=0
这不就是式子(2)中的结果么 ,从而解释了拉格朗日乘法求极值的可解释性。
如图所示,现在又两个等式约束 g 1 ( x , y ) − c 1 = 0 和 g 2 ( x , y ) − c 2 = 0 g_{1}(x, y)-c_{1} =0 和g_{2}(x, y)-c_{2} =0 g1(x,y)−c1=0和g2(x,y)−c2=0:
这是就要引入两个拉格朗日乘子 λ 1 , λ 2 \lambda_{1} ,\lambda_{2} λ1,λ2,求解的方法,求三次导,我们可以得到:
f ′ ( x ) = λ 1 g 1 ′ ( x ) + λ 2 g 2 ′ ( x ) f ′ ( y ) = λ 2 g ′ ( y ) + λ 2 g 2 ′ ( y ) g 1 ( x , y ) − c 1 = 0 g 2 ( x , y ) − c 2 = 0 f^{\prime}(x)=\lambda_{1} g_{1}^{\prime}(x) + \lambda_{2} g_{2}^{\prime}(x)\\ f^{\prime}(y)=\lambda_{2} g^{\prime}(y) + \lambda_{2} g_{2}^{\prime}(y) \\ g_{1}(x, y)-c_{1} =0 \\ g_{2}(x, y)-c_{2} =0 f′(x)=λ1g1′(x)+λ2g2′(x)f′(y)=λ2g′(y)+λ2g2′(y)g1(x,y)−c1=0g2(x,y)−c2=0
第三四行的等式就是等式约束项,第一二行的等式在几何意义上,原函数在切点处切线的法向量要由 g 1 , g 2 g_{1},g_{2} g1,g2在该点的法向量线性表出,由图上看a要能被bc线性表出。
假设现在有不等式约束 g ( x , y ) − c ≤ 0 g(x,y) -c \le0 g(x,y)−c≤0,五角星区域是我们满足不等式约束的区域。
此时我们仍然用拉格朗日乘法将对不等式约束引入拉格朗日乘法。习惯上对等式约束使用 β \beta β乘子,对不等式约束使用 α \alpha α乘子。
L ( x , y , λ ) = f ( x , y ) + λ ⋅ ( g ( x , y ) − c ) \mathcal{L}(x, y, \lambda)=f(x, y)+\lambda\cdot(g(x, y)-c) L(x,y,λ)=f(x,y)+λ⋅(g(x,y)−c)
我们仍然按照三步求导的战略,仍旧可以得到:
f ′ ( x ) = λ g ′ ( x ) f ′ ( y ) = λ g ′ ( y ) g ( x , y ) − c = 0 f^{\prime}(x)=\lambda g^{\prime}(x) \\ f^{\prime}(y)=\lambda g^{\prime}(y) \\ g(x, y)-c =0 f′(x)=λg′(x)f′(y)=λg′(y)g(x,y)−c=0
但是这和等式约束有什么区别吗,难道完全一样吗?肯定不是的,看上图,要想最小值点落在约束不等式所在的曲线上,那么原函数的梯度和约束曲线的梯度一定要是反方向的。
也就是
f ′ ( x ) + λ g ′ ( x ) = 0 f ′ ( y ) + λ g ′ ( y ) = 0 s . t . λ ≥ 0 f^{\prime}(x) + \lambda g^{\prime}(x) = 0 \\ f^{\prime}(y)+ \lambda g^{\prime}(y) =0\\ s.t. \lambda \ge 0 f′(x)+λg′(x)=0f′(y)+λg′(y)=0s.t.λ≥0
也就是说如果最优解落在约束曲线上,除了原函数在该点的法向量能被约束曲线线性表出外,原函数的法向量的符号还得和约束曲线们的法向量符号相反,即切点约束条件区域扩大的方向与原函数增大的方向相同。
这就引出KKT条件之大部分(除了条件d):
∇ x L ( x ∗ , α ∗ , β ∗ ) = 0 ( a ) ∇ α L ( x ∗ , α ∗ , β ∗ ) = 0 ( b ) ∇ β L ( x ∗ , α ∗ , β ∗ ) = 0 ( c ) α i ∗ c i ( x ∗ ) = 0 , i = 1 , 2 , ⋯   , k ( d ) c i ( x ∗ ) ≤ 0 , i = 1 , 2 , ⋯   , k ( e ) α i ∗ ≥ 0 , i = 1 , 2 , ⋯   , k ( f ) h j ( x ∗ ) = 0 , j = 1 , 2 , ⋯   , l ( g ) \nabla_{x} L\left(\boldsymbol{x}^{*}, \boldsymbol{\alpha}^{*}, \boldsymbol{\beta}^{*}\right)=0 \qquad (a)\\ \nabla_{\boldsymbol{\alpha}} L\left(\boldsymbol{x}^{*}, \boldsymbol{\boldsymbol { \alpha }}^{*}, \boldsymbol{\beta}^{*}\right)=0 \qquad (b) \\ \nabla_{\beta} L\left(\boldsymbol{x}^{*}, \boldsymbol{\alpha}^{*}, \boldsymbol{\beta}^{*}\right)=0 \qquad (c)\\ \alpha_{i}^{*} c_{i}\left(\boldsymbol{x}^{*}\right)=0, \quad i=1,2, \cdots, k \qquad (d)\\ c_{i}\left(\boldsymbol{x}^{*}\right) \leq 0, \quad i=1,2, \cdots, k \qquad (e)\\ \alpha_{i}^{*} \geq 0, \quad i=1,2, \cdots, k \qquad (f)\\ h_{j}\left(\boldsymbol{x}^{*}\right)=0, \quad j=1,2, \cdots, l \qquad (g) ∇xL(x∗,α∗,β∗)=0(a)∇αL(x∗,α∗,β∗)=0(b)∇βL(x∗,α∗,β∗)=0(c)αi∗ci(x∗)=0,i=1,2,⋯,k(d)ci(x∗)≤0,i=1,2,⋯,k(e)αi∗≥0,i=1,2,⋯,k(f)hj(x∗)=0,j=1,2,⋯,l(g)
由上图可知, g 3 g_{3} g3函数的约束时没有起任何作用的,并且最优解不会落在 g 3 g_{3} g3上,但是在上面的KKT条件中 g 3 g_{3} g3和其对应 λ \lambda λ的系数都参与了运算,如何消除其作用呢,这就引出了KKT的最后一个条件d:
α i ∗ c i ( x ∗ ) = 0 , i = 1 , 2 , ⋯   , k ( d ) \alpha_{i}^{*} c_{i}\left(\boldsymbol{x}^{*}\right)=0, \quad i=1,2, \cdots, k \qquad (d)\\ αi∗ci(x∗)=0,i=1,2,⋯,k(d)
最优解在约束曲线上时,其表达式为0,若不在某条约束曲线上,为了使最后的结果为0,其系数必须为0,从而使不产生作用的曲线在计算时不产生作用。该条件也称为KKT的对偶互补条件。
到此为止我们推出了KKT的所有条件。
原始问题,求在等式和不等式约束条件下的函数最小值:
min x ∈ R n f ( x ) s . t . c i ( x ) ≤ 0 , i = 1 , 2 , ⋯   , k h j ( x ) = 0 , j = 1 , 2 , ⋯   , l \min _{\boldsymbol{x} \in \mathbf{R}^{n}} f(\boldsymbol{x}) \\ s.t. \quad c_{i}(\boldsymbol{x}) \leq 0, \quad i=1,2, \cdots, k \\ \qquad h_{j}(\boldsymbol{x})=0, \quad j=1,2, \cdots, l x∈Rnminf(x)s.t.ci(x)≤0,i=1,2,⋯,khj(x)=0,j=1,2,⋯,l
为了求解原始问题,我们首先引入广义拉格朗日函数(generalized Lagrange function):
L ( x , α , β ) = f ( x ) + ∑ i = 1 k α i c i ( x ) + ∑ j = 1 l β j h j ( x ) ( 3 ) L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta})=f(\boldsymbol{x})+\sum_{i=1}^{k} \alpha_{i} c_{i}(\boldsymbol{x})+\sum_{j=1}^{l} \beta_{j} h_{j}(\boldsymbol{x}) \quad(3) L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x)(3)
其中:
通过拉格朗日乘法,把约束条件加上新的变量构成了一个新的函数,虽然新的函数中变量变多了,但是没有了限制条件。
考虑x的函数(下标P表示原始问题):
θ P ( x ) = max α , β : α i ≥ 0 L ( x , α , β ) \theta_{P}(\boldsymbol{x})=\max _{\boldsymbol{\alpha}, \boldsymbol{\beta} : \alpha_{i} \geq 0} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) θP(x)=α,β:αi≥0maxL(x,α,β)
这个max的意义是在于,我们将所有的x样本根据取值的不同分成了满足条件和不满足条件的两部分,用函数的取值代替了原来的约束条件。现在这个 θ P ( x ) \theta_{P}(\boldsymbol{x}) θP(x)是x的函数,给定某一个x,我们让 θ P ( x ) \theta_{P}(\boldsymbol{x}) θP(x) 取最大,只要根据x的取值情况来调整其系数 α β \alpha\beta αβ 即可。x的取值情况有两种:
所以我们就有如下的式子,
θ P ( x ) = { f ( x ) x 满 足 原 始 问 题 的 约 束 + ∞ x 其 他 \theta_{P}(\boldsymbol{x})=\left\{\begin{array}{l}{f(\boldsymbol{x})} \quad x满足原始问题的约束 \\ {+\infty} \quad x 其他\end{array} \right. θP(x)={f(x)x满足原始问题的约束+∞x其他
再考虑极小化问题:
min x θ P ( x ) = min x max α , β ⋅ α i ≥ 0 L ( x , α , β ) \min _{\boldsymbol{x}} \theta_{P}(\boldsymbol{x})=\min _{\boldsymbol{x}} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta} \cdot \alpha_{i} \geq 0} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) xminθP(x)=xminα,β⋅αi≥0maxL(x,α,β)
这个问题的解和原问题是等价的,即它和原始问题(带有约束条件的f(x)最小化问题)有着相同的解。因为对 θ P ( x ) \theta_{P}(\boldsymbol{x}) θP(x)取最小值,就是对 f ( x ) f(x) f(x)取最小值。如果我们定义原始问题的最优解为 p ∗ p^{*} p∗,那么我们也有
p ∗ = min x θ P ( x ) p^{*}=\min _{x} \theta_{P}(x) p∗=xminθP(x)
到这里,我们就将原来带有约束条件的极小化问题,变成了不带约束条件的极小极大问题。到这一步我们还是无法求解,所以我们引入对偶问题,将极小极大问题转化为极大极小问题。
定义:
θ D ( α , β ) = min x L ( x , α , β ) \theta_{D}(\alpha, \beta)=\min _{x} L(x, \alpha, \beta) θD(α,β)=xminL(x,α,β)
然后极大化 θ D \theta_{D} θD
max α , β θ D ( α , β ) = max α , β min x L ( x , α , β ) s . t . a i ≥ 0 , i = 1 , 2 , ⋯   , k ( 4 ) \max _{\alpha, \beta} \theta_{D}(\alpha, \beta)=\max _{\boldsymbol{\alpha}, \boldsymbol{\beta}} \min _{\boldsymbol{x}} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \quad s.t. \quad a_{i} \ge 0,\quad i=1,2, \cdots, k \qquad(4) α,βmaxθD(α,β)=α,βmaxxminL(x,α,β)s.t.ai≥0,i=1,2,⋯,k(4)
之前我们是先求极大值,再求极小值,先求极大值的好处是可以根据结果将数据分为满足条件和不满足条件的两部分,然后再对结果求最小,即变成了对满足条件的x求最小值还原了原始问题。现在我们反过来,先求极小值再求极大值,将该问题成为原始问题的对偶问题,定义对偶问题的最优值: d ∗ = max α , β θ D ( α , β ) d^{*}=\max _{\alpha, \beta} \theta_{D}(\alpha, \beta) d∗=α,βmaxθD(α,β)
原始问题先固定 x x x,求最优化(极大化)的 α \alpha α, β \beta β的解,再确定 x x x(通过极小化)
而对偶问题是先固定 α \alpha α, β \beta β,求最优化(极小化)的 x x x的解,在确定 α \alpha α, β \beta β(通过极大化)
我们最开始要解决的问题是等式和不等式约束小的极小值问题,即:
min { f ( x ) : g i ( x ) ≤ 0 , i = 1 , 2 , … , m } ( 2.0 ) \min \left\{f(\mathbf{x}) : g_{i}(\mathbf{x}) \leq 0, i=1,2, \ldots, m\right\} \qquad(2.0) min{f(x):gi(x)≤0,i=1,2,…,m}(2.0)
(把等式约束合并到了不等式约束中)
假设一个下界为 u u u(比真实最优解小),则对于方程组(2.1)无解:
f ( x ) < v ( 2.1 ) g i ( x ) ≤ 0 , i = 1 , 2 , … , m \begin{array}{l}{f(\mathbf{x})<v} \qquad (2.1) \\ {g_{i}(\mathbf{x}) \leq 0, i=1,2, \dots, m}\end{array} f(x)<v(2.1)gi(x)≤0,i=1,2,…,m
如果方程组(2.1)有解,那么可以推出对于任意的 λ ≥ 0 \lambda \ge 0 λ≥0,如下方程(2.3)有解:
f ( x ) + ∑ i = 1 m λ i g i ( x ) < v ( 2.3 ) f(\mathbf{x})+\sum_{i=1}^{m} \lambda_{i} g_{i}(\mathbf{x})<v \qquad (2.3) f(x)+i=1∑mλigi(x)<v(2.3)
根据逆否命题,方程组(2.1)无解的充分条件是存在 λ ≥ 0 \lambda \ge0 λ≥0,让方程(3)无解(即2.3中左变的值大于等于 u u u。将存在xx大于等于xx的条件转化为 min问题,则方程(3)无解的充要条件是
min x f ( x ) + ∑ i = 1 m λ i g i ( x ) ≥ v ( 2.4 ) \min _{\mathbf{x}} f(\mathbf{x})+\sum_{i=1}^{m} \lambda_{i} g_{i}(\mathbf{x}) \geq v \qquad(2.4) xminf(x)+i=1∑mλigi(x)≥v(2.4)
因为我们要找最好的下界,所以这个时候的 v v v和 λ \bm{\lambda} λ 应该取
v = max λ ≥ 0 min x f ( x ) + ∑ i = 1 m λ i g i ( x ) v=\max _{\lambda \geq 0} \min _{\mathbf{x}} f(\mathbf{x})+\sum_{i=1}^{m} \lambda_{i} g_{i}(\mathbf{x}) v=λ≥0maxxminf(x)+i=1∑mλigi(x)
即在满足各种条件下的 v v v的最大值,可理解为 v v v本来非常小但是不满足条件,满满增大到满足条件为止,此时的 v v v为min值
我们要求原始问题的最优解,现在转化成了对偶问题的最优解,这两个解有什么关系呢,我们最想看到的就是这两个解是等价的,这样直接解对偶问题就行。
若原始问题和对偶问题都有最优值,则:
d ∗ = max α , β min x L ( x , α , β ) ≤ min x max α , β : α i ≥ 0 L ( x , α , β ) = p ∗ d^{*}=\max _{\boldsymbol{\alpha}, \boldsymbol{\beta}} \min _{\boldsymbol{x}} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \leq \min _{\boldsymbol{x}} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta} : \alpha_{i} \geq 0} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta})=p^{*} d∗=α,βmaxxminL(x,α,β)≤xminα,β:αi≥0maxL(x,α,β)=p∗
证明:
对于任意的 x x x, α , β \alpha , \beta α,β有:
min x L ( x , α , β ) ≤ L ( x , α , β ) ≤ max α , β : α i ≥ 0 L ( x , α , β ) \min _{\boldsymbol{x}} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \leq L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \leq \max _{\boldsymbol{\alpha}, \boldsymbol{\beta} : \alpha_{i} \geq 0} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) xminL(x,α,β)≤L(x,α,β)≤α,β:αi≥0maxL(x,α,β)
所以有:
min x L ( x , α , β ) ≤ max α , β : α i ≥ 0 L ( x , α , β ) \min _{\boldsymbol{x}} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \leq \max _{\boldsymbol{\alpha}, \boldsymbol{\beta} : \alpha_{i} \geq 0} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) xminL(x,α,β)≤α,β:αi≥0maxL(x,α,β)
因为上述式子是在任意条件下的 x x x, α , β \alpha , \beta α,β,最大最小是任意条件中的特殊情况,所以我们有:
d ∗ = max α , β min x L ( x , α , β ) ≤ min x max α , β : α i ≥ 0 L ( x , α , β ) = p ∗ d^{*}=\max _{\alpha, \beta} \min _{x} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta}) \leq \min _{\boldsymbol{x}} \max _{\boldsymbol{\alpha}, \boldsymbol{\beta} : \alpha_{i} \geq 0} L(\boldsymbol{x}, \boldsymbol{\alpha}, \boldsymbol{\beta})=p^{*} d∗=α,βmaxxminL(x,α,β)≤xminα,β:αi≥0maxL(x,α,β)=p∗
即对偶问题的解小于等于原始问题的解 d ∗ ≤ p ∗ d^{*} \le p^{*} d∗≤p∗。只有当等号成立的时候我们才能通过对偶问题来解决原始问题,那什么时候等式成立呢,那就是我们上述所说的KKT条件满足的时候。