拉格朗日乘子法与KKT条件核心原理(小白都能看懂)

问题背景

假设有一座山,山上有一条路。我们只能走在这条路上,其他的地方无法到达。在此基础上,我想知道我始终在路上的情况下,可能达到的最高点及其高度。

拉格朗日乘子法和KKT条件解决的正是这么个问题。我们想知道在某个约束条件(山间小路)的限制下,所能达到的最值点(最大高度)。是一个限制条件下的最优化问题。

拉格朗日乘子法的应用十分广泛,它是SVM的理论基础,是凸优化的重要研究部分。所以,我们细致地分析一下这一方法的内核。

等式约束条件下的最优化

我们先从最简单的开始,假设这条盘山公路的宽度无限趋近于于0。如下图所示(图片来自知乎

图片名称

其实把这个问题抽象起来,就是
m i n f ( x )       s . t . g ( x ) = 0 min f(x)    s.t.g(x)=0 minf(x)   s.t.g(x)=0 g ( x ) = 0 g(x)=0 g(x)=0确实并不意味着约束条件一定是一条线,但是我们就先这么做着,后面你会发现是不是线其实无所谓)
(我这里的 x x x是指一个多维向量,不是一个值,是从一维泛化到了任意的维度)

这个式子本身其实不太好解,因为求 f ( x ) f(x) f(x)最小值这个操作本身就蕴含着很多东西,是一个比较复杂的操作,而且还需要考虑 g ( x ) g(x) g(x)的限制。但是我们可以把它变得容易一些,具体方法如下:

我们以山为例,向外做等高线,每次等高线都一定是个闭合曲线(因为山上点的高度不可能出现不连续的情况),第一次所作等高线如下:

图片名称

图中这条绿线就是一条等高线。做完后,我们发现不对径,这条等高线上所有点都不在公路 g ( x ) = 0 g(x)=0 g(x)=0上,也就是说,这个高度的所有点都是不符合约束条件的。

那咋办呢?,继续向外扩大等高线呗。

图片名称

我们假设降低高度至 h 0 h_0 h0后,等高线扩大成了这样(画得很丑请不要介意)。此时我们惊奇地发现。这条等高线和 g ( x ) = 0 g(x)=0 g(x)=0的曲线相切了(对不起,画得不太像)。也就是说,这条等高线上有一个点满足了限制条件。换个角度,就是有一个满足限制 g ( x ) = 0 g(x)=0 g(x)=0的点,它的高度为 h 0 h_0 h0。进一步说,也就是说, f ( x ) f(x) f(x)在满足限制条件 g ( x ) = 0 g(x)=0 g(x)=0的情况下是有可能等于 h 0 h_0 h0

如果我们把刚才这个过程从离散的变成连续的,那么就可以理解为,在高度取值在 ( h 0 , h m a x ] (h_0,h_{max}] (h0,hmax]的这段时期,等高线始终没有与公路有任何一个交点,当我们取到 h = h 0 h=h_0 h=h0时,第一次出现了一个交点,也就是上面说的 f ( x ) f(x) f(x)可能在满足限制条件 g ( x ) = 0 g(x)=0 g(x)=0的情况下取 h 0 h_0 h0。那么既然比 h 0 h_0 h0高的高度肯定取不到点,即无法满足限制条件, h 0 h_0 h0当然就是限制条件下的最高高度啦。

上面这个过程中,第一次有交点的时候是相切的切点,这是不是一个定论呢?答案是肯定的。因为假设交点不是二者的切点,说明 g ( x ) = 0 g(x)=0 g(x)=0在该点两侧一定分别在闭合曲面 f ( x ) = h f(x)=h f(x)=h外/内,而 f ( x ) = h f(x)=h f(x)=h又是一个闭合的曲线/面,那他们肯定还有另一个交点。(关于这一点,学过高斯定理的人应该也拿这个定理证明过通过任何闭合曲面的磁通量为0,具体为啥就当大家都能理解了)。我们以其中一个点 x 1 x_1 x1为例,设其梯度为 ▽ 1 \bigtriangledown_1 1,任何一个确定的梯度(除了这里根本考虑不到的一维)一定有无数个非全0线性组合 α \alpha α,可以使其在某个方向上导数为0。换言之, g ( x 1 + α ) = g ( x 1 ) + α ▽ 1 = 0 g(x1+\alpha)=g(x1)+\alpha \bigtriangledown_1=0 g(x1+α)=g(x1)+α1=0,但是既然不相切,那么 f ( x ) f(x) f(x)在该点的梯度 ▽ 2 \bigtriangledown_2 2一定满足 ∀ k ∈ R , ▽ 2 ≠ k ∗ ▽ 1 \forall k\in R, \bigtriangledown_2 \neq k*\bigtriangledown_1 kR,2=k1,那么这时候,如果 α ▽ 1 = α ▽ 2 = 0 \alpha\bigtriangledown_1=\alpha\bigtriangledown_2=0 α1=α2=0,我们假设有两个维度 i , j , s . t . ▽ 1 i ∗ ▽ 2 j ≠ ▽ 1 j ∗ ▽ 2 i i,j, s.t.\bigtriangledown_{1i}*\bigtriangledown_{2j}\neq\bigtriangledown_{1j}*\bigtriangledown_{2i} i,j,s.t.1i2j=1j2i,这个式子乍一看似乎有些难以理解,其实你把两边各除一个 ▽ 1 i ∗ ▽ 1 j \bigtriangledown_{1i}*\bigtriangledown_{1j} 1i1j会发现它表达的就是这两个维度上 ▽ 1 ▽ 2 \bigtriangledown_1\bigtriangledown_2 12不成相同的比例,只是多了一个对除0的保护。这个其实也很好证,如果每个维度二者比例都相同,那就意味着 ∃ k , ▽ 2 = k ▽ 1 \exist k, \bigtriangledown_2=k\bigtriangledown_1 k,2=k1,违背了我们一开始的假设。这个时候我们令 α ′ = α   e x c e p t   α i ′ = α i + δ / ▽ 1 i , α j ′ = α j − δ / ▽ 1 j \alpha'=\alpha  except  \alpha'_i=\alpha_i+\delta/\bigtriangledown_{1i}, \alpha'_j=\alpha_j-\delta/\bigtriangledown_{1j} α=α except αiαi+δ/1i,αj=αjδ/1j然后就会发现 ▽ 1 ∗ α i \bigtriangledown_1*\alpha_i 1αi的值没变,但是 ▽ 2 ∗ α \bigtriangledown_2*\alpha 2α增加了 δ ∗ ▽ 2 i ▽ 1 i − δ ∗ ▽ 2 j ▽ 1 j = δ ∗ ( ▽ 2 i ▽ 1 i − ▽ 2 j ▽ 1 j ) \frac{\delta*\bigtriangledown_{2i}}{\bigtriangledown_{1i}}-\frac{\delta*\bigtriangledown_{2j}}{\bigtriangledown_{1j}}=\delta*(\frac{\bigtriangledown_{2i}}{\bigtriangledown_{1i}}-\frac{\bigtriangledown_{2j}}{\bigtriangledown_{1j}}) 1iδ2i1jδ2j=δ(1i2i1j2j),由于我们前面说过 ▽ 1 i ∗ ▽ 2 j ≠ ▽ 1 j ∗ ▽ 2 i \bigtriangledown_{1i}*\bigtriangledown_{2j}\neq\bigtriangledown_{1j}*\bigtriangledown_{2i} 1i2j=1j2i,所以这个式子一定不是0。也就是说, ▽ 2 ∗ α i \bigtriangledown_2*\alpha_i 2αi一定改变了。

总的来说这个过程就是, ▽ 1 ∗ α i = 0 \bigtriangledown_1*\alpha_i=0 1αi=0,即 g ( x ) = 0 g(x)=0 g(x)=0,但是 ▽ 2 ∗ α i ≠ 0 \bigtriangledown_2*\alpha_i\neq 0 2αi=0,即 f ( x ) ≠ h f(x)\neq h f(x)=h。如果 f ( x ) < h f(x)<h f(x)<h我们就把 α \alpha α去取个相反数,总的来说,一定有办法取到更大的 f ( x ) f(x) f(x)。所以说,相交时一定不是 h h h的最值。进而得到,最值一定是相切时的切点取到

既然相切,那么 f ( x ) 和 g ( x ) f(x)和g(x) f(x)g(x)在这一点的梯度一定是成比例的(具体理解起来就是法向量一定成比例)。那么我们就得到了一个等式 ▽ f = λ ∗ ▽ g , λ ∈ R \bigtriangledown_f=\lambda*\bigtriangledown_g, \lambda\in R f=λg,λR这个式子有什么用呢?用处可大了。我们之前说过, m i n f ( x ) minf(x) minf(x)求起来是一个比较复杂的过程,但是这个方程求解起来就很容易,加上一开始的限制条件 g ( x ) = 0 g(x)=0 g(x)=0。我们就得到了一个方程组
{ ▽ f = λ ∗ ▽ g g ( x ) = 0 \left\{ \begin{aligned} \bigtriangledown_f=\lambda*\bigtriangledown_g \\ g(x)=0 \end{aligned} \right. {f=λgg(x)=0
假设 x x x是n维向量,这个方程组总共包含 n + 1 n+1 n+1个方程(梯度是一个向量,梯度等于0必须每一维都为0),恰好可以解出所有的 λ 和 x i \lambda和x_i λxi

我们注意到第二式子中的 g ( x ) g(x) g(x)其实满足 g ( x ) = − ∂ ( f ( x ) − λ g ( x ) ) ∂ λ g(x)=-\frac{\partial (f(x)-\lambda g(x))}{\partial \lambda} g(x)=λ(f(x)λg(x)),也就是说 g ( x ) = 0 ⇔ ∂ ( f ( x ) − λ g ( x ) ) ∂ λ = 0 g(x)=0 \Leftrightarrow \frac{\partial (f(x)-\lambda g(x))}{\partial \lambda}=0 g(x)=0λ(f(x)λg(x))=0,而第一个式子中每一维的式子都可以写成 ∂ ( f ( x ) − λ g ( x ) ) ∂ x i = 0 \frac{\partial (f(x)-\lambda g(x))}{\partial x_i}=0 xi(f(x)λg(x))=0。所以整合一下,整个方程组其实就是 ▽ ( f ( x ) − λ g ( x ) ) = 0 \bigtriangledown (f(x)-\lambda g(x))=0 (f(x)λg(x))=0。左边被求梯度的这个函数其实就是 L ( x , λ ) L(x,\lambda) L(x,λ),也就是我们的拉格朗日乘子。

换而言之,整个问题从一开始的求解 m i n f ( x )       s . t . g ( x ) = 0 min f(x)    s.t.g(x)=0 minf(x)   s.t.g(x)=0转换成了求解 ▽ L ( x , λ ) = 0 \bigtriangledown L(x,\lambda)=0 L(x,λ)=0这么做的意义在于新的问题其实就是一个解方程而已,处理难度远低于本来求限制最值的处理难度。而这,正是拉格朗日乘子法的神来之笔。

不等式约束条件下的最优化问题

接下来我们考虑限制条件从 g ( x ) = 0 g(x) = 0 g(x)=0变成 g ( x ) ≤ 0 g(x)\leq 0 g(x)0,现在我们的道路从一条线变成了一个有宽度的段(还是那句话,并不一定,但是我们先按一般情况这么算着)

图片名称

我们这里就假设两个红线之间的段是限制条件 g ( x ) < = 0 g(x)<=0 g(x)<=0的所在区间。我们要在这个段内寻找极值。(至于边界是不是 g ( x ) = 0 g(x)=0 g(x)=0这个就不一定了)

寻找极值时分为两种情况: g ( x ) = 0 g(x)=0 g(x)=0 g ( x ) < 0 g(x)<0 g(x)<0

  1. 首先考虑 g ( x ) = 0 g(x)=0 g(x)=0的情况,这种情况实际上就是我们一开始在模块一中提到的问题, m i n f ( x ) s . t . g ( x ) = 0 minf(x) s.t. g(x)=0 minf(x)s.t.g(x)=0。此时我们可以直接沿用前面的结论,即把问题转换为求 m i n x L ( x , λ ) min_xL(x,\lambda) minxL(x,λ)且其解满足 ▽ L ( x , λ ) = 0 \bigtriangledown L(x,\lambda)=0 L(x,λ)=0
  2. 其次是 g ( x ) < 0 g(x)<0 g(x)<0,我们首先给出结论:这种情况下的极值满足 ▽ f ( x ) = 0 \bigtriangledown f(x)=0 f(x)=0。现在我们给出证明。

我们采取反证法,假设最值点一个满足 g ( x ) < 0 g(x)<0 g(x)<0的约束条件且 ▽ f ( x ) ≠ 0 \bigtriangledown f(x)\neq 0 f(x)=0的点。既然 ▽ f ( x ) ≠ 0 \bigtriangledown f(x)\neq 0 f(x)=0,那么至少有一个方向上的梯度不为0。我们不妨假设这个维度叫 x i x_i xi。那么令 x ′ = x   e x c e p t   x i ′ = x i + δ ( δ > 0 ) x'=x  except x'_i=x_i+\delta(\delta>0) x=x except xi=xi+δ(δ>0) x ′ ′ = x   e x c e p t   x i ′ ′ = x i − δ ( δ > 0 ) x''=x except x''_i=x_i-\delta(\delta > 0) x=x except xi=xiδ(δ>0)那么就有 f ( x ′ ) = f ( x ) + ∂ f ( x ) ∂ x i ∗ δ f(x')=f(x)+\frac{\partial f(x)}{\partial x_i}*\delta f(x)=f(x)+xif(x)δ f ( x ′ ′ ) = f ( x ) − ∂ f ( x ) ∂ x i ∗ δ f(x'')=f(x)-\frac{\partial f(x)}{\partial x_i}*\delta f(x)=f(x)xif(x)δ我们之前提过, ∂ f ( x ) ∂ x i ≠ 0 \frac{\partial f(x)}{\partial x_i}\neq 0 xif(x)=0,所以说 ∂ f ( x ) ∂ x i ∗ δ \frac{\partial f(x)}{\partial x_i}*\delta xif(x)δ一定也是一个非零量。所以说 f ( x ′ ) 、 f ( x ′ ′ ) f(x')、f(x'') f(x)f(x)必定有一个大/小于 f ( x ) f(x) f(x)。这就说明 f ( x ) f(x) f(x)其实并非最值点,还有更大/小的。违背了初始题设,所以假设不成立。

这样我们就说明了 g ( x ) < 0 g(x)<0 g(x)<0约束下的极值点一定满足 ▽ f ( x ) = 0 \bigtriangledown f(x)=0 f(x)=0

现在我们把这两种情况结合起来。首先我们得明白,无论是 g ( x ) = 0 g(x)=0 g(x)=0还是 g ( x ) < 0 g(x)<0 g(x)<0,最值的取值点一定还是相切的,具体证明和上面一模一样。只不过从 g ( x ) = 0 g(x)=0 g(x)=0变成了 g ( x ) + b = 0 ( b > = 0 ) g(x)+b=0(b>=0) g(x)+b=0(b>=0)而已。本质上还是同一个函数。

那么就有前面得到的那个结论:梯度成比例。即 ▽ f = λ ▽ g , λ ≤ 0 \bigtriangledown_f=\lambda \bigtriangledown_g, \lambda \leq 0 f=λg,λ0。不过这一次的约束条件不再是等式了,而是不等式 g ( x ≤ 0 g(x\leq 0 g(x0,这样对我们的求解来说还是有困难,怎么办呢?

我们注意到, g ( x ) = 0 g(x)=0 g(x)=0 g ( x ) < 0 g(x)<0 g(x)<0的限制条件分别是 g ( x ) = 0 g(x)=0 g(x)=0 ▽ f ( x ) = 0 \bigtriangledown f(x)=0 f(x)=0,这两个限制条件都是等于0的等式,它们的结合很简单 g ( x ) ⋅ ▽ f ( x ) = 0 g(x)\cdot \bigtriangledown f(x)=0 g(x)f(x)=0

至此,我们得到了不等式约束条件下的拉格朗日乘子和求解条件。

原问题 m i n f ( x )   s . t . g ( x ) ≤ 0 minf(x) s.t.g(x)\leq0 minf(x) s.t.g(x)0转换为 m i n x , λ L ( x , λ )   s . t . g ( x ) ≤ 0 min_{x,\lambda}L(x,\lambda) s.t.g(x)\leq 0 minx,λL(x,λ) s.t.g(x)0解的条件满足

{ ▽ f = λ ∗ ▽ g g ( x ) ⋅ ▽ f ( x ) = 0 \left\{ \begin{aligned} \bigtriangledown_f=\lambda*\bigtriangledown_g \\ g(x)\cdot \bigtriangledown f(x)=0 \end{aligned} \right. {f=λgg(x)f(x)=0

多条件约束下的最优化问题

现在我们更进一步,现在需要满足的约束条件不再是一个,而是两个。比如山上有一条溪流和一条粮道,如果我们不在这其中的任意一条上都会饿/渴死。所以我们只能保证自己在它们的交集处。

问题抽象出来就是 m i n x f ( x )   s . t . g ( x ) = 0   a n d   h ( x ) = 0 min_xf(x) s.t.g(x)=0  and  h(x)=0 minxf(x) s.t.g(x)=0 and h(x)=0

图片如下所示(图片来自知乎

图片名称

这个是平面图,所以大家看到的两个约束条件的交集是一个点,这可能对我们对最优化过程的理解带来障碍。所以大家将就着拿这个图想象一下,假装它是一个三维的,这是它在 ( x , y ) (x,y) (x,y)上的投影。这样约束条件的交集就是一条线了。

这时候我们在扩大等值线的时候就不能简单地使其和一条线有交点了,我们需要保证它和两个约束条件都有交点。

老规矩,第一次有交点的时候必然是相切的,这一点依然不变。虽然这一次的限制条件是两个限制条件的交集,但没有办法否认它依然是连续的域,脱离了两个限制条件,它仍然是一般性的连续曲线/面/超平面。所以原来的条件依然有效。

▽ f \bigtriangledown_f f依然是本来的求法,这个没啥问题,但是 ▽ g \bigtriangledown_g g就不太一样了。因为这次我们不知道曲线本身的公式,我们只知道它是两个面的交集。

关于原约束条件

{ g ( x ) = 0 h ( x ) = 0 \left\{ \begin{aligned} g(x)=0 \\ h(x)=0 \end{aligned} \right. {g(x)=0h(x)=0

我们设其交集区域方程为 γ = γ ( t ) = ( x 1 ( t ) , x 2 ( t ) . . . . . . x n ( t ) ) \gamma=\gamma(t)=(x_1(t), x_2(t)......x_n(t)) γ=γ(t)=(x1(t),x2(t)......xn(t)),所以 g ( x ) = g ( γ ( t ) ) g(x)=g(\gamma (t)) g(x)=g(γ(t))

随后我们可以得到 0 = ∂ g ∂ t = ∂ g ∂ γ d γ d t 0=\frac{\partial g}{\partial t}=\frac{\partial g}{\partial \gamma}\frac{d\gamma}{dt} 0=tg=γgdtdγ

这其中 ∂ g ∂ γ = ( ∂ g ∂ x 1 , ∂ g ∂ x 2 , . . . . . . , ∂ g ∂ x n ) , d γ d t = ( d x 1 d t , d x 2 d t , . . . . . . , d x n d t ) \frac{\partial g}{\partial \gamma}=(\frac{\partial g}{\partial x_1}, \frac{\partial g}{\partial x_2}, ......, \frac{\partial g}{\partial x_n}), \frac{d\gamma}{dt}=(\frac{dx_1}{dt}, \frac{dx_2}{dt},......, \frac{dx_n}{dt}) γg=(x1g,x2g,......,xng),dtdγ=(dtdx1,dtdx2,......,dtdxn)

前者是 g ( x ) g(x) g(x)的梯度,后者是 γ ( t ) \gamma(t) γ(t)的切向量。

换言之, γ ( t ) \gamma(t) γ(t)的切向量肯定与 g ( x ) g(x) g(x)的梯度垂直,同理, γ ( t ) \gamma(t) γ(t)的切向量还与 h ( x ) h(x) h(x)的梯度垂直。

这也就意味着, γ ( t ) \gamma(t) γ(t)的切向量在 g ( x ) g(x) g(x) h ( x ) h(x) h(x)梯度组成的超平面内。所以说, γ ( t ) \gamma(t) γ(t)的切向量一定可以用 a ∗ g ( x ) + b ∗ h ( x ) , a ∈ R , b ∈ R a*g(x)+b*h(x), a\in R, b\in R ag(x)+bh(x),aR,bR来线性表示。

所以说,这一次我们能得到的梯度关系是 ▽ f = a ▽ g + b ▽ h , a ∈ R , b ∈ R \bigtriangledown_f=a\bigtriangledown_g+b\bigtriangledown_h, a\in R, b\in R f=ag+bh,aR,bR

所以,我们得到的式子是 L ( x , a , b ) = f ( x ) + a ∗ g ( x ) + b ∗ h ( x ) L(x, a, b) = f(x)+a*g(x)+b*h(x) L(x,a,b)=f(x)+ag(x)+bh(x)这个式子加上约束条件,就是我们的KKT条件。

KKT条件

所谓的KKT条件,是指对一类符合条件的所有拉格朗日乘子法问题进行公式化求解的过程。具体指的是满足 m i n / m a x x f ( x ) min/max_xf(x) min/maxxf(x) s . t .   g i ( x ) ≤ 0   i = 1 , 2 , . . . . . . , m s.t. g_i(x)\leq0 i=1,2,......,m s.t. gi(x)0 i=1,2,......,m h j ( x ) = 0   j = 1 , 2 , . . . . . . , p h_j(x)=0 j=1,2,......,p hj(x)=0 j=1,2,......,p的一类问题。

其实整个求解过程就是把我们上面三种情况综合起来。因为每一步都是我们上面三种问题的其中一种。具体来说,KKT条件就是给出了上面的问题求解等价于求解 m i n / m a x x , α , β L ( x , α , β ) = f ( x ) + ∑ i = 1 m α i g i ( x ) + ∑ j = 1 p β j h j ( x ) min/max_{x, \alpha, \beta}L(x,\alpha, \beta)=f(x)+\sum^m_{i=1}\alpha_ig_i(x)+\sum^p_{j=1}\beta_jh_j(x) min/maxx,α,βL(x,α,β)=f(x)+i=1mαigi(x)+j=1pβjhj(x) s . t .   α i g i ( x ) = 0 s.t. \alpha_ig_i(x)=0 s.t. αigi(x)=0 h j ( x ) = 0 h_j(x)=0 hj(x)=0 α i ≥ 0 \alpha_i\geq0 αi0 g i ( x ) ≤ 0 g_i(x)\leq0 gi(x)0 i = 1 , 2 , . . . . . . , m   j = 1 , 2 , . . . . . . , p i=1,2,......,m j=1,2,......,p i=1,2,......,m j=1,2,......,p是不是每个式子你都在上面三种问题中见过。而且每个式子我们都证明过。所以这里不再赘述。

这么一看,是不是无论是拉格朗日乘子法还是KKT条件都是如此的自然而直观。愿本文能对你有所帮助。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值