MP演算法與OMP演算法

2021-06-25 17:38:23 字數 2006 閱讀 9579

稀疏編碼的一般最優化公式為:

其中的零範數為非凸優化。那麼如何解這麼乙個非凸優化問題呢?其中乙個常用的解法就是mp演算法。

mp演算法是一種貪心演算法(greedy),每次迭代選取與當前樣本殘差最接近的原子,直至殘差滿足一定條件。

首先解決兩個問題,怎麼定義「最接近原子」,怎麼計算殘差?

選擇最接近殘差的原子:mp裡定義用向量內積原子與殘差的距離,我們用r表示殘差,di表示原子,則:

max[dist(r,di)]=max;

殘差更新:r=r-i;繼續選擇下乙個,直至收斂;

需要注意的是,mp演算法中要求字典原子||di||=1,上面的公式才成立。

我們用二維空間上的向量來表示,用如下的圖來表述上面的過程:

上圖中d1,d2,d3表示歸一化的原子,紅色向量r表示當前殘差;

進過內積計算,最大,於是r分解為d3方向以及垂直於d3方向的兩個向量(d3及r-d3),把d3方向的分量(d3)加入到已經求得的重構項中,那麼綠色向量(r-d3)變為新的殘差。

再一輪迭代得到如下:

r往d1方向投影分解,綠色向量成為新的殘差。

從上面的向量圖我們可以清楚地看出,k+1的殘差rk+1是k步殘差rk的分量。根據直角三角形斜邊大於直角邊,|rk+1|<=|rk|,則演算法收斂。

1.上面也講過,字典的原子是歸一化的,也就是||di||=1,因為我們選取max時,如果di長度不統一,不能得出最好的投影。

2.如果我們的字典只有兩個向量d1,d2,那麼mp演算法會在這兩個向量間交叉迭代投影,也就是f=a1d1+a2d2+a3d1+a4d2+…..;也就是之前投影過的原子方向,之後還有可能投影。換句話說,mp的方向選擇不是最優的,是次優的。

如下圖:

這也是其改進版本omp要改進的地方。

也就是正交的mp演算法。

mp演算法的次最優性**其殘差只與當前投影方向垂直,這樣在接下來的投影中,很有可能會再次投影到原來的方向。

於是,在投影時,如果我們使得殘差rk+1與x1-xk+1的所有向量垂直,則可以克服這個問題,如下:

假設我們已經得到了第k步的最優解:

我們要繼續更新到第k+1步,目標是得到:

需要注意的是,我們下一步更新時,之前原子的係數 也要更新,否則不能滿足約束。

於是我們需要求得如何更新之前原子係數 ,以及如何求得下乙個投影方向 。

同樣根據勾股定理,得到如下:

於是演算法收斂。

最後,貼乙個sparse求解的工具包,裡面包含了mp,omp演算法的**:

參考文獻:

壓縮感知OMP演算法 OMP演算法的Matlab版本

omp演算法 omp的函式 s 測量 t 觀測矩陣 n 向量大小 function hat y omp fun s,t,k n size t,2 size size t 觀測矩陣大小 m size 1 測量 hat y zeros 1,n 待重構的譜域 變換域 向量 aug t 增量矩陣 初始值為空...

OMP演算法筆記

1 數理知識基礎 投影矩陣 詳見 原文 結論假設 某空間中線性無關的向量組成的矩陣為a,則a的投影矩陣為 則,向量x在空間中的投影為 px px可以看做x在空間a上的投影係數,所以在omp中,將px視為稀疏表示的係數。通過與最小二乘的比較,發現,px與最小二乘解一致,此間聯絡,值得挖掘 2 omp演...

OMP演算法學習筆記

參考文獻 介紹 omp演算法用於訊號恢復的稀疏近似,假設s rd的稀疏度為 k 是n 個測量向量,rn d 是乙個測量矩陣,測量值v s,也就是說 rn d 是字典矩陣的 m 個列向量的線性組合。演算法的思想是對於訊號s rd,我們要確定 rn d 的哪幾列參與到了 v 的測量中來,以貪婪迭代的方式...