假设咱们要求解如下的最小化问题:
\( \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.