機器學習中的凸優化理論
定義:從一個可行解中找到一個最好的元素。 通常來說優化問題都可以寫成如下的形式:
最小化目標函式:
m個約束函式:
凸規劃與非凸規劃
凸規劃滿足:
凸規劃都是相對容易解決的,非凸規劃比較難解決。

仿射集
一個集合c是仿射集,若x1,x2在集合c中,則x1與x2的連線也在集合c中
仿射組合: ,且
仿射包:任何集合c,構造儘可能小的仿射集

凸集

組合

正定與半正定

半正定:就是特徵值>=0,但是通常來說特徵值太難求。我們可以通過 假如X屬於R,對於任意X,都要滿足 ,則說明A具有半正定。
證明對稱半正定矩陣一定是凸錐或者凸集

正定:
仿射函式


仿射函式即由由1階多項式構成的函式,一般形式為 f (x) = A x + b,這裡,A 是一個 m×k 矩陣,x 是一個 k 向量,b是一個m向量,實際上反映了一種從 k 維到 m 維的空間對映關係。設f是一個矢性(值)函式,若它可以表示為f(x1,x2,…,xn)=A1x1+A2x2+…+Anxn+b,其中Ai可以是標量,也可以是矩陣,則稱f是仿射函式。
23-24
廣義凸問題
狹義凸問題

是一個仿射函式
重要性質 凸問題: 區域性最優 = 全域性最優
首先定義區域性最優解: 當 是可行的(亦即位於可行域內), 而且存在 , 使得對於所有 的位於可行點 ,使得 .
證明過程如下:
令 是一個區域性最優解, 但不是全域性最優解, 所以存在一個可行的點 使得 .根據區域性最優解的定義, 沒有一個可行點 滿足 . 但是, 我們可以構造一個組合
其中 是一個定值,這是一種特殊的取法,由於 ,因為 肯定在區域性範圍外,所以 的 取值範圍為 0 ~ 1/2。所以z是一個凸組合。因為z是凸組合,所以 也一定是可行的。
由於是凸問題,所以可得:
由於 ,所以 , 可得 。
因為 ,顯然
, 假設不成立,所以(x) 是全域性最優解.
對偶問題
任何一個求極大化的線性規劃問題都有一個求極小化的線性規劃問題與之對應,反之亦然,如果我們把其中一個叫原問題,則另一個就叫做它的對偶問題,並稱這一對互相聯絡的兩個問題為一對對偶問題。
“三凸”
首先,我們還是要看下,什麼是凸優化?拋開凸優化中的種種理論和演算法不談,純粹的看優化模型,凸優化就是:1、在最小化(最大化)的要求下,2、目標函式是一個凸函式(凹函式),3、同時約束條件所形成的可行域集合是一個凸集。以上三個條件都必須滿足。而世間萬物千變萬化,隨便抽一個函式或集合它都可能不是凸的。
凸集定義:在歐式空間中,對於任意兩點的連線上的任意點都在該集合中,我們就可以判定該集合為突凸集。
凸函式幾何定義:函式上任意兩點的連線在兩點中點的上方
半正定矩陣的定義:特徵值大於等於0的實對稱矩陣實對稱矩陣:
如果有n階矩陣A,其矩陣的元素都為實數,且矩陣A的轉置等於其本身(aij=aji)(i,j為元素的腳標),而且該矩陣對應的特徵值全部為實數,則稱A為實對稱矩陣。
半正定矩陣:特徵值大於等於0的矩陣。
凸函式的充要條件:對於一元函式來說,其一階導數等大於等於0,對於多元函式來說,其Hessian Matrix(黑塞矩陣)為半正定矩陣。黑塞矩陣:

我來表露下個人淺顯的理解。半正定與正定矩陣同意用半正定矩陣來事例:首先半正定矩陣定義為: 其中X 是向量,M 是變換矩陣我們換一個思路看這個問題,矩陣變換中,代表對向量 X進行變換,我們假設變換後的向量為Y,記做。於是半正定矩陣可以寫成:這個是不是很熟悉呢? 他是兩個向量的內積。 同時我們也有公式:||X||, ||Y||代表向量 X,Y的長度,是他們之間的夾角。 於是半正定矩陣意味著, 這下明白了麼?正定、半正定矩陣的直覺代表一個向量經過它的變化後的向量與其本身的夾角小於等於90度。
凸二次規劃
有一篇好文章: www.cnblogs.com/xinchen1111…
可能要在滿足一定約束條件的情況下最小化目標函式,比如有一個等式約束:
解決這個的時候問題不能先用上面的方法求出 f(x) 的極值點,然後留下滿足方程 h(x)=0 的。因為這個問題的解可能根本不是 minf(x) 的解,它們是沒有關係的。那麼還是要從問題本身去找線索:

如圖,其中的圓圈是指目標函式 f(x,y) 投影在平面上的等值線,表示在同一個圓圈上,黑線是約束條件 h(x)=0 的函式影象。所以等值線與函式影象相交的點其實就是所有滿足約束的點。那麼極值點只有可能在等值線與函式影象相切的地方取到,因為如果在相交的地方取到,那麼沿著 h(x) 的影象往前走或者往後走,一定還有其它的等值線與它相交,也就是 f(x,y) 的值還能變大和變小,所以交點不是極值點,只有相切的時候才有可能是極值點(不可能同時變大和變小了)。在相切的地方 h(x) 的梯度和 f(x,y) 的梯度應該是在同一條直線上的。(這一點可以這麼想,在切點處兩個函式的梯度都與切平面垂直,所以在一條直線上)
所以滿足條件的極值點一定滿足:∇f(x,y)=λ∇h(x,y) ( λ=0 是允許的,表示 f(x,y) 本身的極值點剛好在切點上),然後和原來的等式方程 h(x,y)=0 聯立,然後只要解出這個方程組,就可以得到問題的解析解了。當然也存在解不出來的情況,就需要用罰函式法之類的方法求數值解了。
為了方便和好記,就把原來的優化問題寫成 f(x,y)+λh(x,y) 的形式,然後分別對 λ,x,y 求偏導,並且令偏導為 0 就行了,和之前得到的方程組是一樣的。這種方法叫拉格朗日乘數法。
如果有多個等式約束怎麼辦呢,如下圖:

這裡的平面和球面分別代表了兩個約束 h1(x) 和 h2(x),那麼這個問題的可行域就是它們相交的那個圓。這裡藍色箭頭表示平面的梯度,黑色箭頭表示球面的梯度,那麼相交的圓的梯度就是它們的線性組合(只是直觀上的~),所以在極值點的地方目標函式的梯度和約束的梯度的線性組合在一條直線上。所以就滿足:
大於2個約束的情況也一樣。為了好記,將原來的約束的問題寫成 L(x,λ)=f(x)+∑ni−1λi∇hi(x)的形式,然後對 x、λ 求偏導,然後讓它們為 0。結果像上面一樣直接列方程組是一樣的。這個可以看做是一種簡記,或者是對偶問題,這個函式叫做拉格朗日函式。
再進一步,如果問題中既有等式約束,又有不等式約束怎麼辦呢?對於:
當然也同樣約定不等式是 ≤,如果是 ≥ 只要取反就行了。對於這個問題先不看等式約束,對於不等式約束和目標函式的圖:

陰影部分就是可行域,也就是說可行域從原來的一條線變成了一塊區域。那麼能取到極值點的地方可能有兩種情況: 還是在 h(x) 和 等值線相切的地方 f(x) 的極值點本身就在可行域裡面。
因為如果不是相切,那麼同樣的,對任意一個在可行域中的點,如果在它附近往裡走或者往外走,f(x) 一般都會變大或者變小,所以絕大部分點都不會是極值點。除非這個點剛好在交界處,且和等值線相切;或者這個點在可行域內部,但是本身就是 f(x) 的極值點。如下圖(維基百科上的圖~):

對於第一種情況,不等式約束就變成等式約束了,對f(x)+λh(x)+μg(x) 用拉格朗日乘子法:
這裡需要解釋一下,為什麼不是 μ≠0 而是 μ≥0。後面的約束比前面的更強。看“不等式約束”那個圖,我們已經知道了問題中的可行域是在 g(x)≤0 一側,而 g(x) 的梯度是指向大於 0 的一側,也就是不是可行域的一側。而求的問題是極小值,所以 f(x) 在交點處的梯度是指向可行域的一側,也就是說兩個梯度一定是相反的。所以也就可以確定這裡的係數一定是大於 0 的。而等式約束由於不知道 h(x) 的梯度方向,所以對它沒有約束,那麼為什麼 μ 還能等於 0 呢,因為極值點可能剛好在 g(x) 上。
對於第二種情況,不等式約束就相當於沒有,對 f(x)+λh(x) 用拉格朗日乘子法:
最好把兩種情況用同一組方程表示出來。對比一下兩個問題,不同的是第一種情況中有 μ≥0 且 g(x)=0, 第二種情況 μ=0 且 g(x)≤0 。綜合兩種情況,可以寫成 μg(x)=0 且 μ≥0 且 g(x)≤0:
這個就是 KKT 條件。它的含義是這個優化問題的極值點一定滿足這組方程組。(不是極值點也可能會滿足,但是不會存在某個極值點不滿足的情況)它也是原來的優化問題取得極值的必要條件,解出來了極值點之後還是要代入驗證的。但是因為約束比較多,情況比較複雜,KKT 條件並不是對於任何情況都是滿足的。要滿足 KKT 條件需要有一些規範性條件(Regularity conditions),就是要求約束條件的質量不能太差,常見的比如:
1.LCQ:如果 h(x) 和 g(x) 都是形如 Ax+b 的仿射函式,那麼極值一定滿足 KKT 條件。
2.LICQ:起作用的 g(x) 函式(即 g(x) 相當於等式約束的情況)和 h(x) 函式在極值點處的梯度要線性無關,那麼極值一定滿足 KKT 條件。
3.Slater 條件:如果優化問題是個凸優化問題,且至少存在一個點滿足 h(x)=0 和 g(x)=0,極值一定滿足 KKT 條件。並且滿足強對偶性質(下面會講)。
這裡的 Slater 條件比較重要,因為它可以推匯出強對偶性質(下面會講到,它比 KKT 條件還好)。它需要原問題是凸優化問題。所謂凸優化就是這個優化問題的優化函式是凸函式,並且可行域是凸集。可行域數凸集就要求其中的 h(x)≤0 的條件中 h(x) 必須也是凸函式,而 g(x)≤0 中的 g(x) 必須是 Ax+b 形式的,也就是仿射函式(比如二維的情況,可行域就在 g(x) 這條曲線上,那麼 g(x) 必須得是直線才能滿足凸集的定義)。
其它條件還有很多,可以看維基百科。
如果有多組等式約束 gi(x)=0(i=1,..,n), 和不等式約束 hi(x)≠0(i=1,..,n)也是一樣,只要做個線性組合就行了:
問題到這裡就大致解決了,KKT 條件雖然從理論上給出了極值的必要條件,但是一般實際解的時候直接方程也是很困難的(特別是約束很多的時候),一般也會採用罰函式法等數值方法。
為了更好的解決這個優化問題,數學家還找到了它的對偶問題。找一個優化問題的對偶問題的一般因為是對偶問題比原問題更好解決,並且對偶問題的解和原問題是一樣的。上面的拉格朗日函式也可以看做原問題的對偶問題。
為了去掉問題中的約束,可以把它們作為懲罰項加到目標函式中 minxf(x)+Mh(x)+Ng(x) 其中 M, N 是兩個很大的正數,在數值解法中可以直接這樣做,這個就是罰函式法的思路 。不過在理論推導時這樣做是不嚴謹的,除非 M, N 為無窮大。所以就把原問題改寫 L(x,μ,λ)=minxmaxμ,λf(x)+λh(x)+μg(x) 。這個式子可以這麼理解,現在外層給定任意一個 x0 值,然後內層在給定的 x0 下優化那個函式,讓它最小。然後外層選能夠讓內層得到的值最大的一個 x0,得到的函式表示式就是:
所以外層選的那個 x0 一定滿足約束,否則,內層的 max 的時候會讓 μ 或者 λ 為無窮大。外層不會選那些能讓內層得到無窮大的 x 值。這樣改寫就和原來的帶約束形式完全一致了,但是形式不同。這樣可以利用 maxminf(x)≤minmax(f(x)) 這個公式(這個很好理解,minf(x)≤minmaxf(x), 然後就有這個公式了),得到原問題的最小值的一個下界,就是:
前面的就是原函式,後面的是它的一個下界。那麼為什麼要這樣做呢? 是因為後面的一定是一個凸規劃(理論上證明了的),比較好解決。但是這個只是一個下界,它們之間還是有一定的差距。這個差距叫對偶誤差(duality gap)。對偶誤差如果為 0 其實是一個非常好的性質,表示可以直接求解後面的問題得到原問題的解,這種性質叫強對偶性質,否則就只是弱對偶。
強對偶性質非常好,但是要求也很苛刻,比 KKT 條件要苛刻。如果問題滿足強對偶一定也滿足 KKT 條件,反之不一定。對於這類優化問題,KKT 條件、強對偶、規範性條件之間的關係是:

對於強對偶推出 KKT 可以參看這篇部落格。