有條件凸優化問題

在這一部分我們討論有條件約束的凸優化問題。其中,根據凸優化問題的定義,約束必須是仿射的。

Karush–Kuhn–Tucker Conditions(KKT Conditions)

數學分析中我們得到了對於函數\(f(x)\)和一系列等式約束\(h_i(x)=0,i \in [k]\)\(x\)取極值的必要條件爲存在乘子\(\lambda_1,\cdots,\lambda_k\)使得\(\nabla f(x)+\sum\limits_{i \in [k]}\lambda_i\nabla h_i(x)=0\)。它可以簡寫爲拉格朗日函數\(L(x,\lambda)=f(x)+\sum\limits_{i \in [k]}\lambda_i h_i(x)\),要求\(\nabla L(x,\lambda)=0\)。它的直觀是,\(\nabla f(x)\)\(x\)處的切空間垂直,每個\(\nabla h_i(x)\)也都與切空間垂直,因此極值點處的梯度向量要落在各個約束函數在該點的梯度向量張成的空間裏。(這裏我們要求\(h_i(x)\)是線性獨立的。)對於凸函數,拉格朗日條件是充分必要的。

對於一般的約束,既存在等式約束\(h_i(x)=0\),還存在一系列不等式約束\(g_i(x) \leq 0\)。此時我們想要把不等式的約束轉化爲等式的約束。如果把對於極值點\(x^*\)處所有不緊的約束\(g_i(x)\leq 0\)扔掉會如何?這樣只會留下\(h_i(x)=0\)以及一部分\(g_j(x)=0\),餘下的滿足\(g_k(x^*)<0\)。由於連續性,在極值點周圍的小鄰域內依然成立\(g_k(x^*)<0\),所以在這個鄰域內只留下緊的\(g_j(x)=0\)和原先的\(h_i(x)=0\)求約束下的極值,依然會得到\(x^*\)。也就是說,\(x^*\)在新的約束下依然是一個極小值點,因此扔掉不緊的約束後我們\(x^*\)依然會出現在我們的解集中。

現在我們要把上面的過程形式化地寫出來,這樣就得到了不等號約束下的極小值點的必要條件,稱爲KKT條件。如果\(x^*\)是極小值點,那麼存在\(\lambda_1,\cdots,\lambda_k\)以及\(\mu_1,\cdots,\mu_m\),滿足\(\nabla f(x^*)+\sum\limits_{i\in[k]}\lambda_i\nabla h_i(x^*)+\sum\limits_{j\in [m]}\mu_j\nabla g_j(x^*)=0\)(駐點條件),\(\forall j \in [m],\mu_j \geq 0\)\(,\mu_jg_j(x^*)=0\)(互補鬆弛條件)。這樣,如果\(g_j\)不緊,\(\mu_j\)就會自動取\(0\),餘下的就是拉格朗日條件了。注意到我們必須特別地限制\(\mu_j\geq 0\),在拉格朗日條件中並沒有這一條,因爲我們可以證明如果沒有這一條性質我們是能夠在某些情形下導出矛盾的,\(\mu_j \geq 0\)的要求本身就被蘊含在了\(x^*\)是極小值點裏。同樣的,在凸函數情形下KKT條件是充要條件。

在用KKT條件求解最小值時,我們一般需要分類討論每個\(g_j\)是否是緊的(共\(2^m\)種情況),或者等價地討論每個\(\mu_j\)是否爲0。


在無條件的凸優化問題中,我們知道凸函數取到極值的充分必要條件是\(\nabla f(x)=0\)。而正是因爲這個條件的閉式解通常難以求解,我們才訴諸數值計算,或是使用梯度下降、牛頓法等算法來逼近最優值。同樣地,在有條件的凸優化問題中,我們有了KKT條件(對於凸函數同樣是充分必要的),這個條件本質上也要解函數梯度爲零的方程,因此我們同樣需要訴諸其它手段。

Projected Gradient Descent(投影梯度下降)

對應於無條件凸優化中的梯度下降法, 在有條件約束時我們有“投影梯度下降法”。

如果我們暫時拋開約束不看,直接應用普通的梯度下降法來求解有約束情形的問題,那麼唯一產生的問題是我們有可能在某一步迭代中跑到了可行域外面。於是對於跑到外面的情況,我們強行把它拉回可行域內,採用的方法就是找到可行域內裏當前點最近(歐氏距離最小)的點——當前點在可行域上的投影。這就是投影梯度下降法。嚴格地,爲了求解\(\min\limits_{x \in X}f(x)\),我們從\(x_0\)出發做迭代:\(x_{k+1}=\text{project}_X(x_k-t_k\nabla f(x_k))\)。什麼時候停止呢?我們可以把迭代寫成這樣的形式,\(x_k-x_{k+1}=x_k-\text{project}_X(x_k-t_k\nabla f(x_k))\),令右式等於\(t_kg(x_k)\),從而配湊出\(x_{k+1}=x_k-t_kg(x_k)\)這個形式——這與一般梯度下降的迭代形式相同,並且我們通過凸函數的簡單性質容易證明\(g(x)\)在這裏恰好扮演了一個“梯度”的角色。可以證明\(f\)取到有條件極值當且僅當\(g(x)=0\)。於是我們只需當\(g(x)=0\)或充分小時結束算法即可。

一個有意思的事實是,這個算法的本質就是近端梯度下降算法。我們定義一個關於可行域的indicator \(I_X(x)\),當\(x \in X\)時取0,否則取\(+\infty\)。這樣\(\min\limits_{x \in X}f(x)\)等價於\(\min\limits_{x}\{f(x)+I_X(x)\}\),後者是一個無條件極值問題。應用近端梯度下降,把\(I_X(x)\)看成\(h(x)\),發現算子\(\text{prox}_{I_X}(y)=\arg\min\limits \{\dfrac{1}{2}\|x-y\|_2^2+I_X(x)\}\)恰好就是投影\(\text{projext}_X(y)\),就可以把投影梯度下降改寫爲近端梯度下降:\(x_{k+1}=\text{prox}_{t_kI_X}(x_k-t_k\nabla f(x_k))\)。根據近端梯度下降的收斂分析,直接得到投影梯度下降的收斂分析:對於\(L\)-smooth的凸函數\(f\),取步長\(t<\dfrac{1}{L}\)時有\(f(x_k)-f(x^*)\leq\dfrac{\|x^*-x_0\|_2^2}{2tk}\),可見函數值的差值有一個與迭代次數成反比的上界。特別地,當\(f\)\(m\)-strongly convex時,有\(\|x^*-x_{k+1}\|_2^2 \leq\)\((1-mt)\|x^*-x_k\|_2^2\),可見自變量距離指數遞減。

當然,投影梯度下降算法使用的前提是投影是容易計算的。對於複雜的可行域,投影是難以計算的。但是在方形的、球形的(橢球形的)、仿射的等等這些特殊的可行域上,投影是容易計算的。這時候就可以使用投影梯度下降法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章