\qquad现有一个求稀疏编码的问题:
min∥z∥0s.t. x=Dz
\min \parallel z \parallel_0 \quad s.t. \ x=Dz
min∥z∥0s.t. x=Dz
\qquad其中D∈Rn×mD\in \mathbb{R}^{n\times m}D∈Rn×m, z∈Rmz\in \mathbb{R}^{m}z∈Rm 是 x∈Rnx\in \mathbb{R}^{n}x∈Rn 的 sparse code.
\qquad 解决上式是一个复杂度随 m 以指数级增长的组合问题,最常见的解决方法是将 l0l_0l0 范数替换为 l1l_1l1范数.即目标函数变为:
argminD,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,zmin21∥x−Dz∥22+λ∥z∥1
\qquad假设 D 已给定,即:
argminz12∥x−Dz∥22+λ∥z∥1
arg\min_{z} \frac{1}{2}\parallel x-Dz \parallel_2^2 + \lambda \parallel z \parallel_1
argzmin21∥x−Dz∥22+λ∥z∥1
\qquad对于凸二范数 f1= 12∥x−Dz∥22f_1=\ \frac{1}{2}\parallel x-Dz \parallel_2^2f1= 21∥x−Dz∥22,叫做reconstruction 项,它的函数是这样的

\qquad对于凸一范数 f2=λ∥z∥1f_2=\lambda\parallel z \parallel_1f2=λ∥z∥1,叫做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= 21∥x−Dz∥22+λ∥z∥1=21(x−Dz)T(x−Dz)+λ∥z∥1
\qquad故可以梯度下降法来求 z. 对fff 求 zzz 的偏导:
∂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}
∂z∂f=∂z∂f1+∂z∂f2=DT(Dz−x)+λsign(z)
\qquad 对于reconstruction 项
zk+1=zk−αDT(Dz−x)z^{k+1}=z^k-\alpha D^T(Dz-x)zk+1=zk−αDT(Dz−x)
\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(Dz−x)
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(x−Dz))=SLλ(zk+L1DT(x−Dz))(α=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)

2442

被折叠的 条评论
为什么被折叠?



