Iterative Shrinkage Thresholding Algorithm

2023-11-15

Iterative Shrinkage Thresholding Algorithm(ISTA)

ISTA

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

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

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

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

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

在众多基于梯度的算法中,ISTA算法是一种非常受关注的算法,ISTA算法在每一次迭代中通过一个收缩/软阈值操作来更新 x x x,其具体迭代格式如下:
x k + 1 = S α λ ( x k + α A T ( y − A x k ) ) x k + 1 = S λ L ( x k + 1 L A T ( y − A x k ) ) ( α = 1 L ) (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(yAxk))=SLλ(xk+L1AT(yAxk))(α=L1)(5)

PS:第二个式子就是 α = 1 L \alpha=\frac{1}{L} α=L1时的情况,论文中证明只有当 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 的最大特征值。

其中 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 ⁡ x f ( x ) : = arg ⁡ min ⁡ x 1 2 ( A x − y ) T ( A x − 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} xargminf(x):=xargmin21(Axy)T(Axy)+λx1(7)
其中, f ( x ) f(x) f(x)的第一项可以看作时重构项,第二项可以看作是正则化项。对于该优化问题,我们可以很容易想到利用梯度下降法来求解。

首先,对 f f f x x x 的偏导:
∂ f ∂ x = ∂ f 1 ∂ x + ∂ f 2 ∂ x = A T ( A x − 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} xf=xf1+xf2=AT(Axy)+λsign(x)(8)
对于第一项:
x k + 1 = x k − α A T ( A x − y ) (9) x^{k+1}=x^{k}-\alpha A^{T}(A x-y)\tag{9} xk+1=xkαAT(Axy)(9)
对于第二项:
x k + 1 = x k − α λ sign ⁡ ( x ) (10) x^{k+1}=x^{k}-\alpha \lambda \operatorname{sign}(x)\tag{10} xk+1=xkαλsign(x)(10)
但是,符号函数 s i g n ( z ) sign(z) sign(z) 在 0 处是不可微的!怎么处理?

ISTA做了如下处理:
shrink ⁡ ( x , α λ ) : { i f   s i g n ( x ) ≠ s i g n ( x − α λ s i g n ( x ) ) : t h e n    x = 0 e l s e : x = x − α λ s i g n ( 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 ) = 0 x^{(0)} = 0 x(0)=0
  • x ( k ) x^(k) x(k)未收敛
    • x k = x k − α A T ( A x − y ) x^{k}=x^{k}-\alpha A^{T}(A x-y) xk=xkαAT(Axy)
    • x k + 1 = shrink ⁡ ( x k , α λ ) x^{k+1}=\operatorname{shrink}\left(x^{k}, \alpha \lambda\right) xk+1=shrink(xk,αλ)

其实带进去算一下,就可以知道 shrink ⁡ ( x k , α λ ) \operatorname{shrink}\left(x^{k}, \alpha \lambda\right) shrink(xk,αλ)其实就是上面的 S θ ( x ) S_{\theta}(x) Sθ(x),所以ISTA可以总结如下:
x k + 1 = S α λ ( x k + α A T ( y − A x k ) ) 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(yAxk))=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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Iterative Shrinkage Thresholding Algorithm 的相关文章

随机推荐

  • 服务器怎么把自己的项目放上去,怎么把项目放到云服务器上

    怎么把项目放到云服务器上 内容精选 换一换 云服务器组是对云服务器的一种逻辑划分 云服务器组中的弹性云服务器遵从同一策略 当前仅支持反亲和性 即同一云服务器组中的弹性云服务器分散地创建在不同的主机上 提高业务的可靠性 您可以使用云服务器组将
  • 微信小程序:字体保持大小

    小程序和网页差不多 前台用wxml把内容摆好 然后用css调整样式 所以和web一样 必须要能够精确控制每一个元素的大小 在Web中 通过CSS基本达到了像素级的控制 但在小程序中 情况有所不同 下面是我通过微信提供的事件分析 把近7天访问
  • 数字化转型方法论汇总(学习笔记)

    数字化转型方法论汇总 德勤制造业数字化转型方法论 数字化转型的3大要点 1 从满足利益相关者期望出发 2 以企业价值引领业务模式创新 3 以信息作为企业神经中枢 重塑组织协同 一 关注集团利益相关者 两类利益相关者 集团外部的证监会 国资委
  • 比较2个数组是否一样

    需求 如果两个数组的类型 元素个数 元素顺序和内容是一样的我们就认为这2个数组是一模一样的 请使用方法完成 能够判断任意两个整型数组是否一样 并返回true或者false 分析 1 定义方法 接收2个整型数组 gt 是否需要参数 返回值类型
  • 《Win10——如何进入高级启动选项》

    Win10 如何进入高级启动选项 第一种方法 1 管理员命令提示符输入如下代码 自动重启并进入高级启动选项 shutdown r o f t 00 第二种方法 1 管理员命令提示符输入以下代码 开机时按下F8 进入高级启动选项 bcdedi
  • java基础总结(二十五)--访问修饰符protected

    三 protected 关键字的真正内涵 很多介绍Java语言的书籍 包括 Java编程思想 都对protected介绍的比较的简单 基本都是一句话 就是 被protected修饰的成员对于本包和其子类可见 这种说法有点太过含糊 常常会对大
  • 基于python 自写Tobii VI-T滤波器

    文章目录 官网参考文档 Gap fill in interpolation Eye selection Noise reduction Velocity calculator I VT classifier Merge adjacent f
  • react-router-dom V6

    目录 1 前言 2 变更概览 将 Switch 升级为 Routes 路由匹配组件参数 由 component 改为 element 相对路径识别 子路由不需要补全父路由的path react会自动补全 用 useNavigate 替代 u
  • web开发编码_编码和游戏开发

    web开发编码 As a game enthusiast and a beginner programmer I always wonder what it would be like to develop a game 作为游戏发烧友和初
  • 入门接口测试

    首先 什么是接口呢 接口一般来说有两种 一种是程序内部的接口 一种是系统对外的接口 系统对外的接口 比如你要从别的网站或服务器上获取资源或信息 别人肯定不会把数据库共享给你 他只能给你提供一个他们写好的方法来获取数据 你引用他提供的接口就能
  • gcc 若干安全相关选项

    1 FORTIFY SOURCE buffer over flow 防御 参考 http fedoraproject org wiki Security Features Compile Time Buffer Checks 28FORTI
  • Elasticsearch8.2扩容挪数据master出现异常

    背景 1 ES 8 2 版本集群 从10节点扩到20节点 变更 目标替换老的10个节点 先扩容新节点再下掉老节点 2 挪数据执行exclude API 排除老节点IP 设置迁移速率为800Mb s 默认40Mb s 异常 1 迁移过程中突然
  • python笔记第四章---选择结构

    一 程序的组织结构 fact 任何简单或复杂的算法都可以由顺序结构 选择结构和循环结构这三种基本结构组合而成 顺序结构 计算机的流程控制 选择结构 if语句 循环结构 while语句 for in语句 1 顺序结构 程序从上到下顺序的执行代
  • Linux文件权限的设置

    本文章主要介绍了对Linux文件的权限以及如何设置权限 一 查看文件的权限与属性 ls l 或者 ll查看文件属性 二 可以列出如下图所示的一些信息 rw r r 第一位代表文件类型 d 表示目录 l 表示链接文件 表示普通文件 b 表示快
  • Postman测试webService接口

    1 打开Postman界面如下 设置Content Type text xml 2 设置body 3 请求结果如下 4 至此通过Postman进行webService接口测试测试完毕
  • 使用过滤器和request装饰增强来彻底解决乱码问题

    在客户端以get或者post方式提交数据时 可能会出现客户端与服务端编码集不匹配而发生乱码的现象 在对post方式产生的乱码我们可以用 request setCharacterEncoding utf 8 语句来解决 在对get方式产生的乱
  • maven&​ Plugin ‘org.apache.tomcat.maven:tomcat7-maven-plugin:2.2’ not found​报错解决【问题及解决过程记录】

    目录 什么是 Maven 安装 解压后需要配置环境变量 在path新增路径 验证maven安装成功 Win R打开cmd 输入mvn v 在配置文件中设置本地仓库路径 maven仓库的种类和关系 编辑 maven目录结构 编辑 maven的
  • oracal从入门到精通(一)

    1 1了解最新版本Oracle 11g 可以在Oracle的官方网站www oracle com获取Oracle的版本信息 本书中要讲解的是Oracle 11g的第1版 所以在这里只对Oracle 11g的各版本做以说明 Oracle 11
  • 关于Vue.js组件巨详细的一篇文章

    文章目录 Vue js 组件 全局注册 组件基础 组件命名规则 template 选项 data 选项 局部注册 组件通信 父组件向子组件传值 props 命名规则 单项数据流 props 类型 props 验证 非 props 属性 子组
  • Iterative Shrinkage Thresholding Algorithm

    Iterative Shrinkage Thresholding Algorithm ISTA ISTA 对于一个基本的线性逆问题 y A x