假設我們要求解以下的最小化問題: $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