[Opt] ISTA 和 FISTA
在上一篇中介绍了用 Proximal Gradient 以及如何用其解 Lasso 问题和 Ridge Regression,本文主要从近端梯度算法(PG)出发介绍加速的近端算法(APG),这里或者也可以称之为 ISTA (Iterative shrinkage-thresholding algorithm) 和 FISTA (A fast iterative shrinkage-thresholding algorithm).
1 .Proximal Gradient 内容回顾
(P) \quad min\left\{F(x) \equiv f(x)+g(x) :x\in \mathbb{R^n}\right\}\\
其中, g: \mathbb{R^n} \rightarrow \mathbb{R^n} 为连续凸函数, f: \mathbb{R^n} \rightarrow \mathbb{R} 为连续可微且 f 的梯度一阶 Lipschitz 连续,即: ||\nabla f(x)-\nabla f(y)||\leq L(f)||x-y|| , \; \forall x,y \in \mathbb{R^n} , L(f) 为 Lipschitz 常数。问题 (P) 的最优点集非空。
Q_L(x,y):=f(y)+<x-y,\nabla f(y)>+\frac L2 ||x-y||^2+g(x)\\
上式有唯一的最小点:
p_L(y)=arg \mathop{min}_x \left\{g(x)+\frac L2 ||x-(y-\frac 1L \nabla f(y))||^2\right\}\\
由此由问题 (P) 有迭代格式:
x_k=p_L(x_{k-1})\\
其中,L 表示迭代的步长。
2 ISTA 和 FISTA
2.1 ISTA 固定步长
这个方法可能的缺点是 Lipschitz 常数不好计算,例如对于 l_1 正则项问题
F(x)=||Ax-b||^2+||x||_1\\
Lipchitz 常数 L(f)=2 \lambda_{max}(A^TA) 。当为大规模的问题时上述的特性(特征值)也变的难以计算。
2.2 ISTA 回溯步长
2.3 FISTA 固定步长
FISTA 是一种快速的迭代阈值收缩算法(ISTA)。相对与 ISTA,FISTA的收缩算子是作用在 y_k 上的,而 y_k 是前面点 x_{k-1},x_{k-2} 的非常特殊的线性组合。这也是 PG 方法和 APG 方法的主要不同之处。这样的改进就类似于梯度下降法和 Adam 之类的相似。
2.4 FISTA 回溯步长
3. ISTA和FISTA的收敛速率
定理 3.1 介绍了 ISTA 的复杂度为 O(1/k)
定理 4.4 介绍了 FISTA 的复杂度为 O(1/k^2) 。
文献[1]中的所举的一个应用是图片去模糊(Deblurring),也就是 Lasso 问题的求解。
测试1
参考文献
[1] Beck A, Teboulle M. A Fast Iterative Shrinkage-Thresholding Algorithm for Linear Inverse Problems[J]. Siam J Imaging Sciences, 2009, 2(1):183-202.