稀疏表示求解:OMP(The Orthogonal Matching Pursuit Algorithm)

稀疏表示求解:OMP(The Orthogonal Matching Pursuit Algorithm)



一、一些定义与原理

1. L 0 L_0 L0范数

定义为向量中非零元素的个数,用于描述向量的稀疏程度。

2. L 0 L_0 L0范数约束的稀疏表示问题描述(OMP求解目标)

问题描述如下:
min ⁡ x ∣ ∣ x ∣ ∣ 0 , s . t . A x = b \min_x{||x||_0}, s.t. Ax=b xminx0,s.t.Ax=b
对于稀疏表示这一特定应用,该公式可解释为找到最稀疏的 x x x(通过 L 0 L_0 L0范数作为罚项约束),使得 b b b能够在特定的矩阵 A A A下(稀疏表示任务中称 A A A为字典)被 x x x表示。我们的目的是求解稀疏系数 x x x
在这里插入图片描述

3. L 0 L_0 L0范数约束的稀疏表示问题的求解是NP难的

引入一个概念:矩阵 A A A的spark,即矩阵中最小的线性相关组中列向量的个数。
具体来说,如下矩阵的rank为4,而spark为3(即标红的三列是线性相关的,也是最小的线性相关列向量组)。
如果想要了解spark在压缩感知中的应用,可以去搜一下。在这里插入图片描述
根据Michael Elad等人的证明:当且仅当 s p a r k ( A ) > 2 k spark(A)>2k spark(A)>2k时,可以通过上述最小0范数优化问题得到稀疏系数 x x x的精确近似。我们可以直观想象一下spark的求解过程:
首先明确 s p a r k > = 2 spark>=2 spark>=2,存在两个向量相等的情况时取等号。
进而,从 n = 2 n=2 n=2开始搜索所有的列向量组合,直到第 n = N n=N n=N次时某一组合中的向量线性相关,则 s p a r k = N spark=N spark=N
显然这种搜索所有可能性的方法由于矩阵 A A A庞大的列向量个数(过完备性),使得很难在多项式时间内得到问题的解。因此研究者们致力于如何优化最小0范数优化问题的求解。
具体来说,如果矩阵 A A A有2000列, N = 15 N=15 N=15的话,则需要大约 7.5 × 1 0 20 7.5 \times{10^{20}} 7.5×1020年来求解。


二、OMP算法

1. 引入残差(residual)

根据上述最小0范数优化问题描述,可以对 A x = b Ax=b Ax=b限制不那么严格,引入如下误差:
r k = b − A x k r_k=b-Ax_k rk=bAxk
OMP的原理就是选择下一个非零值 x x x,以尽可能减少残差 r k r_k rk使得 A x Ax Ax更接近于 b b b。这就将最小0范数优化问题转化为了一个迭代求解问题。

2. 具体步骤

借用一下Elad大佬的👇
在这里插入图片描述

  • 第一步(1&2),从矩阵 A A A中选择最佳列 a i 0 a_{i_0} ai0,使得这一列与一个标量 z z z相乘得到的结果与残差 r k − 1 r_{k-1} rk1 L 2 L_2 L2范数小于其他列。
    求解细节如下:要想求得满足公式1的标量 z z z,首先对公式求导(极小值)得到: z o p t = a i T r k − 1 a i T a i = a i T r k − 1 z_{opt}=\frac{a_i^Tr_{k-1}}{a_i^Ta_i}=a_i^Tr_{k-1} zopt=aiTaiaiTrk1=aiTrk1然后再将 z o p t z_{opt} zopt代入公式1得到: E ( i ) = ∣ ∣ a i T r k − 1 ⋅ a i − r k − 1 ∣ ∣ 2 2 = ∣ ∣ r k − 1 ∣ ∣ 2 2 − ( a i T r k − 1 ) 2 E(i)=||a_i^Tr_{k-1}\cdot a_i-r_{k-1}||_2^2=||r_{k-1}||_2^2-(a_i^Tr_{k-1})^2 E(i)=aiTrk1airk122=rk122(aiTrk1)2由此,最小化 E ( i ) E(i) E(i)的问题就转化为了最小化 ∣ a i T r k − 1 ∣ |a_i^Tr_{k-1}| aiTrk1
    最小化 ∣ a i T r k − 1 ∣ |a_i^Tr_{k-1}| aiTrk1就好求了呀👇
    在这里插入图片描述

  • 第二步(3),将第 i 0 i_0 i0列放入 S k S_k Sk中。

  • 第三步(4&5),更新 x k x_k xk,与新的残差 r k r_k rk
    求解细节如下: S − k S-k Sk是从 A A A中之前每一轮最优的 a i a_i ai组成的,为下图标绿的部分,而 x x x中标绿的部分与之对应。
    在这里插入图片描述
    更新 x k x_k xk的步骤则可以简化成只更新 S k S_k Sk对应的部分,即绿色部分,一次简化计算。我们可以提取这些对应列与值,组成 A s A_s As。按照如下公式来更新 x k x_k xk:
    x k = min ⁡ x ∣ ∣ A s x − b ∣ ∣ 2 2 x_k=\min_x ||A_sx-b||_2^2 xk=xminAsxb22对上式求导得到 x k = ( A s T A s ) − 1 A s T b = A s + b x_k=(A_s^TA_s)^{-1}A_s^Tb=A_s^+b xk=(AsTAs)1AsTb=As+b
    在这里插入图片描述

  • 重复上述步骤如果最终误差( r k r_k rk)小于设定阈值,则停止。

3. 算法命名原因

每一轮的更新是为了让更新的误差 r k r_k rk与矩阵 A A A正交(Orthogonal),即满足 A s T ( A s x k − b ) = − A s T r k = 0 A_s^T(A_sx_k-b)=-A_s^Tr_k=0 AsT(Asxkb)=AsTrk=0


三、OMP算法变体

OMP算法后续发展了一些变体,在运算复杂度和准确度之间存在trade-off
在这里插入图片描述

1. Least-Squares OMP (LS-OMP)

OMP算法通过判断残差判断某一轮最优的 a i a_i ai,但这很有可能产生次优解。为了确保每一轮都可以选到最优解,LS-OMP舍弃残差,对逐个将每一列放入上一轮的 S k − 1 S_{k-1} Sk1中,并对比所有可能产生的矢量结果,最后进行选择,具体算法如下图所示。
LS-OMP的算法复杂度要高于OMP,但是效果更好。
在这里插入图片描述

2. Matching Pursuit (MP) 与 Weak MP

  • MP算法:
    为了简化OMP算法,MP算法对于第k次更新不是从零开始,而是利用第k-1次更新的结果。具体来说,由于已经得到了 x k − 1 = min ⁡ x k − 1 ∣ ∣ A s k − 1 x k − 1 − b ∣ ∣ 2 2 x_{k-1}=\min_{x_{k-1}} ||A_{s_{k-1}}x_{k-1}-b||_2^2 xk1=xk1minAsk1xk1b22在更新 x k x_k xk的时候可以将第一步修改为: x k = min ⁡ z ∣ ∣ A s k − 1 x k − 1 + a i 0 z − b ∣ ∣ 2 2 x_k=\min_z||A_{s_{k-1}}x_{k-1}+a_{i_0}z-b||_2^2 xk=zminAsk1xk1+ai0zb22可以看到,上述公式等号右侧的三项中,第一项减第三项正好是上一轮的误差,所以上述公式可以转化为 x k ( i 0 ) = min ⁡ z ∣ ∣ a i 0 z − r k − 1 ∣ ∣ 2 2 x_k(i_0)=\min_z||a_{i_0}z-r_{k-1}||_2^2 xk(i0)=zminai0zrk122该式可以通过求导求得闭式解。因此,MP将OMP算法的第4步修改为: x k = x k − 1 x_k=x_{k-1} xk=xk1 x k ( i 0 ) = x k ( i 0 ) + a i 0 T r k − 1 x_k(i_0)=x_k(i_0)+a_{i_0}^Tr_{k-1} xk(i0)=xk(i0)+ai0Trk1 MP算法很有可能重复选择同一列 a i a_i ai所以它的准确度要低于OMP
  • Weak MP算法:
    给定 ∣ a i T r k − 1 ∣ |a_i^Tr_{k-1}| aiTrk1的期望阈值( 0 − ∣ ∣ ∣ r k − 1 ∣ 2 0-|||r_{k-1}|_2 0rk12)超过这个阈值t倍则停止(根据E(i)>=0)。

3. 阈值算法(Thresholding)

在这里插入图片描述

四、结果对比

在这里插入图片描述

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 正交匹配追踪算法 (Orthogonal Matching Pursuit, 简称OMP)。是一种信号处理和机器学习中用于高维数据稀疏表示的算法。其基本思想是在原始高维数据中,选取尽量少的维度,通过线性组合来表示出所有的数据。可以应用于图像处理、信号处理、压缩感知等领域。 ### 回答2: Orthogonal matching pursuitOMP)是一种基于贪心算法的稀疏信号恢复方法,主要用于从部分观测信号中恢复原信号。它利用信号稀疏性假设和最小二乘原则,通过选择相互正交的原子逐步逼近原信号。该算法具有简单易懂,易于实现,且收敛速度快的特点,在计算机视觉、机器学习等领域得到广泛应用。 该算法的主要思想是:从一个较大的原子集中,选择与观测信号最相关的原子,使得观测信号能够最好地逼近原信号。在每次迭代中,首先计算残差,然后寻找与残差最相关的原子,再将其投影到残差上,重复此过程直到残差足够小或选取的原子个数达到预设值为止。因为原子是相互正交的,所以每一步选择的原子不会重复,这保证了算法的稀疏性。另外,通过对残差与选取原子的内积进行比较,算法可以自适应地选择原子,适用于各种类型的信号。 虽然OMP算法的时间复杂度为O(NK^2),其中N为信号维数,K为原子个数。但是,该算法可以通过简单的优化得到更优的时间复杂度,比如迭代式OMP,用于处理高维数据时的OMP-C块版本等。此外,算法还可以结合其他方法使用,比如基于二次规划的正则化方法,以更好地处理信号噪声和完整性问题。 与其他稀疏恢复算法相比,OMP算法具有以下优点:对于稀疏度较高的信号,性能相对较好;简单易懂,易于实现,收敛速度快。缺点是当信号稀疏度较低、噪声较大时,会出现误匹配或过拟合现象,需要加入其他算法进行处理。 ### 回答3: 正交匹配追踪,英文名为 Orthogonal Matching Pursuit (OMP),是一种稀疏表示技术,被广泛应用于信号处理、图像处理、机器学习、计算机视觉等领域。其基本思想是在高维数据中找到少数重要特征向量,通过迭代的方式找到这些向量,实现数据降维的目的。 OMP算法的核心是贪心策略,它通过选择当前最佳候选向量来逼近目标信号。具体来说,算法每次选取一个内积值最大的原子,并将其添加到估计信号中。然后,将这个向量从候选字典中删除,并根据估计信号和误差信号的内积进行更新,此过程被称为正交匹配。接着,将选取下一个内积最大的向量并重复此步骤,直到达到预设的稀疏度或精度要求。 由于OMP算法运行效率高、易于实现,并且能够快速准确地逼近信号,因此在信号重构、模式识别和机器学习中被广泛应用。例如,在图像压缩中,可以使用OMP算法将一个稀疏的图像表示为一组稀疏系数。在语音识别中,OMP算法可以识别出一个人的关键语音特征,并将其表示为一组稀疏向量。总之,正交匹配追踪算法为信号分析和模式识别提供了重要的工具和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值