匹配追蹤MP和正交匹配追蹤OMP算法
http://blog.csdn.net/wwf_lightning/article/details/70142985
http://blog.csdn.net/scucj/article/details/7467955
http://blog.csdn.net/jbb0523/article/details/45130793
MP:matching pursuit匹配追蹤
OMP:正交匹配追蹤
主要介紹MP與OMP算法的思想與流程,解釋爲什麼需要引入正交?
從數學模型來入手分析這個問題:
1)稀疏分解要解決的問題是在冗餘字典A中選出k列,用這k列的線性組合近似表達待稀疏分解信號y,可以用表示爲y=Aθ,求θ。
2)壓縮感知重構要解決的問題是事先存在一個θ和矩陣A,然後得到y=Aθ(壓縮觀測),現在是在已知y和A的情況下要重構θ。
看到了沒?實際上它們要解決的問題都是對已知y和A的情況下求y=Aθ中的θ。
上面各式中,A爲M×N矩陣(M>>N,稀疏分解中爲冗餘字典,壓縮感知中爲傳感矩陣A=ΦΨ,即測量矩陣Φ乘以稀疏矩陣Ψ),y爲M×1的列向量(稀疏分解中爲待稀疏分解信號,壓縮感知中爲觀測向量),θ爲N×1的列向量(稀疏分解中爲待求分解係數,壓縮感知中爲信號x的在變換域Ψ的係數,x=Ψθ)。
所不同的是,在稀疏分解中θ是事先不存在的,我們要去求一個θ用Aθ近似表示y,求出的θ並不能說對與錯;在壓縮感知中,θ是事先存在的,只是現在不知道,我們要通過某種方法如OMP去把θ求出來,求出的θ應該等於原先的θ的,然後可求原信號x=Ψθ。
其實MP也好,改進後的OMP也罷,最初提出都是面向稀疏分解的,當時還沒有壓縮感知的概念,只是後來壓縮感知提出後將其引入到了壓縮感知重構中,因爲前面也說了,其實他們的本質是一樣的,都是已知y和A的情況下求y=Aθ中的θ。
1.冗餘字典與稀疏表示
作爲對信號進行稀疏分解的方法之一,將信號在完備字典庫上進行分解。即在字典中找到一組基來表示信號,而用一組特定基表達一個信號其實就是找到相應的一組展開係數。一組基表達信號的能力取決於信號的特性是否與基向量的特性相吻合。例如,光滑連續信號可以被傅里葉基稀疏的表達,但脈衝信號不行。再如,帶有孤立不連續點的平滑信號可用小波基稀疏表達,但小波基在表達傅里葉頻譜中有窄帶高頻支撐的信號時卻是無效的。
現實世界中的信號經常包含有用單一基所不能表達的特徵。對於這些信號,你或許希望可以選擇來自不同基的向量(如用小波基和傅里葉基來聯合表達一個信號)。因爲你想保證你可以表達一個信號空間的所有信號向量,所以由所有可選向量組成的字典應該能夠張成這個信號空間。然而由於這組字典中的向量來自不同的基,它們可能不是線性獨立的,會造成用這組字典做信號表達時係數不唯一。然而如果創建一組冗餘字典,你就可以把你的信號展開在一組可以適應各種時頻或時間-尺度特性的向量上。你可以自由的創建包含多個基的字典。例如,你可以構造一組表達平方可積空間的基,這組基包含小波包基和局部餘弦基。這樣構造的字典可以極大地增加你稀疏表達各種特性信號的能力。
2.字典非線性近似
定義表達你的信號空間的歸一化基本模塊作爲字典。這些歸一化向量叫做原子。如果字典的原子張成了整個信號空間,那麼字典就是完全的。如果有原子之間線性相關,那麼字典就是冗餘的。在大多數匹配追蹤的應用中,字典都是完全且冗餘的。
假設{φk}表示字典的原子。假設字典是完全且冗餘的。使用字典的線性組合表達信號將是不唯一的。
一個重要的問題是是否存在一種最好的表達方式,一種直觀的最好方式是選擇φk使得近似信號和原始信號有最大的內積,如最好的φk滿足
即對於正交原子,爲投影到由φk張成的子空間上的幅值。
匹配追蹤的中心問題是你如何選擇信號在字典中最優的M個展開項。
3.MP算法
》基本思想
MP算法的基本思想:從字典矩陣D(也稱爲過完備原子庫中),選擇一個與信號 y 最匹配的原子(也就是某列),構建一個稀疏逼近,並求出信號殘差,然後繼續選擇與信號殘差最匹配的原子,反覆迭代,信號y可以由這些原子的線性和,再加上最後的殘差值來表示。很顯然,如果殘差值在可以忽略的範圍內,則信號y就是這些原子的線性組合。
》算法流程
用Φ={φk}表示一個原子歸一化的字典,x表示信號。
(1)首先初始化殘差e0=x;
(2)匹配追蹤的第一步是從字典中找到與e0的內積絕對值最大的原子,表示爲φ1;
(3)通過從e0減去其在φ1所張成空間上的正交投影得到殘差e1;
其中<e0, φ1>表示e0與φ1的內積。由於已經說明Φ爲原子歸一化的字典,即φ1爲單位列向量,所以e0在φ1所張成空間上的正交投影可以表示爲<e0, φ1>φ1 (由於爲一個向量,所以e0在φ1所張成空間上的正交投影即爲e0在φ1方向上的正交投影分量),若φ1不是單位列向量,則e0在φ1方向上的正交投影分量爲<e0, φ1>φ1/(φ1Tφ1),其中上標T表示轉置。
(4)對殘差迭代執行(2)、(3)步;
其中φm+1是從字典中找到與em的內積絕對值最大的原子。
(5)直到達到某個指定的停止準則後停止算法。
這裏要從數學上說明一點:由於內積<em, φm+1>實際上爲一個數(標量),所以
(分母中乘上φTm+1φm+1 ,一開始沒想明白,注意這裏的φm+1 是單位向量,則轉置乘上自己是一個數值,也就是1)
若令P=φm+1 (φTm+1φm+1)-1φTm+1 ,(這裏的P是用每次選擇出的與殘差內積最大的原子來計算的,而下面OMP中的P是用每次選擇過的原子組成的矩陣來計算的!!!)則第(4)步的迭代公式爲
》提出一個問題
在描述MP算法時,有類似這樣的話:在匹配追蹤(MP)中,字典原子不是相互正交的向量。因此上面減去投影計算殘差的過程中會再次引入與前面使用的原子不正交的成分。或者是:信號(殘值)在已選擇的原子進行垂直投影是非正交性的,這會使得每次迭代的結果並不是最優的而是次最優的,收斂需要很多次迭代。
那麼如何理解什麼是最優的,什麼是次最優的?爲什麼不是正交的呢?
首先回顧下正交投影,一個向量(b)在另一個向量(a)上的投影:
p稱爲b在a上的正交投影,正交投影就是法線垂直於a的投影(不知道這種說法對不對,有待考究)實際上就是尋找在a上離b最近的點。如果我們把p看作是a的估計值,那麼我們定義e = b - p,稱e爲誤差(error)。 現在,我們的任務是找到這樣的p,我們可以規定p = xa(x是某個數),那麼e = b - xa,因爲e與p也就是a垂直,所以有aT(b - xa) = 0,展開化簡得到: 將x代入到p中,得到:我們發現,如果改變b,那麼p相對應改變,然而改變a,p無變化。 有了上面的背景知識,我們可以正式進入主題了,投影矩陣(projection matrix): p = Pb,顯然這裏有: 這個投影到底有什麼用呢,從線性代數的角度來說,Ax = b並不一定總有解,這在實際情況中會經常遇到(m > n)。所以我們就把b投影到向量p上,求解Ax = p。 接下來,我們可以考慮更高維度的投影,三維空間的投影是怎麼樣的呢,我們可以想象一個三維空間內的向量在該空間內的一個平面上的投影: 我們假設這個平面的基(basis)是a1, a2.那麼矩陣A = [a1 a2]的列空間就是該平面。假設一個不在該平面上的向量b在該平面上的投影是p,那麼我們就有下面這個表達式p = x1a1+ x2a2= Ax,我們的任務就是找到這樣的x。這裏有一個關鍵的地方:e = b - Ax與該平面垂直,所以a1T(b - Ax) = 0且a2T(b- Ax) = 0.用矩陣的形式表達就是:AT(b - Ax) = 0. |
文獻[3]中與文獻[1]中所表示的算法流程符號略有不同,但意思是一樣的,由於要借鑑這篇文章來解釋上述提出的問題,所以先簡要介紹一下該文獻中所說明的MP的算法流程。
假定被表示的信號爲y,其長度爲n。假定H表示Hilbert空間(希爾伯特空間即完備的內積空間),在這個空間H裏,由一組向量{x1,x2,...xn}成字典矩陣D,其中每個向量可以稱爲原子(atom),其長度與被表示信號 y 的長度n相同,而且這些向量已歸一化處理,即 ‖xi‖=1,也就是單位向量長度爲1。
(1)計算信號y與字典矩陣中每列(原子)的內積,選擇絕對值最大的一個原子,它就是與信號y在本次迭代運算中最匹配的。用專業術語來描述:令信號y∈H,從字典矩陣中選擇一個最爲匹配的原子,滿足,(sup爲上確界)r0表示一個字典矩陣的列索引。這樣,信號y就被分解爲在最匹配原子x的垂直投影分量和殘值兩部分,即:。 》之前想不明白爲什麼還要乘上xr0,聯繫一下傅里葉係數和傅里葉級數,此處y和xr0的內積是係數,而y是要由一組基的線性組合來表示的。
(2)對殘值R1f進行步驟[1]同樣的分解,那麼第K步可以得到:, 其中滿足。(在別的參考文獻中有形如這樣的形式,之前沒有搞明白,其實也就是移項了而已)可見,經過K步分解後,信號y被分解爲:, 其中。
如果 是最優的k項近似值,當且僅當。由於MP僅能保證,所以一般情況下是次優的。這是什麼意思呢?是k個項的線性表示,這個組合的值作爲近似值,只有在第k個殘差和正交,纔是最優的。如果第k個殘值與正交,意味這個殘值與fk的任意一項都線性無關,那麼第k個殘值在後面的分解過程中,不可能出現fk中已經出現的項,這纔是最優的。而一般情況下,不能滿足這個條件,MP一般只能滿足第k個殘差和xk正交,這也就是前面爲什麼提到“信號(殘值)在已選擇的原子進行垂直投影是非正交性的”的原因。如果第k個殘差和fk不正交,那麼後面的迭代還會出現fk中已經出現的項,很顯然fk就不是最優的,這也就是爲什麼說MP收斂就需要更多次迭代的原因。不是說MP一定得到不到最優解,而且其前面描述的特性導致一般得到不到最優解而是次優解。那麼,有沒有辦法讓第k個殘差與正交,方法是有的,這就是下面要談到的OMP算法。 簡要概括就是我們是在找字典中的一組基進行線性組合後來作爲f的最接近表示,每次的殘差也就是Rkf會和f在當前所選擇的基xk上的正交投影垂直,上式中的 fk是多個選擇後的基的線性組合,不和殘差項垂直。
4.OMP算法
》算法流程
在正交匹配追蹤OMP中,殘差是總與已經選擇過的原子正交的。這意味着一個原子不會被選擇兩次,結果會在有限的幾步收斂。OMP的算法如下
(1)用x表示你的信號,初始化殘差e0=x;
(2)選擇與e0內積絕對值最大的原子,表示爲φ1;
(3)將選擇的原子作爲列組成矩陣Φt,定義Φt列空間的正交投影算子爲
通過從e0減去其在Φt所張成空間上的正交投影得到殘差e1;
(4)對殘差迭代執行(2)、(3)步;
其中I爲單位陣。需要注意的是在迭代過程中Φt爲所有被選擇過的原子組成的矩陣,因此每次都是不同的,所以由它生成的正交投影算子矩陣P每次都是不同的。
(5)直到達到某個指定的停止準則後停止算法。
OMP減去的Pem是em在所有被選擇過的原子組成的矩陣Φt所張成空間上的正交投影,而MP減去的Pem是em在本次被選擇的原子φm所張成空間上的正交投影。
》提出一個問題
OMP是怎麼實現與所有選擇過的原子正交的?
→施密特正交化
在現代數學引論中有學習過,但是和線性代數中的表達式不太一樣,對兩者進行了比較,發現其實本質是一樣的。所選擇的一組基是線性無關的,我們可以通過施密特正交化來將這組選擇的基轉換爲正交基。
那麼具體在OMP算法中是如何體現的?
文獻[4]中給出了施密特(Schimidt)正交化的過程:
上面的的[x,y]表示向量內積,[x,y]=xTy=yTx=[x,y]。施密特正交化公式中的br實際上可寫爲:
分子之所以可以這麼變化是由於[x,y]實際上爲一個數,因此[x,y]x=x[x,y]= xxTy。
首先給出一個結論:
設OMP共從冗餘字典中選擇了r個原子,分別是a1,a2,……,ar,根據正交匹配追蹤的流程可以知道待分解信號x最後剩餘的殘差eromp爲
(式1) 該殘差也可以表示爲
(式2)
其中矩陣A爲選擇的r個原子組成的矩陣,e(r-1)omp爲選擇(r-1)個原子時的殘差。
將選擇的r個原子a1,a2,……,ar進行施密特正交化:
(式3) (式1)一般出現在稀疏分解算法中,(式2)一般出現在重構算法中,(式3)是自己琢磨出來的(受到沙威的文檔中提到的施密特正交化的啓發,但沙威只限於向量情況下,詳情可參見[6],此處相當於一個推廣) OMP分解過程,實際上是將所選原子依次進行Schimidt正交化,然後將待分解信號減去在正交化後的原子上各自的分量即可得殘差。其實(式3)求殘差的過程也是在進行施密特正交化。
有個關鍵問題還是要說的,分解後在所選擇各原子上的係數是多少呢?答案其實也很簡單,各個係數是(ATA)-1ATx,即最小二乘解,這個解是一個列向量,每一個元素分別是組成矩陣A的各原子的線性組合係數,這個在下一篇《正交匹配追蹤(OMP)在稀疏分解與壓縮感知重構中的異同》也會明確再次說明。
同理,若設MP共從冗餘字典中選擇了r個原子,分別是a1,a2,……,ar,根據匹配追蹤的流程可以知道待分解信號x每次迭代後剩餘的殘差ermp爲
·比較式(3)的第2個等號表示的eromp與此處的ermp也可以體會出OMP與MP的區別吧。
參考文獻:
[4] 同濟大學數學系. 線性代數(第五版)[M].高等教育出版社,2007:114.
[6] 沙威. “壓縮傳感”引論.http://www.eee.hku.hk/~wsha/Freecode/Files/Compressive_Sensing.pdf