从拉格朗日乘数法到KKT条件
從拉格朗日乘數法到KKT條件
最近看論文遇到了Karush–Kuhn–Tucker (KKT)條件,想搞清楚這是個什么東東,因此就把這個東西認真學習一下并且分享出來,希望對大家有用。學習KKT就不得不先學習一下拉格朗日乘數法,于是不得不重新翻出被記憶塵封的高數~~
1.拉格朗日乘數法
在數學最優問題中,拉格朗日乘數法是一種尋找變量受一個或多個條件所限制的多元函數的極值的方法。這種方法將一個有n 個變量與k 個約束條件的最優化問題轉換為一個有n + k個變量的方程組的極值問題,其變量不受任何約束。這種方法引入了一種新的標量未知數,即拉格朗日乘數:約束方程的梯度(gradient)的線性組合里每個向量的系數。
以二元函數為例:
設給定二元函數
maxz=f(x,y)s.t.φ(x,y)=0max z=f(x,y)\\s.t. φ(x,y)=0maxz=f(x,y)s.t.φ(x,y)=0
為尋找z=f(x,y)在附加條件下的極值點,先做拉格朗日函數
F(x,y,λ)=f(x,y)+λφ(x,y)F(x,y,\lambda)=f(x,y)+\lambda φ(x,y)F(x,y,λ)=f(x,y)+λφ(x,y)
其中λ\lambdaλ為參數。令F(x,y,λ)F(x,y,λ)F(x,y,λ)對xxx和yyy和λλλ的一階偏導數等于零,即
Fx′=?x′(x,y)+λφx′(x,y)=0F'_x=?'_x(x,y)+λφ'_x(x,y)=0 Fx′?=?x′?(x,y)+λφx′?(x,y)=0
Fy′=?y′(x,y)+λφy′(x,y)=0F'_y=?'_y(x,y)+λφ'_y(x,y)=0Fy′?=?y′?(x,y)+λφy′?(x,y)=0
Fλ′=φ(x,y)=0F'_λ=φ(x,y)=0Fλ′?=φ(x,y)=0
由上述方程組解出x,yx,yx,y及λλλ,如此求得的(x,y)(x,y)(x,y),就是函數z=?(x,y)z=?(x,y)z=?(x,y)在附加條件φ(x,y)=0φ(x,y)=0φ(x,y)=0下的可能極值點。
若這樣的點只有一個,由實際問題可直接確定此即所求的點。
下面這篇博客可以很好的幫助理解:
支持向量機(SVM)課前準備(一)–拉格朗日乘子法 - be·freedom - 博客園 (cnblogs.com)
2.KKT條件
先給出一個KKT條件的實例,我們優化的目標是:
minimizef(x)s.t.ki=0gj≤0,i,j=1,2,3,...minimize f(x)\\ s.t. k_i = 0\\ g_j\leq0,i,j=1,2,3,... minimizef(x)s.t.ki?=0gj?≤0,i,j=1,2,3,...
其中,KKT條件如下:
?f+∑λiki+ωjgj=0.......(1)ki=0......(2)gj=0......(3)uj≥0......(4)ujgj=0......(5)\nabla f+\sum\lambda_ik_i+\omega_jg_j=0.......(1)\\ k_i=0......(2)\\ g_j=0......(3)\\ u_j\geq0......(4)\\ u_jg_j=0......(5)\\ ?f+∑λi?ki?+ωj?gj?=0.......(1)ki?=0......(2)gj?=0......(3)uj?≥0......(4)uj?gj?=0......(5)
公式1、2、3容易理解。
公式4、5,通過一個簡單例子說明:
minimizef(x)s.t.g1(x)=a?x≤0g2(x)=x?b≤0minimize f(x)\\s.t. g_1(x)=a-x\leq0\\g_2(x)=x-b\leq0minimizef(x)s.t.g1?(x)=a?x≤0g2?(x)=x?b≤0
gig_igi?添加一個 ≥0 的松弛變量a12,b12a_1^2,b_1^2a12?,b12?。得到
g1(x)=a?x+a12g2(x)=x?b+b12g_1(x)=a-x+a_1^2\\g_2(x)=x-b+b_1^2g1?(x)=a?x+a12?g2?(x)=x?b+b12?
由此,我們將不等式轉化為等式約束,應用拉格朗日乘子法。
拉格朗日方程如下:
L(x1,a1,b1,u1,u2)=f(x)+u1(a?x+a12)+u2(x?b+b12)...(1)L(x_1,a_1,b_1,u_1,u_2)=f(x)+u_1(a-x+a_1^2)+u_2(x-b+b_1^2)...(1)L(x1?,a1?,b1?,u1?,u2?)=f(x)+u1?(a?x+a12?)+u2?(x?b+b12?)...(1)
對方程求偏導如下:
{?F?x=?f?x+u1dg1dx+u2dg2dx=?f?x?u1+u2=0...(2)?F?u1=a?x+a12=g1+a12=0...(3)?F?u2=x?b+a12=g2+b12=0...(4)?F?a1=2u1a1=0...(5)?F?b1=2u2b1=0...(6),u1≥0,u2≥0\begin{cases}\frac {\partial F}{\partial x} =\frac{\partial f}{\partial x}+u_1\frac{ze8trgl8bvbqg_1}{ze8trgl8bvbqx}+u_2\frac {ze8trgl8bvbqg_2}{ze8trgl8bvbqx}=\frac{\partial f}{\partial x}-u_1+u_2=0...(2)\\\frac {\partial F}{\partial u_1}=a-x+a_1^2=g_1+a_1^2=0...(3)\\\frac {\partial F}{\partial u_2}=x-b+a_1^2=g_2+b_1^2=0...(4)\\\frac {\partial F}{\partial a_1}=2u_1a_1=0...(5)\\\frac {\partial F}{\partial b_1}=2u_2b_1=0...(6),u_1\geq0,u_2\geq0\end{cases}?????????????????x?F?=?x?f?+u1?dxdg1??+u2?dxdg2??=?x?f??u1?+u2?=0...(2)?u1??F?=a?x+a12?=g1?+a12?=0...(3)?u2??F?=x?b+a12?=g2?+b12?=0...(4)?a1??F?=2u1?a1?=0...(5)?b1??F?=2u2?b1?=0...(6),u1?≥0,u2?≥0?
那么現在開始解方程組
首先考慮 式5,
當u1=0,a1≠0u1=0,a1≠0u1=0,a1?=0時,即g1g_1g1? 對f(x)f(x)f(x)無約束
當u1≠0,a1=0u1≠0,a1=0u1?=0,a1=0時,即 g1g_1g1?對f(x)f(x)f(x)有約束,且根據式3可知,g1g_1g1? 也等于0。
式6同理。注意,不等式對f(x)有約束效果時,不等式等于零。
此時,方程組簡化成
{?f?x+u1dg1dx+u2dg2dx=0u1g1(x)=0,u2g2(x)=0,μ1≥0,μ1≥0.\begin{cases}\frac{\partial f}{\partial x}+u_1\frac{ze8trgl8bvbqg_1}{ze8trgl8bvbqx}+u_2\frac {ze8trgl8bvbqg_2}{ze8trgl8bvbqx}=0\\u_1g_1(x)=0,u_2g_2(x)=0,\\\mu_1\geq0,\mu_1\geq0.\end{cases}???????x?f?+u1?dxdg1??+u2?dxdg2??=0u1?g1?(x)=0,u2?g2?(x)=0,μ1?≥0,μ1?≥0.?
推廣,對于多個不等式約束,有
minf(x)s.t.gj(x)≤0(j=1,2,...,m)min f(x)\\s.t. g_j(x)\leq0(j=1,2,...,m)minf(x)s.t.gj?(x)≤0(j=1,2,...,m)
我們有
{?f(x?)?x+∑j=1mujdgj(x?)dx?=0ujgj(x?)=0(j=1,2,...,m),μj≥0(j=1,2,...m).\begin{cases}\frac{\partial f(x^*)}{\partial x}+\sum_{j=1}^{m}u_j\frac{ze8trgl8bvbqg_j(x^*)}{ze8trgl8bvbqx^*}=0\\u_jg_j(x^*)=0(j=1,2,...,m),\\\mu_j\geq0(j=1,2,...m).\end{cases}???????x?f(x?)?+∑j=1m?uj?dx?dgj?(x?)?=0uj?gj?(x?)=0(j=1,2,...,m),μj?≥0(j=1,2,...m).?
上述不等式稱之為KKT條件,與本文一開始略有不同的是沒有了等式的約束(不用在此糾結,我們關心的是不等式的約束問題),其中uju_juj?稱之為KKT乘子
總結
以上是生活随笔為你收集整理的从拉格朗日乘数法到KKT条件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交管12123app大字版如何关闭? 交
- 下一篇: 【强化学习】一文带你理清强化学习