Proximal Gradient Descent for L1 Regularization(近端梯度下降求解L1正則化問題)


假設我們要求解以下的最小化問題: $min_xf(x)$

如果$f(x)$可導,那么一個簡單的方法是使用Gradient Descent (GD)方法,也即使用以下的式子進行迭代求解:

$x_{k+1} = x_k - a\Delta f(x_k)$

如果$\Delta f(x)$滿足L-Lipschitz,即: 

那么我們可以在點$x_k$附近把$f(x)$近似為: 

把上面式子中各項重新排列下,可以得到: 

 

這里$\varphi (x_k)$不依賴於x,因此可以忽略。

 顯然,$\hat f(x, x_k)$的最小值在 

 獲得。所以,從這個角度看的話,GD的每次迭代是在最小化原目標函數的一個二次近似函數.(梯度下降的由來的推導,這里說的不好,參考這里: http://www.cnblogs.com/ljygoodgoodstudydaydayup/p/7274943.html)

在很多最小化問題中,我們往往會加入非光滑的懲罰項$g(x)$, 比如常見的L1懲罰: $g(x) = ||x||_1$ .這個時候,GD就不好直接推廣了。但上面的二次近似思想卻可以推廣到這種情況:

 

這就是所謂的Proximal Gradient Descent (PGD)算法,即目標函數由損失項和正則項組成。對於上式,可先計算$z = x_k - \frac{1}{L}\Delta f(x_k)$, 然后求解

 

 

 


 

軟閾值(SoftThresholding)可以求解如下優化問題:

其中:

根據范數的定義,可以將上面優化問題的目標函數拆開:

也就是說,我們可以通過求解N個獨立的形如函數

的優化問題,來求解這個問題。由中學時代學過的求極值方法知道,可以求函數f(x)導數:

令函數f(x)導數等於0,得:

 

 這個結果等號兩端都有變量x,需要再化簡一下。下面分三種情況討論:

(1)當b>λ/2時

        假設x<0,則sgn(x)=-1,所以x=b+λ/2>0,與假設x<0矛盾;(λ > 0)

        假設x>0,則sgn(x)=1,所以x=b-λ/2>0,成立;

        所以此時在x=b-λ/2>0處取得極小值:

 

        即此時極小值小於f(0),而當x<0時

        即當x<0時函數f(x)為單調降函數(對任意△x<0,f(0)<f(△x))。因此,函數在x=b-λ/2>0處取得最小值。

(2)當b<-λ/2時

        假設x<0,則sgn(x)=-1,所以x=b+λ/2<0,成立;

        假設x>0,則sgn(x)=1,所以x=b-λ/2<0,與假設x>0矛盾;

        所以此時在x=b+λ/2<0處取得極小值:

        即此時極小值小於f(0),而當x>0時

        即當x>0時函數f(x)為單調升函數(對任意△x>0,f(△x)>f(0))。因此,函數在x=b+λ/2<0處取得最小值。

(3)當-λ/2<b<λ/2時(即|b|<λ/2時)

        假設x<0,則sgn(x)=-1,所以x=b+λ/2>0,與假設x<0矛盾;

        假設x>0,則sgn(x)=1,所以x=b-λ/2<0,與假設x<0矛盾;

        即無論x為大於0還是小於0均沒有極值點,那么x=0是否為函數f(x)的極值點呢?

        對於△x≠0,

        當△x >0時,利用條件b<λ/2可得

        當△x <0時,利用條件b<λ/2可得(注:此時|△x |=-△x)

        因此,函數在x=0處取得極小值,也是最小值

        綜合以上三種情況,f(x)的最小值在以下位置取得:

 

 至此,我們可以得到優化問題

的解為

 

 

http://blog.csdn.net/bingecuilab/article/details/50628634

http://blog.csdn.net/jbb0523/article/details/52103257

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM