压缩感知重构算法——FPC
前言
所谓FPC即Fixed Point Continuation,其中涉及到两个部分,即Fixed Point和Continuation。不动点迭代算法和连续算法。下面针对这两个方面对FPC算法的原理进行阐述。
Fixed Point
首先,FPC算法是2007年Elaine T. Hale等人提出的一种解决压缩感知中L1范数最小化问题的重构算法。属于凸优化算法的一种。其解决问题的数学模型如下:
目标即求minφ(x)的解x*。而我们知道,求一个函数的最优解,即求其导数的零解,即T(x)=∂φ(x)=0的解x*。
求函数T(x)=0,可以使用不动点迭代的方法,即将T(x)=0变成x=g(x)的形式,进行迭代求解。根据这个思想,我们再来看原始的目标函数φ(x),通常φ(x)可以分解为两个凸函数的相加,即φ(x)=φ1+φ2。那么我们对应的算子T也可以转换为两个单调算子的和,即T=T1+T2。之后我们开始进行不动点迭代的转换,即求T的零解。
在转换过程中我们假设参数τ>0,且T2是一个单值函数,且(I+τT1)可逆。
可推出φ(x)最小解的迭代式:
对于解决的凸优化问题,即T1=▽||x||1,T2= μ▽||Ax-b||22/2。同时要求(I+τT1)是收缩的。
之后针对凸优化问题的解,原论文中给出命题:
其中g(x)=▽f(x)=▽μ||Ax-b||22/2。
上式(15)其中包含两个步骤,一个是梯度下降步,一个是阈值收缩步。
即
最终可表示为迭代式
其中v=τ/μ.
以上便是FPC的FP不动点迭代部分,
Continuation
而对于连续算法,又名同伦法。其目的是用于选择合适的μ值。
同伦法的思想即为了解决一个问题f(x),可以构造一个新的问题H(x,s)=sf(x)+(1-s)g(x)。其中当s=1时,H(x,1)=f(x),即原问题;当s=0时,H(x,0)=g(x)。其中g(x)一般可设置为一个已知解的问题,如f(x)-f(x*),解为x*。然后s从0到1缓慢变换,得到一个路径,这个H(x,s)即连接f(x)到g(x)的路径。然后将其融入到其他算法中,进行迭代,往往会比给定一个具体的初值的效果要更好。
有关同伦法具体解释可参考这篇博客同伦法(Homotopy Method)
FPC
而FPC算法即在不动点迭代中加入同伦法的思想,不以直接设定的初值μ来进行迭代计算,而是生成一个μ的序列,然后在这个序列中缓慢变化选择,进行迭代。下面给出FPC算法的实现步骤: