L1范数产生稀疏解###
minF(x)=∣∣Ax−b∣∣2+λ∣∣x∣∣pp
假设最优解为x∗,则原问题等价于: minxF(x)=∣∣Ax−b∣∣2s.t.∣∣x∣∣pp≤CC=∣∣x∗∣∣pp
proximal gradient descent###
在梯度下降中,如果 ∇f(x) 满足L-Lipschitz,即: ∥∇f(xk+1)−∇f(xk)∥≤L∥xk+1−xk∥ ,
在xk点泰勒展开:
f(x,xk)=f(xk)+⟨x−xk,∇f(xk)⟩+2L∥x−xk∥2=2L∥x−(xk−tk∇f(xk))∥2+φ(xk) 最小在 xk+1=xk−L1∇f(xk+1)。
如果优化目标中,加入非光滑的惩罚项,比如L1,对光滑的部分做上述展开,则称为proximal gradient descent(PGD)。
Proximal Gradient Descent for L1 Regularization
ISTA###
ISTA算法解决非平滑的,不可求导的凸优化问题,比如带能够产生稀疏解的L1范数问题,min{f(x)+λ∥x∥1}。
通过对目标函数进行分解,将其平滑的部分用近端正则逼近。即每步在优化原问题的一个变化上界。 每一步迭代中,优化变量完全解耦,且子问题存在闭式解。
列:minF(x)=∥Ax−b∥2+λ∥x∥pp。
该问题等价于:minx∥Ax−b∥2s.t.∥x∥pp<CC=∥x∗∥ppx∗是最优解。
每一步迭代求解:
xk=argxmin{f(xk−1)+⟨x−xk−1,∇f(xk−1)⟩+2tk1∥x−xk−1∥2+λ∥x∥1}≈argxmin{2tk1∥x−(xk−1−tk∇f(xk−1))∥2+λ∥x∥1} 存在闭式解:
xk=τλtk(xk−1−tk∇f(xk−1))τα(x)=sign(x)max{0,∣x∣−α} 收敛:
∥xk−xk−1∥2→0时收敛,上界等于原目标函数。
如何确定tk?
from MLAPP: Chapter 13. Sparse linear models (page 446)
FISTA###
《A Fast Iterative Shrinkage-Thresholding Algorithm for Linear Inverse Problems》
关于Nesterov’s method可以见SGD的Nesterov Momentum。
Python implementation of the Fast Iterative Shrinkage/Thresholding Algorithm.