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

\qquad现有一个求稀疏编码的问题:
min⁡∥z∥0s.t. x=Dz \min \parallel z \parallel_0 \quad s.t. \ x=Dz minz0s.t. x=Dz
\qquad其中D∈Rn×mD\in \mathbb{R}^{n\times m}DRn×m, z∈Rmz\in \mathbb{R}^{m}zRmx∈Rnx\in \mathbb{R}^{n}xRn 的 sparse code.
\qquad 解决上式是一个复杂度随 m 以指数级增长的组合问题,最常见的解决方法是将 l0l_0l0 范数替换为 l1l_1l1范数.即目标函数变为:
argmin⁡D,z12∥x−Dz∥22+λ∥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 已给定,即:
argmin⁡z12∥x−Dz∥22+λ∥z∥1 arg\min_{z} \frac{1}{2}\parallel x-Dz \parallel_2^2 + \lambda \parallel z \parallel_1 argzmin21xDz22+λz1

\qquad对于凸二范数 f1= 12∥x−Dz∥22f_1=\ \frac{1}{2}\parallel x-Dz \parallel_2^2f1= 21xDz22,叫做reconstruction 项,它的函数是这样的
在这里插入图片描述
\qquad对于凸一范数 f2=λ∥z∥1f_2=\lambda\parallel z \parallel_1f2=λz1,叫做sparsity penalty 项,它的函数是这样的,故其导数为符号函数。
在这里插入图片描述
\qquad现在我们来求解这个目标函数,即得到使 fff 值最小时的zzz.将函数变形为:
f=f1+f2= 12∥x−Dz∥22+λ∥z∥1=12(x−Dz)T(x−Dz)+λ∥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. 对fffzzz 的偏导:
∂f∂z=∂f1∂z+∂f2∂z=DT(Dz−x)+λsign(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 项
zk+1=zk−αDT(Dz−x)z^{k+1}=z^k-\alpha D^T(Dz-x)zk+1=zkαDT(Dzx)
\qquad 对于penalty 项zk+1=zk−αλsign(z)z^{k+1}=z^k-\alpha\lambda sign(z)zk+1=zkαλsign(z)
\qquad问题来了,符号函数 sign(z)sign(z)sign(z) 在 0 处是不可微的
\qquad解决办法:如果 l1norml_1 norml1norm 的梯度因为 zzz 而改变符号,则将其设为 0 ,即
if:sign(z)≠sign(z−αλsign(z))thenz=0else:z=z−αλsign(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)=0z^{(0)}=0z(0)=0
2.当 z(k)z^{(k)}z(k) 未收敛

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

shrink:\qquad shrink:shrink:用来查看函数值是否:不变 / 变0
\qquad总结上述步骤:
zk+1=Sαλ(zk+αDT(x−Dz))zk+1=SλL(zk+1LDT(x−Dz))(α=1L) \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≥σmax(DTD)L \geq \sigma_{max}(D^TD)Lσmax(DTD) 时,才能保证收敛性σmax(A)\sigma_{max}(A)σmax(A) 表示 AAA 的最大特征值,soft thresholding function Sθ(x)S_{\theta}(x)Sθ(x) 定义为:
Sθ(x)=sign(x)⋅max(∣x∣−θ,0)S_{\theta}(x)=sign(x) \cdot max(|x|-\theta,0)Sθ(x)=sign(x)max(xθ,0)
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值