假設咱們要求解如下的最小化問題:
\( \min\limits_x f(x) \) 。
若是\( f(x) \)可導,那麼一個簡單的方法是使用Gradient Descent (GD)方法,也即便用如下的式子進行迭代求解:
\( x_{k+1} := x_{k} - \alpha \nabla f(x_{k}) \) 。
對GD的一種解釋是\( x_{k} \)沿着當前目標函數的降低方向走一小段,只要步子足夠小,總能保證獲得 \( f(x_{k+1}) \leq f(x_{k}) \)。 html
若是\( \nabla f(x) \)知足L-Lipschitz,即:
\( ||\nabla f(x') - \nabla f(x)|| \leq L ||x’ - x|| \),
那麼咱們能夠在點\( x_{k} \)附近把\( f(x) \)近似爲:
\( \hat{f}(x, x_k) \doteq f(x_k) + \langle \nabla f(x_k), x - x_k \rangle + \frac{L}{2} ||x - x_k||^2 \)。 算法
把上面式子中各項從新排列下,能夠獲得: 函數
顯然\( \hat{f}(x, x_k) \)的最小值在 spa
\( x_{k+1} = x_k - \frac 1 L \nabla f(x_k) \) 3d
得到。因此,從這個角度上看的話,GD的每次迭代是在最小化原目標的一個二次近似函數。 htm
在不少最小化問題中,咱們每每會加入非光滑的懲罰項\( g(x) \),好比常見的L1懲罰:\( g(x) = ||x||_1 \)。這個時候,GD就很差直接推廣了。但上面的二次近似思想卻能夠推廣到這種狀況: blog
這就是所謂的proximal gradient descent(PGD)算法。只要給定\( g(x) \)時下面的最小化問題能容易地求解,PGD就能高效地使用: get
好比\( g(x) = ||x||_1 \)時, \(\text{prox}_{\mu g} (z)\)可以經過所謂的soft thresholding得到:
\( \text{prox}_{\mu g} (z) = \text{sign}(z) \max\{|z| - \mu, \ 0\} \)。
[References]
[1] John Wright. Lecture III: Algorithms, 2013.