https://blog.csdn.net/lmm6895071/article/details/78329045?locationNum=7&fps=1
1. 拉格朗日乘子法
1.1 無約束問題
1.2 等式約束問題
1.3 不等式約束問題(KKT條件)
1.4 拉格朗日乘子法問題
2. 罰函數法
2.1 定義
2.2 外罰函數法
2.3 內罰函數法
3. 廣義乘子法
3.1 等式約束廣義乘子法:
3.2 不等式約束廣義乘子法:
3.3 一般約束廣義乘子法:
本文簡單總結一些相關概念,具體證明以后再補充;
1. 拉格朗日乘子法
2. 罰函數法:外罰函數與內罰函數法
3. 廣義乘子法
1. 拉格朗日乘子法
1.1 無約束問題
無約束問題,定義為 minf(x)
, 對於凸函數而言,直接利用費馬定理,f′(x)=0
,獲得最優解;
1.2 等式約束問題
等式約束定義如下:
minf(x)s.t.g(x)=0
現在利用拉格朗日乘子法,合並式子:
L(x,a)=f(x)+ag(x)
對x,a分別求偏導:
∇xL(x,a)=f′(x)+ag′(x)=0∇aL(x,a)=g(x)=0
發現第二個式子剛好是其約束條件;
----------------------------------------------有兩個變量,求最值,對兩個變量分別求導,得出的是成對的自變量,使得函數值最小
為什么?
現在,我們在平面內投影函數,畫出f(x)
的等高線,以及g(x)=0的邊界線;如圖示:
藍色虛線代表了f(x,y)的等高線;紅色代表g(x,y)=c=0;
這里寫圖片描述
回顧:
1. 方向導數是各個方向上的導數
2. 偏導數連續才有梯度存在
3. 梯度的方向是方向導數中取到最大值的方向,梯度的值是方向導數的最大值(垂直方向)
假設f(x)的最小值在圓心處,即梯度方向向外;g(x,y)的梯度方向向下;
那么滿足條件的值一定是兩個函數相切處;如果相交,那么一定還存在一個等高線與紅線相切,而且更小;在切點處,兩個函數的梯度共線,即f′(x)=−ag′(x),a<0;做簡單的變換后:f′(x)+ag′(x)=0
,這就是第一個等式啦,同時還需要滿足第二個式子;
1.3 不等式約束問題(KKT條件)
不等式約束問題:
minf(x)s.t.g(x)=0h(x)<=0
引入拉格朗日函數:(KTT 條件)
L(x,a,b)=f(x)+ag(x)+bh(x)s.t.g(x)=0bh(x)=0
這樣就將不等式約束變成了等式約束,偏導等於零即可求得最優參數;
minf(x)等價於minxmaxa,bL(x,a,b)
對偶變換后有:
maxa,bminL(x,a,b)
因為h(x)<0,所以只有當bh(x)=0時,L(x,a,b)才能取得最大值;否則不滿足條件;所以KKT條件是minf(x)的必要條件;
補充:SVM 滿足KKT條件:在邊界上的點,有h(x)=0
;非邊界處,令b=0;
1.4 拉格朗日乘子法問題
當 目標函數的Hess矩陣不正定時(特征值不全為正,或者行列式不為正,那么此時的偏導為0處,並不能確定是否是極值點),所以無法求解;
例子:
求解
{minf=2x2+y2−2xys.t.x+y=1
我們定義L(x,y,λ)=f−λg(x)=2x2+y2−2xy−λ(x+y−1)
求偏導可得:
⎧⎩⎨⎪⎪∂L∂x=4x−2y−λ=0∂L∂y=2y−2x−λ=0∂L∂λ=x−y−1=0
我們可以計算原目標函數的Hess矩陣:=⎡⎣⎢⎢∂2L∂x2∂2L∂y∂x∂2L∂x∂y∂2L∂y2⎤⎦⎥⎥=[4−2−22]正定矩陣;
再看一個目標函數,方程稍作修改:
{minf=2x2+y2+3xys.t.x+y=1
直接求偏導,發現方程無解;
再看其Hess矩陣:=[4332]
非正定矩陣;
也就是說,在梯度為零處,我們無法判斷是否是極值;
2. 罰函數法
2.1 定義
罰函數法:根據約束條件的特點,構造出懲罰函數,然后加入到目標函數中,將其轉化為無約束問題;新目標函數的解與原始目標函數解一致;
2.1.1 等式約束的罰函數法:
{minf(x)s.t.gi(x)=0
我們引入一個增廣目標函數:
minF(x,σ)=f(x)+σP(x)P(x)=gTg
這里:σ是懲罰因子,取很大的正數,F(x,σ)是罰函數,σP(x)是懲罰項;
懲罰項的性質:
1. 當x為可行解時,P(x)=0,懲罰項為0;
2.當x不在可行域內,此時σP(x)會很大,那么求得minF(x,σ)必然有minf(x)與minx,σ[σP(x)]同時成立;所以,當σ充分大時,增廣目標函數的最優值接近於原始問題的最優值;(σ→∞,若原問題有解(F<∞),則會有g=0)
例如:
minf(x)=(x1+x2)2s.t.g(x)=x1+x2=c
構造罰函數為:
minL(x,σ)=minf(x)+σ||g(x)||22
σ
設置的值較大;第一部分優化解,第二部分使得解在可行域內;
如果x不在可行域內,需要我們大步迭代;
2.1.2 不等式約束的罰函數法:
{minf(x)s.t.hi(x)>=0
此時我們構造懲罰項;
(1)P(x)=∑[min(0,hi(x))]2,可以簡單分析出:當hi(x)>=0時P(x)=0,滿足條件;當不在可行域內時,我們需要加大懲罰;
(2)P(x)=∑αih2i,其中αi={0,hi>=01,hi<0
2.1.3 一般形式的罰函數法:
⎧⎩⎨⎪⎪minf(x)s.t.gi(x)=0hi(x)>=0
那么罰函數為:
P(x)=∑[gi(x)]2+∑[min(0,hi(x))]2
特別注意:懲罰因子是充分大的數,拉格朗日乘子是一個確定的參數,意義不一樣;(當懲罰因子過大時,在求解極小值的過程中,Hess矩陣變成病態矩陣?)
2.2 外罰函數法
對不在可行域內,加大懲罰;上文介紹的就是外罰函數法;
這里寫圖片描述
2.3 內罰函數法
又稱障礙函數法,內點法);在可行域內築起高牆,迫使值在可行域內,目標函數無法穿越;(只適用於不等式約束)
障礙函數一般取:(1)倒數 (2)對數
障礙因子為很小的正數
當x
趨於邊界時,那么障礙函數趨於無窮;初始點在可行域內部;
在可行域內時,障礙函數值很小,增廣目標函數與原始目標函數等價了;
這里寫圖片描述
3. 廣義乘子法
3.1 等式約束廣義乘子法:
{minf(x)s.t.gi(x)=0
廣義乘子法是拉格朗日乘子法與罰函數法的結合;
ϕ(x,λ,σ)=f(x)+λTg(x)+12σgT(x)g(x)
在罰函數的基礎上增加了乘子項,首先在σ足夠大的基礎上,獲得ϕ的極小值,然后在調整λ獲得原問題的最優解;
迭代公式如下:
梯度等於零:∇xϕ(xk,λk,σk)=0,即
∇xf(xk)+λk∇xgT(xk)+σk∇xgT(xk)g(xk)=∇xf(xk)+∇xgT(xk)(σkg(xk)+λk)=0
令λk+1=σkg(xk)+λk,則導出拉格朗日乘子法的一階必要條件;
∇xf(xk)+λk+1∇g=0
計算方法:
(1)初始值設置:x,λ,σ
(2)計算梯度為0,獲得當前最優值xk,然后判斷是否終止;
(3)是否調整懲罰因子,獲得σk+1
(4)計算λk+1=σkg(xk)+λk
3.2 不等式約束廣義乘子法:
思想是:引入松弛變量,化不等式問題為等式約束;
{minf(x)s.t.hi(x)>=0→{minf(x)s.t.hi(x)=βi
那么原始問題轉化成:
minx,λϕ(x,λ,σ)=f(x)+λT(h(x)−β)+12σ(h(x)−β)T(h(x)−β)minx,λ,σ,βϕ(x,λ,σ,β)=f(x)+σ2((h+λσ−β)2−(λσ)2)β=1σmax{0,σh+λ}
首先計算關於β的極小值;因為β>=0,上式是關於β的二次函數,開口向上,對稱軸是h+λσ,
β={0h+λσh+λσ<0h+λσ>=0→1σmax{0,σh+λ}
這樣做的目的是:保證增廣目標函數最優解近似於原始問題最優解;
分析:當σh+λ>=0時,β=h+λσ,則
ϕ(x,λ,σ)=f(x)−σ2(λσ)2=f(x)−λ22σ∇xϕ(x,λ,σ)=∇xf(x)
當σh+λ<0時,β=0,則
ϕ(x,λ,σ)=f(x)−σ2(λσ)2+(σh+λ)22σ=f(x)−λ22σ+(σh+λ)22σ∇xϕ(x,λ,σ)=∇xf(x)+(σh+λ)∇h(x)
梯度為零計算最優解,發現剛好滿足朗格朗日乘子法的必要條件;
3.3 一般約束廣義乘子法:
混合等式不等式約束法,計算即可
---------------------
作者:冰鋒
來源:CSDN
原文:https://blog.csdn.net/lmm6895071/article/details/78329045
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!