拉格朗日乘数法(等式约束和不等式约束)及KKT条件

拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。前提是:只有当目标函数为凸函数时,使用这两种方法才保证求得的是最优解。

对于无约束最优化问题,有很多经典的求解方法,参见无约束最优化方法。

拉格朗日乘子法

先来看拉格朗日乘子法是什么,再讲为什么。

minf(x)s.t.hi(x)=0i=1,2…,n” style=”position: relative;” tabindex=”0” id=”MathJax-Element-1-Frame” class=”MathJax”>minf(x)s.t.hi(x)=0i=1,2…,nminf(x)s.t.hi(x)=0i=1,2...,n

这个问题转换为

(1)min[f(x)+∑i=1nλihi(x)]” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-2-Frame” class=”MathJax”>min[f(x)+i=1nλihi(x)](1)(1)min[f(x)+∑i=1nλihi(x)]

其中λi≠0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-3-Frame” class=”MathJax”>λi0λi≠0,称为拉格朗日乘子。

下面看一下wikipedia上是如何解释拉格朗日乘子法的合理性的。

现有一个二维的优化问题:

(2)minf(x,y)s.t.g(x,y)=c” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-4-Frame” class=”MathJax”>minf(x,y)s.t.g(x,y)=c(2)(2)minf(x,y)s.t.g(x,y)=c

我们可以画图来辅助思考。

绿线标出的是约束g(x,y)=c” style=”position: relative;” tabindex=”0” id=”MathJax-Element-5-Frame” class=”MathJax”>g(x,y)=cg(x,y)=c的等高线。箭头表示斜率,和等高线的法线平行。

从图上可以直观地看到在最优解处,f和g的法线方向刚好相反(或者说叫梯度共线),即

(3)▽[f(x,y)+λ(g(x,y)−c)]=0λ≠0” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-7-Frame” class=”MathJax”>[f(x,y)+λ(g(x,y)c)]=0λ0(3)(3)▽[f(x,y)+λ(g(x,y)−c)]=0λ≠0

而满足3” style=”position: relative;” tabindex=”0” id=”MathJax-Element-8-Frame” class=”MathJax”>33的解。

(4)min F(x,y)=f(x,y)+λ(g(x,y)−c)” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-10-Frame” class=”MathJax”>min F(x,y)=f(x,y)+λ(g(x,y)c)(4)(4)min F(x,y)=f(x,y)+λ(g(x,y)−c)

所以2” style=”position: relative;” tabindex=”0” id=”MathJax-Element-11-Frame” class=”MathJax”>22等价。

新方程F(x,y)” style=”position: relative;” tabindex=”0” id=”MathJax-Element-13-Frame” class=”MathJax”>F(x,y)F(x,y)总等于零。

KKT条件

先看KKT条件是什么,再讲为什么。

(5)letL(x,μ)=f(x)+∑k=1qμkgk(x)” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-17-Frame” class=”MathJax”>letL(x,μ)=f(x)+k=1qμkgk(x)(5)(5)letL(x,μ)=f(x)+∑k=1qμkgk(x)

其中μk≥0,gk(x)≤0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-18-Frame” class=”MathJax”>μk0,gk(x)0μk≥0,gk(x)≤0

∵μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-19-Frame” class=”MathJax”>μk0gk(x)0}∵μk≥0gk(x)≤0}

∴” style=”position: relative;” tabindex=”0” id=”MathJax-Element-21-Frame” class=”MathJax”>

∴” style=”position: relative;” tabindex=”0” id=”MathJax-Element-23-Frame” class=”MathJax”>

上面的推导到此中断一下,我们看另外一个式子。

maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)” style=”position: relative;” tabindex=”0” id=”MathJax-Element-25-Frame” class=”MathJax”>maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)maxμminxL(x,μ)=maxμ[minxf(x)+minxμg(x)]=maxμminxf(x)+maxμminxμg(x)=minxf(x)+maxμminxμg(x)

这里的u” style=”position: relative;” tabindex=”0” id=”MathJax-Element-26-Frame” class=”MathJax”>uu无关,所以这个等式就是成立的。

∵μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-32-Frame” class=”MathJax”>μk0gk(x)0}∵μk≥0gk(x)≤0}

∴maxμminxμg(x)=0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-34-Frame” class=”MathJax”>maxμminxμg(x)=0∴maxμminxμg(x)=0

(8)∴maxμminxL(x,μ)=minxf(x)+maxμminxμg(x)=minxf(x)” style=”width: 100%; position: relative;” tabindex=”0” id=”MathJax-Element-36-Frame” class=”MathJax”>maxμminxL(x,μ)=minxf(x)+maxμminxμg(x)=minxf(x)(8)(8)∴maxμminxL(x,μ)=minxf(x)+maxμminxμg(x)=minxf(x)

联合(7)” style=”position: relative;” tabindex=”0” id=”MathJax-Element-38-Frame” class=”MathJax”>(7)(7)

亦即L(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-41-Frame” class=”MathJax”>L(x,μ)=f(x)+qk=1μkgk(x)μk0gk(x)0L(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}

我们把maxμminxL(x,μ)” style=”position: relative;” tabindex=”0” id=”MathJax-Element-43-Frame” class=”MathJax”>maxμminxL(x,μ)maxμminxL(x,μ)

最后总结一下:

L(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-57-Frame” class=”MathJax”>L(x,μ)=f(x)+qk=1μkgk(x)μk0gk(x)0L(x,μ)=f(x)+∑k=1qμkgk(x)μk≥0gk(x)≤0}

KKT条件是拉格朗日乘子法的泛化,如果我们把等式约束和不等式约束一并纳入进来则表现为:

L(x,λ,μ)=f(x)+∑i=1nλihi(x)+∑k=1qμkgk(x)λi≠0hi(x)=0μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-59-Frame” class=”MathJax”>L(x,λ,μ)=f(x)+ni=1λihi(x)+qk=1μkgk(x)λi0hi(x)=0μk0gk(x)0L(x,λ,μ)=f(x)+∑i=1nλihi(x)+∑k=1qμkgk(x)λi≠0hi(x)=0μk≥0gk(x)≤0}

注:x,λ,μ” style=”position: relative;” tabindex=”0” id=”MathJax-Element-61-Frame” class=”MathJax”>x,λ,μx,λ,μ都是向量。

∂L(x,λ,μ)∂x|x=x∗=0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-62-Frame” class=”MathJax”>L(x,λ,μ)x|x=x=0∂L(x,λ,μ)∂x|x=x∗=0梯度的线性组合。

你可能感兴趣的:(机器学习,SVM,最优化)