Karush–Kuhn–Tucker conditions
接第一節,拉格朗日乘子法https://www.cnblogs.com/super-yb/p/10705789.html
我先直接給出公式(別跑!),然后慢慢解釋每一條內容,歡迎批評指正!
我們優化的目標是:
其中,KKT條件如下:
公式1、2、3不多解釋。
公式4、5,通過一個簡單例子說明:
gi添加一個 ≥0 的松弛變量、
。得到
由此,我們將不等式轉化為等式約束,應用拉格朗日乘子法。
拉格朗日方程如下:
對方程求偏導如下:
注意紅筆寫的條件,我們會稍后解釋。
那么現在開始解方程組
首先考慮 式5,
當u1=0,a1≠0時,即 g1 對f(x)無約束
當u1≠0,a1=0時,即 g1 對f(x)有約束,且根據式3可知, g1 也等於0。
式6同理。注意,不等式對f(x)有約束效果時,不等式等於零。
此時,方程組簡化成
推廣,對於多個不等式約束,有
上述不等式稱之為KKT條件,與本文一開始略有不同的是沒有了等式的約束(不用在此糾結,我們關心的是不等式的約束問題),其中uj稱之為KKT乘子
最后利用幾何的角度說明,為什么在極值點處KKT乘子大於等於零?
其實用一個不等式約束很好理解,類似拉格朗日乘子法,
f(x)的負梯度與g(x)的梯度同向,所以u1≥0.
現增加一個不等式約束。
將式1用梯度表示並移項,
x*表示極值點。
那么,此時f(x)的負梯度可以表示成所有有效約束條件在該點梯度的線性組合,梯度為向量,且與等高線垂直,有效指的是該約束條件(不等式)對應的KKT乘子。
如圖,極值點XK一定落在g1(X)=0和g2(X)=0兩平面的交線上,且點XK處f(x)的負梯度可以為g1(X)和g2(X)梯度的線性組合。考慮兩種情況:
注意,由於約束條件為不等式,所以極值點的可行域為下半平面。
當在b情況時,(ui小於0)在可行域C值可以變化,所以這種情況極值點不是最優。如圖
在a情況下,ui≥≥0,當C發生變化時,約束條件破壞,即該點為局部最優點。
接下一節感知機
參考:https://www.matongxue.com/madocs/987.html
https://zhuanlan.zhihu.com/p/26514613
https://en.wikipedia.org/wiki/Karush%E2%80%93Kuhn%E2%80%93Tucker_conditions
https://www.cnblogs.com/liaohuiqiang/p/7805954.html
https://www.cnblogs.com/xinchen1111/p/8804858.html
最后附一個拉格朗日對偶問題講的很好的博文