拉格朗日乘子法(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
这个问题转换为
其中λi≠0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-3-Frame” class=”MathJax”>λi≠0λi≠0,称为拉格朗日乘子。
下面看一下wikipedia上是如何解释拉格朗日乘子法的合理性的。
现有一个二维的优化问题:
我们可以画图来辅助思考。
绿线标出的是约束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” style=”position: relative;” tabindex=”0” id=”MathJax-Element-8-Frame” class=”MathJax”>33的解。
所以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条件是什么,再讲为什么。
其中μk≥0,gk(x)≤0” style=”position: relative;” tabindex=”0” id=”MathJax-Element-18-Frame” class=”MathJax”>μk≥0,gk(x)≤0μk≥0,gk(x)≤0
∵μk≥0gk(x)≤0}” style=”position: relative;” tabindex=”0” id=”MathJax-Element-19-Frame” class=”MathJax”>∵μk≥0gk(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”>∵μk≥0gk(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
联合(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)μk≥0gk(x)≤0⎫⎭⎬⎪⎪L(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)μk≥0gk(x)≤0⎫⎭⎬⎪⎪L(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)λi≠0hi(x)=0μk≥0gk(x)≤0⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪L(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梯度的线性组合。