深度學習與神經網路-壓縮感知(Compressive Sensing)學習(五)
有關壓縮感知,有兩個科普文章,講得很通俗易懂,可以很好地介紹了壓縮感知:
那什麼叫壓縮感知?為什麼它的出現吸引了那麼多的目光?
還記得我們在訊號與資訊處理有關課程裡面必講的一個知識嗎?它可謂是現代數字訊號處理系統理論建立的一個功臣之一。沒錯,就是能將物理世界和數字世界建立連線的取樣定理:奈奎斯特取樣定理(
而壓縮感知的出現,告訴我們:如果訊號在某一個正交空間具有稀疏性(即可壓縮性),就能以較低的頻率(遠低於奈奎斯特取樣頻率)取樣該訊號,並可能以高概率精確的重建該訊號。
在上面所說的一篇科普文章中提到:所謂壓縮感知,最核心的概念在於試圖從原理上降低對一個訊號進行測量的成本。比如說,一個訊號包含一千個資料,那麼按照傳統的訊號處理理論,至少需要做一千次測量才能完整的復原這個訊號。這就相當於是說,需要有一千個方程才能精確地解出一千個未知數來
在cvchina裡面有一篇很熱的文章《稀疏表達:向量、矩陣與張量》,呵呵,有點深,我看不懂,但裡面開篇的幾張影象吸引了我:
首先是影象恢復,由左側影象恢復出右側結果:
然後是類似的影象inpainting
然後是影象去模糊,左上為輸入模糊影象,右下為輸出清晰影象及估計的相機運動(其實是PSF),中間均為迭代過程:
再然後是物體檢測(自行車),左側輸入影象,中間為位置概率圖,右側為檢測結果
當然我個人還推薦Yi Ma的sparse face,這個在對抗噪聲的效果上很棒,比如下圖中左側的那張噪聲影象(你能辨認是哪位不?這方法可以!)
上面的結果都很amazing,但是怎麼實現的我就不知道了。原博主既然擺在那,就表明了它是稀疏表達的功勞了。
下面就針對自己的瞭解,具體總結下壓縮感知理論。由於自己也是這幾天看到那個《Real-Time Compressive Tracking》
其涉及到的理論就是壓縮感知(或者稀疏表達)。然後感覺不錯,瞭解瞭解(後面會對這個跟蹤演算法做介紹,具體見部落格更新)。所以接觸時間有限,理解未免出錯,望各位不吝指正。
簡單地說,壓縮感知理論指出:只要訊號是可壓縮的或在某個變換域是稀疏的,那麼就可以用一個與變換基不相關的觀測矩陣將變換所得高維訊號投影到一個低維空間上,然後通過求解一個優化問題就可以從這些少量的投影中以高概率重構出原訊號,可以證明這樣的投影包含了重構訊號的足夠資訊。
在該理論框架下,取樣速率不再取決於訊號的頻寬,而在很大程度上取決於兩個基本準則:稀疏性和非相關性,或者稀疏性和等距約束性。
壓縮感知理論主要包括三部分:
(1)訊號的稀疏表示;
(2)設計測量矩陣,要在降低維數的同時保證原始訊號x的資訊損失最小;
(3)設計訊號恢復演算法,利用M個觀測值無失真地恢復出長度為N的原始訊號。
理論依據:
(1)設長度為N的訊號X在某個正交基Ψ上是K-稀疏的(即含有k個非零值);
(2)如果能找到一個與Ψ不相關(不相干)的觀測基Φ;
(3)用觀測基Φ觀測原訊號得到長度M的一維測量值M個觀測值Y,K<M<<N;
(4)那麼就可以利用最優化方法從觀測值Y中高概率恢復X。
數學表達:
設x為長度N的一維訊號,稀疏度為k(即含有k個非零值),A為M×N的二維矩陣(M<N),y=Φx為長度M的一維測量值。壓縮感知問題就是已知測量值y和測量矩陣Φ的基礎上,求解欠定方程組y=Φx得到原訊號x。Φ的每一行可以看作是一個感測器(Sensor),它與訊號相乘,拾取(Acquisition)了訊號的一部分資訊。而這一部分資訊足以代表原訊號,並能找到一個演算法來高概率恢復原訊號。
一般的自然訊號x本身並不是稀疏的,需要在某種稀疏基上進行稀疏表示,x=Ψs,Ψ為稀疏基矩陣,s為稀疏係數(s只有K個是非零值(K<<N)。
壓縮感知方程為y=Φx=ΦΨs=Θs。
將原來的測量矩陣Φ變換為Θ=ΦΨ(稱之為感測矩陣),解出s的逼近值s’,則原訊號x’ = Ψs’。
1、訊號的稀疏表示
訊號的稀疏性簡單理解為訊號中非0元素數目較少,或者說大多數係數為0(或者絕對值較小)。
自然界存在的真實訊號一般不是絕對稀疏的,而是在某個變換域下近似稀疏,即為可壓縮訊號。或者說從理論上講任何訊號都具有可壓縮性,只要能找到其相應的稀疏表示空間,就可以有效地進行壓縮取樣。訊號的稀疏性或可壓縮性是壓縮感知的重要前提和理論基礎。
稀疏表示的意義:只有訊號是K稀疏的(且K<M<<N),才有可能在觀測M個觀測值時,從K個較大的係數重建原始長度為N的訊號。也就是當訊號有稀疏展開時,可以丟掉小系數而不會失真。
我們知道,長度為N的訊號X可以用一組基ΨT=[Ψ1,…, ΨM]的線性組合來表示:
x=Ψs,Ψ為稀疏基NxN矩陣,s為稀疏係數(N維向量),當訊號X在某個基Ψ上僅有 K<<N個非零係數或遠大於零的係數s時,稱Ψ為訊號X的稀疏基。我們需要做的就是合理地選擇稀疏基,使得訊號的稀疏係數個數儘可能少。
再囉嗦點的話:如果長度為N的訊號X,在變換域Φ中只有K個係數不為零(或者明顯大於其他係數),且K<<N,那麼可以認為訊號X在Φ域中是稀疏的並可稱為K-稀疏(不是嚴格的定義)。那麼在該域下,我們如果只保留這M個大系數,丟棄其他的係數,則可以減小儲存該訊號需要的空間,達到了壓縮(有失真壓縮)的目的。同時,以這M個係數可以重構原始訊號X,不過一般而言得到的是X的一個逼近。
我們應該熟悉JPEG跟JPEG2000的區別吧,JPEG的核心演算法是DCT,而後者是DWT,本質上,這兩種處理方法都是將訊號從一個域變換到另外一個域(把座標系進行旋轉,將訊號投影到不同的基上),從而獲得訊號的稀疏表示,即用最少的係數來表示訊號,不過DWT比DCT更加稀疏而已。訊號不同,對應最稀疏表達的基也會不同,比如,對於一維訊號可能小波基是最稀疏的,而對於影象而言,可能那些Curvelet和contourlet是最優的,對於有些訊號,也有可能需要將幾種基結合起來才是最優的。稀疏分解是找到訊號的最稀疏最有效的表達。
訊號在某種表示方式下的稀疏性,是壓縮感知應用的理論基礎,經典的稀疏化的方法有離散餘弦變換(DCT)、傅立葉變換(FFT)、離散小波變換(DWT)等。
最近幾年,對稀疏表示研究的另一個熱點是訊號在冗餘字典下的稀疏分解。 這是一種全新的訊號表示理論:用超完備的冗餘函式庫取代基函式,稱之為冗餘字典,字典中的元素被稱為原子。目前訊號在冗餘字典下的稀疏表示的研究集中在兩個方面:一是如何構造一個適合某一類訊號的冗餘字典,二是如何設計快速有效的稀疏分解演算法。目前常用的稀疏分解演算法大致可分為匹配追蹤(Matching Pursuit)和基追蹤(Basis Pursuit)兩大類。
2、訊號的觀測矩陣
觀測矩陣(也稱測量矩陣)MxN(M<<N)是用來對N維的原訊號進行觀測得到M維的觀測向量Y,然後可以利用最優化方法從觀測值Y中高概率重構X。也就是說原訊號X投影到這個觀測矩陣(觀測基)上得到新的訊號表示Y。
觀測矩陣的設計目的是如何取樣得到M個觀測值,並保證從中能重構出長度為N的訊號X或者稀疏基Ψ下等價的稀疏係數向量。
為了保證能夠從觀測值準確重構訊號,其需要滿足一定的限制:觀測基矩陣與稀疏基矩陣的乘積滿足RIP性質(有限等距性質)。這個性質保證了觀測矩陣不會把兩個不同的K稀疏訊號對映到同一個集合中(保證原空間到稀疏空間的一一對映關係),這就要求從觀測矩陣中抽取的每M個列向量構成的矩陣是非奇異的。
在CS編碼測量模型中並不是直接測量稀疏訊號X本身, 而是將訊號投影到一組測量矩陣Φ上而得到測量值y。即,用一個與變換矩陣不相關的MxN(M<<N)測量矩陣Φ對訊號x進行線性投影,得到線性測量值y: y=Φx ;
測量值y是一個M維向量,這樣使測量物件從N維降為M維。測量矩陣的設計要求訊號從x轉換為y的過程中,所測量到的K個測量值不會破壞原始訊號的資訊,以保證訊號可以精確重構。
由於訊號x是是可稀疏表示的: x=Ψs,上式可以表示為下式:
y=Φx=ΦΨs=Θs
其中Φ是一個MxN矩陣。上式中,方程的個數遠小於未知數的個數,方程無確定解,無法重構訊號。但是,由於訊號是K稀疏,若上式中的Φ滿足有限等距性質(Restricted Isometry Property,簡稱RIP),則K個係數就能夠從M個測量值準確重構(得到一個最優解)。RIP性質的等價條件是測量矩陣Φ和稀疏基Ψ不相關。
如果稀疏基和觀測基不相關,則很大程度上保證了RIP性。CandeS和Tao等證明:獨立同分布的高斯隨機測量矩陣可以成為普適的壓縮感知測量矩陣。則一般用隨機高斯矩陣作為觀測矩陣。目前常用的測量矩陣還有隨機貝努利矩陣、部分正交矩陣、託普利茲和迴圈矩陣和稀疏隨機矩陣等,這裡不一一列舉了。
3、訊號的重構演算法
當矩陣Φ滿足RIP準則時。壓縮感知理論能夠通過對上式的逆問題先求解稀疏係數s,然後將稀疏度為K的訊號x從M維的測量投影值y中正確地恢復出來。解碼的最直接方法是通過l0範數(0-範數,也就是向量yˆ中非零元素的個數)下求解的最優化問題:
從而得到稀疏係數s的估計s’。則原訊號x’ = Ψs’。由於上式的求解是個NP難問題(在多項式時間內難以求解,甚至無法驗證解的可靠性)。L1最小范數下在一定條件下和L0最小范數具有等價性,可得到相同的解。那麼上式轉化為L1最小范數下的最優化問題:
L1範數最小化是通過用L1範數來近似0範數,取1而不取1/2,2/3或者其他值,是因為1範數最小化是凸優化問題,可以將求解過程轉化成有一個線性規劃問題。L1最小范數下最優化問題又稱為基追蹤(BP),其常用實現演算法有:內點法和梯度投影法。內點法速度慢,但得到的結果十分準確:而梯度投影法速度快,但沒有內點法得到的結果準確 。
目前,壓縮感知的重構演算法主要分為兩大類:
(1)貪婪演算法,它是通過選擇合適的原子並經過一系列的逐步遞增的方法實現訊號向量的逼近,此類演算法主要包括匹配跟蹤演算法、正交匹配追蹤演算法、補空間匹配追蹤演算法等。
(2)凸優化演算法,它是把0範數放寬到1範數通過線性規劃求解的,此類演算法主要包括梯度投影法、基追蹤法、最小角度迴歸法等。
凸優化演算法比貪婪演算法所求的解更加精確,但是需要更高的計算複雜度。
從數學上來說,CS就是在一定的條件下求解欠定(不適定)方程,條件包括x要是稀疏的,測量矩陣要滿足RIP條件,那麼欠定(不適定)方程就會以很大的概率有唯一解。
轉載https://blog.csdn.net/zouxy09/article/details/8118329