日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

直观理解KKT条件

發布時間:2023/12/20 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 直观理解KKT条件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

直觀理解KKT條件

等高線

從等高線講起。如果我們要優化f(x,y)=x2yf(x,y)=x^2yf(x,y)=x2y這個函數,給定約束為,x2+y2=1x^2+y^2=1x2+y2=1,我們希望在滿足約束的情況下使得f最大。也就是說,我們希望找到一個最“上方”的平面z,并且該平面要在可行域范圍內。這個優化函數的可視化為:

為了更好的演示,我們一般使用等高線,等高線就是考慮俯視圖:

顯然,隨著z越來越大,他離我們的圓越來越遠,而如果我們縮小z,我們就能找到一個點,恰好與圓相切,這個值就是最優值:

梯度總是垂直于等高線

現在我們考慮目標函數f(x,y)=xyf(x,y)=xyf(x,y)=xy,其梯度為<?f/?x,?f/?y>=<y,x><\partial f/\partial x,\partial f/\partial y>=<y,x><?f/?x,?f/?y>=<y,x>。舉個例子,我們選擇一個點,比如x=2,y=1x=2,y=1x=2,y=1,此時梯度為<1,2><1,2><1,2>,將這個向量畫在圖上,就得到下圖白色的直線:

我們發現梯度總是垂直于等高線的,為什么?首先梯度的直觀理解應該是,在這個平面上增長最快的方向,那如果我們考慮兩個很相近的平面,z=2,z=2.1z=2,z=2.1z=2,z=2.1:

那么因為兩個平面相隔足夠小,所以它們的登高線應該幾乎是是平行的,于是,這個登高線增長最快的方向,顯然就是往與它垂直的方向走(從2走到2.1的方向)。

KKT條件

對于優化問題
maxxf(x)s.t.hj(x)=0,j=1,…,qgi(x)≤0,i=1,…,pmax_{x}f(x) \\s.t.h_j(x)=0,j=1,\dots,q \\g_i(x)\leq 0,i=1,\dots,p maxx?f(x)s.t.hj?(x)=0,j=1,,qgi?(x)0,i=1,,p
其KKT條件(必要條件)為,若x?x^*x?是最優解則一定滿足一下條件
?f(x?)=∑jλj?hj(x?)+∑iμi?gi(x?)μi≥0,ifgi(x?)<0thenμi=0\nabla f(x^*)=\sum_j\lambda_j\nabla h_j(x^*)+\sum_i\mu_i \nabla g_i(x^*) \\\mu_i\geq0,if~g_i(x^*)<0~then~\mu_i=0 ?f(x?)=j?λj??hj?(x?)+i?μi??gi?(x?)μi?0,if?gi?(x?)<0?then?μi?=0
這個條件,可以直接理解為拉格朗日法的推廣,就是轉換成無約束問題,然后那個無約束的目標函數的梯度等于0.

為了理解這個東西,我們來個簡單的例子,
maxf(x,y)=x2ys.t.x2+y2=1maxf(x,y)=x^2y \\s.t.x^2+y^2=1 maxf(x,y)=x2ys.t.x2+y2=1
其中h(x,y)=x2+y2?1=0h(x,y)=x^2+y^2-1=0h(x,y)=x2+y2?1=0?;叵胍幌?#xff0c;我們之前提到,等高線與約束相切的時候是可以得到最優值的。那么這個相切怎么定義呢?實際上,利用梯度總是垂直于登高線的性質,兩條線相切,那么在相切點上,fff的梯度,以及約束hhh的梯度,應該是平行的!這意味著:
?f(x?)=λ?h(x?)\nabla f(x^*)=\lambda\nabla h(x^*) ?f(x?)=λ?h(x?)
這不就是KKT條件嘛!這個垂直的狀態就如下圖所示:

那個g的梯度其實就是那個約束的梯度,對于事實上,對于約束我們也可以畫出類似的等高線圖:

最后我們來算一下,這個平行的梯度在哪個位置:
f(x,y)=x2yh(x,y)=x2+y2?1x2+y2=1?f=<2xy,x2>?h=<2x,2y>\begin{array}{l} f( x,y) =x^{2} y\\ h( x,y) =x^{2} +y^{2} -1\\ x^{2} +y^{2} =1\\ \nabla f=< 2xy,x^{2} >\\ \nabla h=< 2x,2y > \end{array} f(x,y)=x2yh(x,y)=x2+y2?1x2+y2=1?f=<2xy,x2>?h=<2x,2y>?
我們希望找到成比例的梯度:
?f=λ?h?{2xy=2λxx2=2λy\begin{aligned} & \nabla f=\lambda \nabla h\\ \Longrightarrow & \begin{cases} 2xy=2\lambda x\\ x^{2} =2\lambda y \end{cases} \end{aligned} ???f=λ?h{2xy=2λxx2=2λy??
聯合等式:
2xy=2λxx2=2λyx2+y2=1\begin{array}{l} 2xy=2\lambda x\\ x^{2} =2\lambda y\\ x^{2} +y^{2} =1 \end{array} 2xy=2λxx2=2λyx2+y2=1?

我們可以求出y2=13,x2=23\displaystyle y^{2} =\frac{1}{3} ,x^{2} =\frac{2}{3}y2=31?,x2=32?,將這個值帶到目標函數里,x2y=2313=239\displaystyle x^{2} y=\frac{2}{3}\sqrt{\frac{1}{3}} =\frac{2\sqrt{3}}{9}x2y=32?31??=923??,這個就是目標函數的最優解啦!到這里我們只考慮了等式約束,也就是h=0h=0h=0的情況,沒有考慮gj(x)≤0g_j(x)\le0gj?(x)0 的情況,其實,到這里已經很好理解了,如果最優值的點是落在gj(x)<0g_j(x)<0gj?(x)<0處的話,那么我們是沒有必要讓這個gjg_jgj?的梯度也跟fff的梯度垂直,因為落在里面的時候在各個方向都可以任意的移動,并不會受到約束,所以我們如果gj(x)<0g_j(x)<0gj?(x)<0,那么我們令其對應的μj=0\mu_j=0μj?=0。

參考資料

Gradient and contour maps

Lagrange multipliers, using tangency to solve constrained optimization

總結

以上是生活随笔為你收集整理的直观理解KKT条件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。