1.凸集與凸函數
2.凸優化問題
3.拉格朗日乘子法
4.對偶問題,slater條件,KKT條件
1.凸集與凸函數
凸集:在點集拓撲學與歐幾里得空間中,凸集是一個點集,其中每兩點之間的直線上的點都落在該點集中。千言萬語不如一張圖來的明白,請看下圖:
凸函數:一個定義在向量空間的凸子集C(區間)上的實值函數f,如果在其定義域C上的任意兩點x,y以及t∈[0,1]有:


2.凸優化問題
- 凸優化:凸優化是指一種比較特殊的優化,是指求取最小值的目標函數為凸函數的一類優化問題。其中,目標函數為凸函數且定義域為凸集的優化問題稱為無約束凸優化問題。而目標函數和不等式約束函數均為凸函數,等式約束函數為仿射函數,並且定義域為凸集的優化問題為約束優化問題。
- 凸優化性質: 1、目的是求取目標函數的最小(優)值;
2、目標函數和不等式約束函數都是凸函數,定義域是凸集;
3、若存在等式約束函數,則等式約束函數為仿射函數;
4、對於凸優化問題具有良好的性質,局部最優解便是全局最優解。
一個凸優化問題用公式描述為:
所以其目標函數f(x)以及不等式約束條件g(x)便是凸函數,而等式約束條件h(x)是仿射函數。
-
常見的幾種凸優化問題
線性規划:如果凸優化中的目標函數ff和不等式約束條件gigi都為線性函數,那么此時的凸優化問題就成為了線性規划問題,其格式如下:
二次規划:如果凸優化中的目標函數ff為 二次函數,那么此時的凸優化問題就成為了二次規划問題,其格式如下:
二次約束二次規划:如果在上述二次規划中再加入一個令其不等式約束條件也為二次的,那么這時候我們稱該問題為二次約束二次規划問題, 其格式如下:
3.拉格朗日乘子法
拉格朗日乘子法的作用:求函數f(x1,x2…)在g(x1,x2…)=0的約束條件下的極值
拉格朗日乘子法的操作過程
- 定義新函數:
- 利用偏導方式列出以下方程
- 求解出x,y,σ的值帶入F(x,y,σ)便是目標函數的極值
4.對偶問題,slater條件,KKT條件
要說對偶問題,則需要從凸優化問題開始說起。假設我們現在來求解上面的那個凸優化問題的最優解:
觀察上面的最優化問題,便是在一定的約束條件下求解函數的極值,我們上面已經說過拉格朗日乘子法啦,所以這里便用到了。
使用拉格朗日乘子法針對上面的最優化問題有:
需要明確:其中α≥0、β任意,均為拉格朗日乘子,i=1,2,…,p且j=1,2,…,q
如果按照我們上面談到的拉格朗日乘子法的思路,則應該讓L(x,α,β)對x以及參數α和β進行求導,然后得出結果帶入原始便可求出我們需要的最優解。
但需要注意兩點:
1、這里參數α和β總共p+q個,如果全部求偏導工作量太大,不現實;
2、並且大家有沒有想過,這個問題可能根本就沒有最優解這種情況存在。
針對上面情況,我們便引出了換一種思路,那就是利用對偶問題,也就是將原問題轉化成其對偶問題進行求解。
下面和大家先說一下對偶問題的基本思想,然后我們再繼續從上面的問題出發,推導其對偶問題,進行求解。
對偶問題的性質:無論原命題的形式如何,對偶問題都是一個凸優化問題,還記得凸優化問題的好處吧,那就是局部最優解就是全局最優解,並且容易求解,所以我們將問題轉化為其對偶問題就簡化了問題的求解思路。
上面我們利用拉格朗日乘子法得到了如下式子:
現在我們自定義一個函數如下:
分析上面的自定義函數有:
對上面的式子進行分析:
(1)式說明,當目標函數的約束條件都滿足時,則自定義的函數便是上面需要求解的目標函數f(x),(2)則是只要目標函數的約束條件只有一個不滿足,則自定義的函數便等於無窮大!
所以我們便可以認為自定義的函數θ(x) 是對原理優化問題中的約束條件進行了吸收,是原來的約束優化問題變為無約束優化問題(相對於原來變量x 無約束了),即我們可以將最初的優化問題寫成:
上式便是我們需要優化的原問題
原問題的 對偶問題 便是:
下面我們假設假命題為P,對偶問題為Q!當然對偶問題已經不等價於原問題了,但是二者是存在一定聯系的,下面我們來講解二者的聯系,以及如何通過求解對偶問題來得到原問題的最優解!
這里我們令:


所以有: P>=Q
解釋:大家想一下,函數L中最大值中最小的一個總比最小值中最大的那一個要大,也就是對偶問題提供了原問題最優值的一個下界。
但是大家想,我們是想通過對偶問題求解原問題的最優解,所以只有當二者相等時即P=Q,才可能將原問題轉化成對偶問題進行求解。當然,當滿足一定條件的情況下,便有P=Q。而這個條件便是 slater條件和KTT條件。
slater條件:
slater條件官方正規定義:存在x,使得不等式約束g(x)<=0嚴格成立。
slater條件性質: slater條件是原問題P可以等價於對偶問題Q的一個充分條件,該條件確保了鞍點的存在。
KKT條件:
大家已經知道slater條件已經確保了鞍點的存在,但是鞍點不一定就是最優解啊,所以KKT條件的作用便體現出來了。
KKT條件便是確保鞍點便是原函數最優解的充分條件,當然對於我們前面舉得那個例子,當原問題是凸優化問題時,則KKT條件便是鞍點便是最優解的充要條件。
KKT條件描述為一下三個條件:
解釋:第一個約束條件表明:最優點x必須滿足所有等式及不等式限制條件, 也就是說最優點必須是一個可行解, 這一點自然是毋庸置疑的;
第二個約束條件表明:在最優點x, ∇f必須是∇gi和∇hj的線性組合;
第三個約束條件表明:拉格朗日乘子不等式的一些限制,對於不等式的拉格朗日乘子限制條件有方向性, 所以每一個α都必須大於或等於零, 而等式限制條件沒有方向性,只是β不等於0。
這樣對於slater條件和KKT條件都十分清楚了吧,並且也知道了他們的作用!這樣我們最初的求解凸優化問題便轉化為求解其對偶問題。當前我們的優化目標便是:

引用以下文章:
https://blog.csdn.net/batuwuhanpei/article/details/46562459
https://blog.csdn.net/feilong_csdn/article/details/62427148