轉載自: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個原子,分別是a1,a2,……,ar,根據正交匹配追蹤的流程可以知道待分解信號x最後剩餘的殘差eromp爲
(式1)
該殘差也可以表示爲
(式2)
其中矩陣A爲選擇的r個原子組成的矩陣,e(r-1)omp爲選擇(r-1)個原子時的殘差。
將選擇的r個原子a1,a2,……,ar進行施密特正交化:
則殘差eromp還可以寫爲
(式3)
(式1)一般出現在稀疏分解算法中,(式2)一般出現在重構算法中,(式3)是自己琢磨出來的(受到沙威的文檔中提到的施密特正交化的啓發,但沙威只限於向量情況下,詳情可參見[3],此處相當於一個推廣)。
而實際上(式1)、(式2)和(式3)三種正交匹配追蹤算法的殘差計算方法是等價的,純數學證明比較複雜,這裏給一個MATLAB程序,可以驗證三者的等價性:
- %% 驗證OMP殘差求解過程與Schmidt正交化的關係
- M = 4;N = 10;
- Phi = randn(M,N);
- for nn = 1:N
- Phi(:,nn) = Phi(:,nn)/norm(Phi(:,nn));
- end
- b = randn(M,1);
- e0 = b;%初始化殘差爲待稀疏信號b
- %選第1列
- c1 = Phi'*e0;%求出矩陣Phi每列與b的內積
- [val1,pos1]=max(abs(c1));%找到內積中最大的列及其內積值
- phit = [Phi(:,pos1)];%由所有選出的列組合的矩陣
- Pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣
- e1ompe = e0 - Pphi*e0;%OMP用上一次殘差減去殘差在phit列空間的正交投影
- e1ompb = b - Pphi*b;%OMP用待稀疏信號b減去b在phit列空間的正交投影
- x = Phi(:,pos1);%Schimidt正交化第一個向量
- Px = x*(x'*x)^(-1)*x';
- %實際上是b - Px*b
- e1ompsmt = e0 - Px*b;
- e1 = e1ompe;
- norm(e1ompe-e1ompb)+norm(e1ompsmt-e1ompb)
- %選第2列
- c2 = Phi'*e1;%求出矩陣Phi每列與e1的內積
- [val2,pos2]=max(abs(c2));%找到內積中最大的列及其內積值
- phit = [Phi(:,pos1) Phi(:,pos2)];%由所有選出的列組合的矩陣
- Pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣
- e2ompe = e1 - Pphi*e1;%OMP用上一次殘差減去殘差在phit列空間的正交投影
- e2ompb = b - Pphi*b;%OMP用待稀疏信號b減去b在phit列空間的正交投影
- y = Phi(:,pos2) - Px*Phi(:,pos2);%Schimidt正交化第二個向量
- Py = y*(y'*y)^(-1)*y';
- %實際上是b - Px*b - Py*b
- e2ompsmt = e1 - Py*b;%上一次殘差減去b在第2列正交化所得z上的投影
- e2 = e2ompe;
- norm(e2ompe-e2ompb)+norm(e2ompsmt-e2ompb)
- %選第3列
- c3 = Phi'*e2;%求出矩陣Phi每列與e2的內積
- [val3,pos3]=max(abs(c3));%找到內積中最大的列及其內積值
- phit = [Phi(:,pos1) Phi(:,pos2) Phi(:,pos3)];%由所有選出的列組合的矩陣
- Pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣
- e3ompe = e2 - Pphi*e2;%OMP用上一次殘差減去殘差在phit列空間的正交投影
- e3ompb = b - Pphi*b;%OMP用待稀疏信號b減去b在phit列空間的正交投影
- z = Phi(:,pos3) - Px*Phi(:,pos3) - Py*Phi(:,pos3);%Schimidt正交化第三個向量
- Pz = z*(z'*z)^(-1)*z';
- %實際上是b - Px*b - Py*b - Pz*b
- e3ompsmt = e2 - Pz*b;%上一次殘差減去b在第3列正交化所得z上的投影
- e3 = e3ompe;
- norm(e3ompe-e3ompb)+norm(e3ompsmt-e3ompb)
程序最後一行的輸出結果爲零,說明三個殘差是相等的。
這裏可以看出OMP與Schimidt正交化的關係:
OMP分解過程,實際上是將所選原子依次進行Schimidt正交化,然後將待分解信號減去在正交化後的原子上各自的分量即可得殘差。其實(式3)求殘差的過程也是在進行施密特正交化。
有個關鍵問題還是要說的,分解後在所選擇各原子上的係數是多少呢?答案其實也很簡單,各個係數是(ATA)-1ATx,即最小二乘解,這個解是一個列向量,每一個元素分別是組成矩陣A的各原子的線性組合係數,這個在下一篇《正交匹配追蹤(OMP)在稀疏分解與壓縮感知重構中的異同》也會明確再次說明。
同理,若設MP共從冗餘字典中選擇了r個原子,分別是a1,a2,……,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