Iterative Shrinkage Thresholding Algorithm(ISTA)

ISTA

对于一个基本的线性逆问题:
y=Ax+w(1){y}={A} {x}+{w}\tag{1} y=Ax+w(1)
其中A∈RM×NA\in \mathbb{R}^{M\times N}A∈RM×N,y∈RM×1y\in \mathbb{R}^{M\times 1}y∈RM×1,www是未知噪声。(1)式可用最小二乘法来求解:
x^LS=arg⁡mi⁡xn∥Ax−y∥22(2)\hat{{x}}_{L S}=\underset{{x}}{\arg \operatorname{mi}} n\|{A} {x}-{y}\|_{2}^{2}\tag{2} x^LS​=xargmi​n∥Ax−y∥22​(2)
当 M=NM=NM=N 且 AAA 非奇异时,最小二乘法的解等价于A−1yA^{-1}yA−1y。然而,在很多情况下,AAA 是病态的(ill-conditioned)。最小二乘是一种无偏估计方法,如果系统是病态的,则会导致其估计方差很大,因此最小二乘法不适用于求解病态方程。

为了求解病态线性系统的逆问题,可以使用岭回归。岭回归方法的主要思想是以可容忍的微小偏差来换取估计的良好效果,实现方差和偏差的一个trade-off。岭回归求解病态问题可以表示为:
x^T=arg⁡min⁡x12∥Ax−y∥22+λ∥x∥22(3)\hat{{x}}_{T}=\underset{{x}}{\arg \min} \frac{1}{2}\|{A x}-{y}\|_{2}^{2}+\lambda\|{x}\|_{2}^{2}\tag{3} x^T​=xargmin​21​∥Ax−y∥22​+λ∥x∥22​(3)
其中λ>0\lambda >0λ>0 为正则化参数。

另一种求解(1)式的方法是采用 ℓ1\ell_1ℓ1​范数作为正则项,这就是经典的LASSO问题:
x^=arg⁡min⁡x∥Ax−y∥22+λ∥x∥1(4)\hat{{x}}=\underset{{x}}{\arg \operatorname{min}} \|{A} {x}-{y}\|_{2}^{2}+\lambda\|{x}\|_{1}\tag{4} x^=xargmin​∥Ax−y∥22​+λ∥x∥1​(4)
采用ℓ1\ell_1ℓ1​范数正则项相对于 ℓ2\ell_2ℓ2​ 范数正则项有两个优势:

  • ℓ1\ell_1ℓ1​范数正则项能产生稀疏解;
  • 对异常值不敏感。

式(4)是一个凸优化问题,通常可以转化为二阶锥规划问题,从而使用内点法等方法求解。然而在大规模问题中,由于数据维度太大,而内点法的算法复杂度为 O(N3)O(N^3)O(N3),导致求解非常耗时。由于基于梯度的方法算法复杂度小,而且算法结构简单,容易操作,很多研究者研究通过简单的基于梯度的方法来求解(4)式。

在众多基于梯度的算法中,ISTA算法是一种非常受关注的算法,ISTA算法在每一次迭代中通过一个收缩/软阈值操作来更新xxx,其具体迭代格式如下:
xk+1=Sαλ(xk+αAT(y−Axk))xk+1=SλL(xk+1LAT(y−Axk))(α=1L)(5)\begin{aligned} x^{k+1}&=S_{\alpha \lambda}\left(x^{k}+\alpha A^{T}(y-A x^{k})\right)\\\tag{5} x^{k+1}&=S_{\frac{\lambda}{L}}\left(x^{k}+\frac{1}{L} A^{T}(y-A x^{k})\right)\quad (\alpha=\frac{1}{L}) \end{aligned} xk+1xk+1​=Sαλ​(xk+αAT(y−Axk))=SLλ​​(xk+L1​AT(y−Axk))(α=L1​)​(5)

PS:第二个式子就是α=1L\alpha=\frac{1}{L}α=L1​时的情况,论文中证明只有当 L≥σmax(DTD)L \geq \sigma_{max}(D^TD)L≥σmax​(DTD)时,才能保证收敛性, 其中σmax(A)\sigma_{max}(A)σmax​(A)表示 AAA 的最大特征值。

其中 Sθ(x)S_{\theta}(x)Sθ​(x) 是软阈值操作函数:
Sθ(x)=sign⁡(x)⋅max⁡(∣x∣−θ,0)(6)S_{\theta}(x)=\operatorname{sign}(x) \cdot \max (|x|-\theta, 0)\tag{6} Sθ​(x)=sign(x)⋅max(∣x∣−θ,0)(6)
下面我们对式(5)进行推导:

首先,对于式(5),我们记:
arg⁡min⁡xf(x):=arg⁡min⁡x12(Ax−y)T(Ax−y)+λ∥x∥1(7)\mathop {\arg \min }\limits_xf(x):=\mathop {\arg \min }\limits_x \frac{1}{2}{(Ax - y)^T}(Ax - y) + \lambda {\left\| x \right\|_1}\tag{7} xargmin​f(x):=xargmin​21​(Ax−y)T(Ax−y)+λ∥x∥1​(7)
其中,f(x)f(x)f(x)的第一项可以看作时重构项,第二项可以看作是正则化项。对于该优化问题,我们可以很容易想到利用梯度下降法来求解。

首先,对fff 求 xxx 的偏导:
∂f∂x=∂f1∂x+∂f2∂x=AT(Ax−y)+λsign⁡(x)(8)\frac{\partial f}{\partial x} =\frac{\partial f_{1}}{\partial x}+\frac{\partial f_{2}}{\partial x} =A^{T}(A x-y)+\lambda \operatorname{sign}(x)\tag{8} ∂x∂f​=∂x∂f1​​+∂x∂f2​​=AT(Ax−y)+λsign(x)(8)
对于第一项:
xk+1=xk−αAT(Ax−y)(9)x^{k+1}=x^{k}-\alpha A^{T}(A x-y)\tag{9} xk+1=xk−αAT(Ax−y)(9)
对于第二项:
xk+1=xk−αλsign⁡(x)(10)x^{k+1}=x^{k}-\alpha \lambda \operatorname{sign}(x)\tag{10} xk+1=xk−αλsign(x)(10)
但是,符号函数sign(z)sign(z)sign(z) 在 0 处是不可微的!怎么处理?

ISTA做了如下处理:
shrink⁡(x,αλ):{ifsign(x)≠sign(x−αλsign(x)):thenx=0else:x=x−αλsign(x)(11)\operatorname{shrink}(x,\alpha\lambda):\left\{ {\begin{aligned} &{if\ {\mathop{\rm sign}\nolimits} (x) \ne {\mathop{\rm sign}\nolimits} (x - \alpha \lambda {\mathop{\rm sign}\nolimits} (x)):then\;x = 0}\\ &{else:x = x - \alpha \lambda {\mathop{\rm sign}\nolimits} (x)} \end{aligned}} \right.\tag{11} shrink(x,αλ):{​if sign(x)​=sign(x−αλsign(x)):thenx=0else:x=x−αλsign(x)​(11)
简单来说,因为ℓ1\ell_1ℓ1​范数在0附近不可微,所以就将0的邻域设置为可微!下图其实就是收缩算子的图像。

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


  • 初始化 x(0)=0x^{(0)} = 0x(0)=0
  • 当 x(k)x^(k)x(k)未收敛
    • xk=xk−αAT(Ax−y)x^{k}=x^{k}-\alpha A^{T}(A x-y)xk=xk−αAT(Ax−y)
    • xk+1=shrink⁡(xk,αλ)x^{k+1}=\operatorname{shrink}\left(x^{k}, \alpha \lambda\right)xk+1=shrink(xk,αλ)

其实带进去算一下,就可以知道shrink⁡(xk,αλ)\operatorname{shrink}\left(x^{k}, \alpha \lambda\right)shrink(xk,αλ)其实就是上面的Sθ(x)S_{\theta}(x)Sθ​(x),所以ISTA可以总结如下:
xk+1=Sαλ(xk+αAT(y−Axk))Sθ(x)=sign⁡(x)⋅max⁡(∣x∣−θ,0)(12)\begin{aligned} x^{k+1}&=S_{\alpha \lambda}\left(x^{k}+\alpha A^{T}(y-A x^{k})\right)\\ S_{\theta}(x)&=\operatorname{sign}(x) \cdot \max (|x|-\theta, 0)\tag{12} \end{aligned} xk+1Sθ​(x)​=Sαλ​(xk+αAT(y−Axk))=sign(x)⋅max(∣x∣−θ,0)​(12)
证明完毕。

参考文献

  • Beck A, Teboulle M. A fast iterative shrinkage-thresholding algorithm for linear inverse problems[J]. SIAM journal on imaging sciences, 2009, 2(1): 183-202.

Iterative Shrinkage Thresholding Algorithm相关推荐

  1. (转)IST:Iterative Shrinkage/Thresholding和Iterative Soft Thresholding

    原 IST:Iterative Shrinkage/Thresholding和Iterative Soft Thresholding 2016年08月10日 15:26:02 jbb0523 阅读数: ...

  2. IST改进算法之Two-Step Iterative Shrinkage/Thresholding(TwIST)

    题目:IST改进算法之Two-Step Iterative Shrinkage/Thresholding(TwIST) 本篇介绍IST的一种改进算法TwIST,该改进算法由以下文献提出: Biouca ...

  3. IST:Iterative Shrinkage/Thresholding和Iterative Soft Thresholding

    题目:IST:Iterative Shrinkage/Thresholding和Iterative Soft Thresholding 本篇是对压缩感知重构算法之迭代软阈值(IST)的延续,可能需要以 ...

  4. Iterative Soft Thresholding和Iterative Shrinkage/Thresholding的区别

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 题目:IST:Iterative Shrinkage/Thresholding和Iterati ...

  5. 压缩感知重构算法之迭代硬阈值(Iterative Hard Thresholding,IHT)

    转载自:https://blog.csdn.net/wyw921027/article/details/52102211 题目:压缩感知重构算法之迭代硬阈值(Iterative Hard Thresh ...

  6. SLAM--VICP(Velocity Updating Iterative Closest Point Algorithm)学习笔记

    参考资料: <VICP: Velocity Updating Iterative Closest Point Algorithm>–Seungpyo Hong Heedong Ko Jin ...

  7. 阅读《Detection of EEG-Based Eye-Blinks Using A Thresholding Algorithm》小结

    Title: Detection of EEG-Based Eye-Blinks Using A Thresholding Algorithm 作者:Dang-Khoa Tran 发表时间:11-05 ...

  8. A Singular Value Thresholding Algorithm for Matrix Completion

    1, 前提假设 假设存在一个未知的方阵 M ∈ R n × n M\in R^{n\times n} M∈R

  9. 稀疏编码: LASSO,近端梯度优化(PGD),迭代软阈值算法(ISTA),L-Lipschitz条件,软阈值

    在用到稀疏编码时,难免会提到以下概念: (1)LASSO(Least Absolute Shrinkage and Selection Operatior): 最小绝对收缩选择算子.这个名词听名字比较 ...

最新文章

  1. python迷宫问题求最短路径_用栈求解迷宫问题的所有路径及最短路径程序
  2. 视学算法第六轮送书活动,16本高质量书免费拿走!
  3. 枚举(Enumerations)
  4. Hibernate---O/R Mapping
  5. @Resource注解研究和在SAP Hybris ECP中的应用
  6. mybatis学习(39):动态sql片段
  7. 如何在SQL Server 2016中使用并行插入以提高查询性能
  8. python脚本常见包_python之各种包
  9. 三星t5 android,三星T5首测:一款秒杀SATA SSD的移动SSD
  10. 光伏并网系统的谐波分析
  11. ks检验与s-w 检验_数据分析基础(2)——正态分布检验
  12. 在Ubuntu上安装Tensorflow Serving
  13. Linux ssh 文件 authorized_keys 和 known_hosts
  14. Unity动画系统学习方向
  15. 这三个步骤让你知道WPS如何转换成WORD文档
  16. stm32流水灯c语言程序,STM32——流水灯程序
  17. 神经网络传递函数的选择,神经网络的函数表达式
  18. 农场经营区块链游戏-CropBytes,扮演角色经营你的农场
  19. Linux学习笔记(管道)
  20. 2016第16本:随机漫步的傻瓜

热门文章

  1. 毕业论文计算机专业3500字,关于计算机专业论文开题报告格式
  2. Maven 使用maven-assembly-plugin打包可执行jar,No auto configuration classes found in META-INF/spring.factori
  3. PHP上传excel,处理表格数据,并利用ajax提交保存数据
  4. “信息共享”的程度和范围应该如何拿捏?
  5. VirtualBox 4.1 免费高效开源的虚拟机软件 (在Win7下装Linux、在Mac装Win7等)
  6. 板邓:PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)
  7. 【Swing 6】绝对定位—QQ登录界面
  8. 问题描述:maven本地仓库有包,导致could not find artifact * * * 问题!
  9. 【学习笔记】Golang语法学习笔记
  10. Go语言基础学习笔记