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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

如何通俗的理解KKT条件

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

學習筆記,僅供參考,有錯必糾
轉載自:彭一洋


最近也在看關于優化的東西,題主在問題補充里問了好多,我暫且以二維空間 [公式] 舉例,從簡單的無約束的優化(0梯度條件),到等式約束優化(拉格朗日條件),再到不等式約束優化(KKT條件),寫點對于優化問題自己能寫的理解,權當做拋磚引玉。

無約束的優化問題


注意我在圖里畫了等高線。此時f(x)f(x)f(x)在局部極小值點x?=(x1?,x2?)x^* = (x_1^*, x_2^*)x?=(x1??,x2??) 處的梯度必然為0,比較容易理解。這個梯度為零的條件是局部極小值點的必要條件。這樣,優化問題的求解變成了對該必要條件解方程組。

帶等式約束的優化問題

與無約束的問題不同。我們所要求的極小值點被限制在曲線h(x)=0h(x)=0h(x)=0上,我們將{x∣h(x)=0}\{ x| h(x) = 0 \}{xh(x)=0}稱為可行域, 解只能在這個可行域里取。如下圖所示,曲線h(x)=0h(x)=0h(x)=0(黑色實曲線)經過無約束極小值點(黑點)附近。那么滿足約束的極小值點應該與黑點盡可能近。我們將 f(x)f(x)f(x)的等高線不斷放大,直到與曲線h(x)=0h(x)=0h(x)=0相切,切點即為所求。相切是關鍵,是極小值點的必要條件。

如此,帶等式約束的優化問題轉化為了無約束的優化問題,只需要對拉格朗日條件解方程組即可。這里λ就是拉格朗日乘子,有多少個等式約束就有多少個拉格朗日乘子。

帶不等式約束的優化問題


當只有一個不等式起作用時, 如我們把問題2里的等式約束h(x)=0h(x)=0h(x)=0改為h(x)≤0h(x) \le 0h(x)0,如下圖所示,可行域變成了陰影部分,最小值點還是切點,情況和問題2完全一樣,只需要把不等號當做等號去求解即可。

當兩個不等式起作用時,那么問題就來了:


如下圖,當f(x)f(x)f(x)的等高線慢慢擴大時,等高線與可行域(陰影部分)第一次相遇的點是個頂點,2個不等式同時起作用了。滿足約束的最小值點從原來的黑點位置(切點)移動到了紅點位置,現在跟哪條約束函數曲線都不相切。這時候就需要用到kkt條件了。這里的“條件”是指:某一個點它如果是最小值點的話,就必須滿足這個條件(在含不等式約束的優化問題里)。這是個必要條件,前面說的也全部是必要條件。


這個問題的解 x?x^*x?應滿足的KKT(卡羅需-庫恩-塔克)條件為:

  • μ1≥0,μ2≥0\mu_1 \ge 0, \mu_2 \ge 0μ1?0,μ2?0;
  • ?f(x?)+μ1?g1(x?)+μ2?g2(x?)=0\nabla f(x^*) + \mu_1 \nabla g_1(x^*) + \mu_2 \nabla g_2(x^*)=0?f(x?)+μ1??g1?(x?)+μ2??g2?(x?)=0;
  • μ1g1(x?)+μ2g2(x?)=0\mu_1 g_1(x^*) + \mu_2 g_2(x^*) = 0μ1?g1?(x?)+μ2?g2?(x?)=0
  • 其中,μ\muμ叫KKT乘子,有多少個不等式約束就有多少個KKT乘子。加上問題3中的約束部分,就是完整版的KKT條件。對于有等式的情況,你把其中一個不等式約束換成等式,可行域變成了半條曲線,最小值點還是那個紅點,和下面這種情況是一樣的。

    有時候,有的不等式約束實際上不起作用,如下面這個優化問題:

    如下圖的g3(x1,x2)≤0g_3(x_1, x_2) \le 0g3?(x1?,x2?)0是不起作用的:

    對于最小值點x?x^*x? ,三個不等式約束的不同在于:


    這時,這個問題的KKT條件1,2成了:

  • μ1≥0,μ2≥0,μ3≥0\mu_1 \ge 0, \mu_2 \ge 0, \mu_3 \ge 0μ1?0,μ2?0,μ3?0;
  • ?f(x?)+μ1?g1(x?)+μ2?g2(x?)+μ3?g3(x?)=0\nabla f(x^*) + \mu_1 \nabla g_1(x^*) + \mu_2 \nabla g_2(x^*)+ \mu_3 \nabla g_3(x^*)=0?f(x?)+μ1??g1?(x?)+μ2??g2?(x?)+μ3??g3?(x?)=0;
  • 條件2中的μ3?g3(x?)\mu_3 \nabla g_3(x^*)μ3??g3?(x?)這一項讓我們很苦惱啊, g3(x?)g_3(x^*)g3?(x?)的綠色箭頭跟我們的紅色箭頭沒關系。要是能令μ3=0\mu_3 =0μ3?=0就好了。加上條件3:

  • μ1g1(x?)+μ2g2(x?)+μ3g3(x?)=0\mu_1 g_1(x^*) + \mu_2 g_2(x^*) + \mu_3 g_3(x^*) = 0μ1?g1?(x?)+μ2?g2?(x?)+μ3?g3?(x?)=0
  • 恰好能使μ3=0\mu_3 =0μ3?=0. 由于g1(x?)=0,g2(x?)=0g_1(x^*) = 0, g_2(x^*) = 0g1?(x?)=0,g2?(x?)=0,所以前兩項等于0,第三項g3(x?)<0g_3(x^*) < 0g3?(x?)<0, 在條件3的作用下使得μ3=0\mu_3 =0μ3?=0正好滿足需求。

    如果再多幾項不起作用的不等式約束,比如g4(x)≤0g_4(x) \le 0g4?(x)0。要使μ1g1(x?)+μ2g2(x?)+μ3g3(x?)+μ4g4(x?)=0\mu_1 g_1(x^*) + \mu_2 g_2(x^*) + \mu_3 g_3(x^*) + \mu_4 g_4(x^*) = 0μ1?g1?(x?)+μ2?g2?(x?)+μ3?g3?(x?)+μ4?g4?(x?)=0,就只能有μ3g3(x?)+μ4g4(x?)=0\mu_3 g_3(x^*) + \mu_4 g_4(x^*) = 0μ3?g3?(x?)+μ4?g4?(x?)=0.

    如果再定義一個拉格朗日函數:
    L(x,μ)=f(x)+μ1g1(x)+μ2g2(x)+?L(x, \mu)=f(x) + \mu_1 g_1(x) + \mu_2 g_2(x) + \cdots L(x,μ)=f(x)+μ1?g1?(x)+μ2?g2?(x)+?

    最后說明一下,以上所有都是局部極小值點的必要條件。據此求得的解不一定是局部極小值點(更別提全局了),原因是上圖中我所畫的等高線也許根本就不閉合,也就是說我們一直想要靠近的等高線中間的黑點壓根就是個鞍點或者近似鞍點!

    總結

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

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