稀疏编码的经典解法——ISTA算法的推导

\qquad 现有一个求稀疏编码的问题:
min ⁡ ∥ z ∥ 0 s . t .   x = D z \min \parallel z \parallel_0 \quad s.t. \ x=Dz minz0s.t. x=Dz
\qquad 其中 D ∈ R n × m D\in \mathbb{R}^{n\times m} DRn×m, z ∈ R m z\in \mathbb{R}^{m} zRm x ∈ R n x\in \mathbb{R}^{n} xRn 的 sparse code.
\qquad 解决上式是一个复杂度随 m 以指数级增长的组合问题,最常见的解决方法是将 l 0 l_0 l0 范数替换为 l 1 l_1 l1范数.即目标函数变为:
a r g min ⁡ D , z 1 2 ∥ x − D z ∥ 2 2 + λ ∥ z ∥ 1 arg\min_{D,z} \frac{1}{2}\parallel x-Dz \parallel_2^2 + \lambda \parallel z \parallel_1 argD,zmin21xDz22+λz1
\qquad 假设 D 已给定,即:
a r g min ⁡ z 1 2 ∥ x − D z ∥ 2 2 + λ ∥ z ∥ 1 arg\min_{z} \frac{1}{2}\parallel x-Dz \parallel_2^2 + \lambda \parallel z \parallel_1 argzmin21xDz22+λz1

\qquad 对于凸二范数 f 1 =   1 2 ∥ x − D z ∥ 2 2 f_1=\ \frac{1}{2}\parallel x-Dz \parallel_2^2 f1= 21xDz22,叫做reconstruction 项,它的函数是这样的
稀疏编码的经典解法——ISTA算法的推导_第1张图片
\qquad 对于凸一范数 f 2 = λ ∥ z ∥ 1 f_2=\lambda\parallel z \parallel_1 f2=λz1,叫做sparsity penalty 项,它的函数是这样的,故其导数为符号函数。
稀疏编码的经典解法——ISTA算法的推导_第2张图片
\qquad 现在我们来求解这个目标函数,即得到使 f f f 值最小时的 z z z.将函数变形为:
f = f 1 + f 2 =   1 2 ∥ x − D z ∥ 2 2 + λ ∥ z ∥ 1 = 1 2 ( x − D z ) T ( x − D z ) + λ ∥ z ∥ 1 \begin{aligned} f&=f_1+f_2\\ &=\ \frac{1}{2}\parallel x-Dz \parallel_2^2 + \lambda \parallel z \parallel_1\\ &=\frac{1}{2}(x-Dz)^T(x-Dz)+\lambda\parallel z \parallel_1\\ \end{aligned} f=f1+f2= 21xDz22+λz1=21(xDz)T(xDz)+λz1
\qquad 故可以梯度下降法来求 z. 对 f f f x x x 的偏导:
∂ f ∂ z = ∂ f 1 ∂ z + ∂ f 2 ∂ z = D T ( D z − x ) + λ s i g n ( z ) \begin{aligned} \frac{\partial f}{\partial z}&=\frac{\partial f_1}{\partial z}+\frac{\partial f_2}{\partial z}\\ &=D^T(Dz-x)+\lambda sign(z) \end{aligned} zf=zf1+zf2=DT(Dzx)+λsign(z)
\qquad 对于reconstruction 项
z k + 1 = z k − α D T ( D z − x ) z^{k+1}=z^k-\alpha D^T(Dz-x) zk+1=zkαDT(Dzx)
\qquad 对于penalty 项 z k + 1 = z k − α λ s i g n ( z ) z^{k+1}=z^k-\alpha\lambda sign(z) zk+1=zkαλsign(z)
\qquad 问题来了,符号函数 s i g n ( z ) sign(z) sign(z) 在 0 处是不可微的
\qquad 解决办法:如果 l 1 n o r m l_1 norm l1norm 的梯度因为 z z z 而改变符号,则将其设为 0 ,即
i f : s i g n ( z ) ≠ s i g n ( z − α λ s i g n ( z ) ) t h e n z = 0 e l s e : z = z − α λ s i g n ( z ) if:\quad sign(z)\neq sign(z-\alpha \lambda sign(z)) \quad then \quad z=0\\ else: \quad z=z-\alpha \lambda sign(z) if:sign(z)=sign(zαλsign(z))thenz=0else:z=zαλsign(z)

\qquad 上面的两项的处理过程概括起来就是 ISTA算法

1.初始化 z ( 0 ) = 0 z^{(0)}=0 z(0)=0
2.当 z ( k ) z^{(k)} z(k) 未收敛

z k = z k − α D T ( D z − x ) z^{k}=z^{k}-\alpha D^T(Dz-x) zk=zkαDT(Dzx)
z k + 1 = s h r i n k ( z k , α λ ) z^{k+1}=shrink(z^k,\alpha \lambda) zk+1=shrink(zk,αλ)

s h r i n k : \qquad shrink: shrink:用来查看函数值是否:不变 / 变0
\qquad 总结上述步骤:
z k + 1 = S α λ ( z k + α D T ( x − D z ) ) z k + 1 = S λ L ( z k + 1 L D T ( x − D z ) ) ( α = 1 L ) \begin{aligned} z^{k+1}&=S_{\alpha \lambda}(z^{k}+\alpha D^T(x-Dz))\\ z^{k+1}&=S_{\frac{\lambda}{L}}(z^{k}+\frac{1}{L} D^T(x-Dz)) \quad(\alpha=\frac{1}{L}) \end{aligned} zk+1zk+1=Sαλ(zk+αDT(xDz))=SLλ(zk+L1DT(xDz))(α=L1)
\qquad 只有当 L ≥ σ m a x ( D T D ) L \geq \sigma_{max}(D^TD) Lσmax(DTD) 时,才能保证收敛性 σ m a x ( A ) \sigma_{max}(A) σmax(A) 表示 A A A 的最大特征值,soft thresholding function S θ ( x ) S_{\theta}(x) Sθ(x) 定义为:
S θ ( x ) = s i g n ( x ) ⋅ m a x ( ∣ x ∣ − θ , 0 ) S_{\theta}(x)=sign(x) \cdot max(|x|-\theta,0) Sθ(x)=sign(x)max(xθ,0)
稀疏编码的经典解法——ISTA算法的推导_第3张图片

你可能感兴趣的:(sparse)