【2】施密特(Schimidt)正交化與正交匹配追蹤

轉載自:http://blog.csdn.net/jbb0523/article/details/45100351

        文獻[1]中給出了施密特(Schimidt)正交化的過程:


上面的的[x,y]表示向量內積,[x,y]=xTy=yTx=[x,y]。施密特正交化公式中的br實際上可寫爲:


分子之所以可以這麼變化是由於[x,y]實際上爲一個數,因此[x,y]x=x[x,y]= xxTy

        上一篇《稀疏表示與匹配追蹤》中詳細的解釋了匹配追蹤(Matching Pursuit,MP)的流程,在最後給出了正交匹配追蹤(Orthogonal Matching Pursuit,OMP)的流程,並指出OMP與MP的不同根本在於殘差更新過程:OMP減去的Pem是在所有被選擇過的原子組成的矩陣φt所張成空間上的正交投影,而MP減去的Pem是在本次被選擇的原子φp所張成空間上的正交投影。正交投影及正交投影變換矩陣的概念可以參見《壓縮感知中的數學知識:投影矩陣(projectionmatrix)》。

        首先給出一個結論:

        設OMP共從冗餘字典中選擇了r個原子,分別是a1a2,……,ar,根據正交匹配追蹤的流程可以知道待分解信號x最後剩餘的殘差eromp

         (式1)

        該殘差也可以表示爲

         (式2)

其中矩陣A爲選擇的r個原子組成的矩陣,e(r-1)omp爲選擇(r-1)個原子時的殘差。

        將選擇的r個原子a1a2,……,ar進行施密特正交化:


則殘差eromp還可以寫爲

         (式3)

(式1)一般出現在稀疏分解算法中,(式2)一般出現在重構算法中,(式3)是自己琢磨出來的(受到沙威的文檔中提到的施密特正交化的啓發,但沙威只限於向量情況下,詳情可參見[3],此處相當於一個推廣)。

        而實際上(式1)、(式2)和(式3)三種正交匹配追蹤算法的殘差計算方法是等價的,純數學證明比較複雜,這裏給一個MATLAB程序,可以驗證三者的等價性:

[plain] view plain copy
  1. %% 驗證OMP殘差求解過程與Schmidt正交化的關係  
  2. M = 4;N = 10;  
  3. Phi = randn(M,N);  
  4. for nn = 1:N  
  5.     Phi(:,nn) = Phi(:,nn)/norm(Phi(:,nn));  
  6. end  
  7. b = randn(M,1);  
  8. e0 = b;%初始化殘差爲待稀疏信號b  
  9. %選第1列  
  10. c1 = Phi'*e0;%求出矩陣Phi每列與b的內積  
  11. [val1,pos1]=max(abs(c1));%找到內積中最大的列及其內積值  
  12. phit = [Phi(:,pos1)];%由所有選出的列組合的矩陣  
  13. Pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣  
  14. e1ompe = e0 - Pphi*e0;%OMP用上一次殘差減去殘差在phit列空間的正交投影  
  15. e1ompb = b - Pphi*b;%OMP用待稀疏信號b減去b在phit列空間的正交投影  
  16. x = Phi(:,pos1);%Schimidt正交化第一個向量  
  17. Px = x*(x'*x)^(-1)*x';  
  18. %實際上是b - Px*b  
  19. e1ompsmt = e0 - Px*b;  
  20. e1 = e1ompe;  
  21. norm(e1ompe-e1ompb)+norm(e1ompsmt-e1ompb)  
  22. %選第2列  
  23. c2 = Phi'*e1;%求出矩陣Phi每列與e1的內積  
  24. [val2,pos2]=max(abs(c2));%找到內積中最大的列及其內積值  
  25. phit = [Phi(:,pos1) Phi(:,pos2)];%由所有選出的列組合的矩陣  
  26. Pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣  
  27. e2ompe = e1 - Pphi*e1;%OMP用上一次殘差減去殘差在phit列空間的正交投影  
  28. e2ompb = b - Pphi*b;%OMP用待稀疏信號b減去b在phit列空間的正交投影  
  29. y = Phi(:,pos2) - Px*Phi(:,pos2);%Schimidt正交化第二個向量  
  30. Py = y*(y'*y)^(-1)*y';  
  31. %實際上是b - Px*b - Py*b  
  32. e2ompsmt = e1 - Py*b;%上一次殘差減去b在第2列正交化所得z上的投影  
  33. e2 = e2ompe;  
  34. norm(e2ompe-e2ompb)+norm(e2ompsmt-e2ompb)  
  35. %選第3列  
  36. c3 = Phi'*e2;%求出矩陣Phi每列與e2的內積  
  37. [val3,pos3]=max(abs(c3));%找到內積中最大的列及其內積值  
  38. phit = [Phi(:,pos1) Phi(:,pos2) Phi(:,pos3)];%由所有選出的列組合的矩陣  
  39. Pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣  
  40. e3ompe = e2 - Pphi*e2;%OMP用上一次殘差減去殘差在phit列空間的正交投影  
  41. e3ompb = b - Pphi*b;%OMP用待稀疏信號b減去b在phit列空間的正交投影  
  42. z = Phi(:,pos3) - Px*Phi(:,pos3) - Py*Phi(:,pos3);%Schimidt正交化第三個向量  
  43. Pz = z*(z'*z)^(-1)*z';  
  44. %實際上是b - Px*b - Py*b - Pz*b  
  45. e3ompsmt = e2 - Pz*b;%上一次殘差減去b在第3列正交化所得z上的投影  
  46. e3 = e3ompe;  
  47. norm(e3ompe-e3ompb)+norm(e3ompsmt-e3ompb)  

程序最後一行的輸出結果爲零,說明三個殘差是相等的。

        這裏可以看出OMP與Schimidt正交化的關係:

        OMP分解過程,實際上是將所選原子依次進行Schimidt正交化,然後將待分解信號減去在正交化後的原子上各自的分量即可得殘差。其實(式3)求殘差的過程也是在進行施密特正交化

        有個關鍵問題還是要說的,分解後在所選擇各原子上的係數是多少呢?答案其實也很簡單,各個係數是(ATA)-1ATx,即最小二乘解,這個解是一個列向量,每一個元素分別是組成矩陣A的各原子的線性組合係數,這個在下一篇《正交匹配追蹤(OMP)在稀疏分解與壓縮感知重構中的異同》也會明確再次說明。

        同理,若設MP共從冗餘字典中選擇了r個原子,分別是a1a2,……,ar,根據匹配追蹤的流程可以知道待分解信號x每次迭代後剩餘的殘差ermp

比較式(3)的第2個等號表示的eromp與此處的ermp也可以體會出OMP與MP的區別吧。

【參考文獻】

【1】同濟大學數學系. 線性代數(第五版)[M].高等教育出版社,2007:114.

【2】Joel A. Tropp and AnnaC. Gilbert . Signal Recovery From Random Measurements Via Orthogonal MatchingPursuit[J]. IEEE Transactions on Information Theory, VOL. 53, NO. 12, DECEMBER2007.

【3】沙威. “壓縮傳感”引論.http://www.eee.hku.hk/~wsha/Freecode/Files/Compressive_Sensing.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章