稀疏表示求解: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} ai

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值