稀疏表示入門


1.稀疏學習學什么

稀疏學習的任務主要是有稀疏編碼、字典學習。

關於稀疏信號的定義,這里給出4種形式:嚴格k稀疏信號,可壓縮信號、稀疏基下的稀疏信號、稀疏基下的可壓縮信號

(1)嚴格k稀疏信號:考慮一個有限長信號x屬於Rn,如果x至多有k個非零元素,即||x||0≤k,則稱信號x為嚴格k稀疏信號,

(2)可壓縮信號:如果信號可以用一個k稀疏向量來近似表示,則稱這樣的信號為可壓縮信號。

(3)稀疏基下的稀疏信號:大多數的情況下,信號本身不是稀疏的,但是在某些合適的基或變換下稀疏。

(4)稀疏基下的可壓縮信號:給定值k,信號x的最佳近似k項元素的線性組合,稱為x的最佳k稀疏近似。


字典的概念:字典A來自信號空間的元素集,其線性組合可以表示或近似表示信號。在我們經常關注的稀疏學習任務中,往往要求字典是一個扁矩陣,也稱為過完備字典。


2.稀疏編碼

稀疏編碼的概念來自於神經生物學。生物學家提出,哺乳類動物在長期的進化中,生成了能夠快速,准確,低代價地表示自然圖像的視覺神經方面的能力。我們直觀地可以想象,我們的眼睛每看到的一副畫面都是上億像素的,而每一副圖像我們都只用很少的代價重建與存儲。我們把它叫做稀疏編碼,即Sparse Coding.

稀疏編碼的目的是在大量的數據集中,選取很小部分作為元素來重建新的數據。

稀疏編碼難點之一是其最優化目標函數的求解。

哺乳動物初級視覺皮層簡單細胞的感受野的三個性質:1.空間局部化、方向性和帶通特性。

X為一個n為特征向量,可以是一個小波信號,可以是一副圖片等。

D為標准化的基礎矩陣,由組成元素的基本原子構成,也稱為字典。在信號中可以是不同頻率的波形,在圖像中可以是構成圖像的基本邊,角。

X可以由D中和少量原子線性組合而成,及其表示系數為稀疏。如下:

數學模型

引出稀疏表示的兩個基本要求,1是盡可能與原特征相似,2是系數為稀疏。

上式中,我們要求p>m,根據線性代數的知識我們知道,稀疏系數有無窮多組的解。根據稀疏的條件,我們可以在所有的可行解中挑出非零元素最少的解,也就是滿足稀疏性。於是得到如下的數學模型:

如果再考慮噪聲的話,就得到如下的模型:

目標函數中為零范數約束,是NP難題。

有人做了一個證明,在一定條件下,上述的最優化問題有唯一的解。

Terry tao又證明了,在滿足一定條件下,零范數問題與一范數問題是等價的。於是上述模型轉化為:

基於上面的思想,還有各種不同版本的數學模型。

常見模型

我們知道上式為非凸優化問題,常用的解法有:greedy algorithm,代表有Matching Pursuit, Orthogonal Matching Pursuit

上式為解不等式約束問題,常用的解法:LASSO

再寫成拉格朗日乘子的形式,如果已知lambda,可用soft thresholding方法,常見的還有coordinate descent, Bregman Iteration等;

如果未知lambda,則用Homotopy.


稀疏表示

一、

1、先來考慮這么一個問題:有一個信號y,假設它是mx1維的,我們現在得到了n個這樣的信號(設m<<n),也可理解為對這個信號采樣n次,於是我們把這n個不同的信號從1到n依次排開,就得到了一個m行n列的矩陣,記為A吧。

2、然后呢,假設我們得到了一個新的y,也就是又重新采了一次樣得到y,我們可以認為矩陣A里面的信號可以估計這個新的信號y,因為A就是由不同的采樣信號y組成嘛,當然可以估計這個新的信號y啦。那么如何估計呢,我們不妨設這個新的信號y是矩陣A中各個信號的線性組合,不一定全部包含A中的每一列哈,可以理解為A中有太多的這樣的信號啦,我們只去其中的一部分就可以足夠來表示這個新信號y啦。

3、有了上面這些信息,我們可以表示為這樣:給定一個mx1的向量y,和一個mxn的矩陣A,求一個nx1向量x,使得方程y=Ax。簡單吧。

這個問題很簡單的一個求法就是兩邊同時乘以A’(A的轉置),然后移項(就是兩邊在同時乘以A’A的逆。於是得到方程的解x=(ATA)-1AT。。(這個方法得到的是最小二乘解,應該是這么叫吧。。為什么是這樣網上查一下吧)。

我們用這種放法得到解x當然是正確的。可是很有可能x向量中n個元素全是非0的。所以稀疏的問題就來了,我們能不能求一個x使它中的元素非零項的個數很少呢,比如過我要求里面只有n個里面只有5個非零項(這就是x的稀疏性為5)?就是我們想要得到A中最能表示新信號y的那幾項,其他的都可以省略掉。為什么非要找最少的表示啊,多麻煩,直接解出來x就不好了啊,多簡單。我這么想的,如果讓你完成一件事情,需要借很多東西完成它,我可以只像10個人借就可以完成,也可以像100個人借東西完成,你說哪一個辦法好呢?用最少的資源獲得最大的收益哈。

4、怎么可以解得這個最少非零項的解呢?有問題,就必然有解決方法。我們不用上面的直接解方程了。我們來看另一種方法:

我們這樣來想,有一組向量OA,OB,OC,OD。我們想要OA用OB,OC,OD來表示,學過線性代數的人都知道怎么解吧。我們換另一種方法來解,如圖示

(1)先找到OA到其他各個向量的投影,找投影最大的那個對應的向量,圖途中OB,那么OA就可表示成OA=OM+MA,這里為向量運算。假設OM和OB的長度比值為a,則OA=a(OB)+MA。嘿嘿有第一個表示向量了。如果求出來MA就搞定了,MA成為殘差吧

(2)MA怎么求呢。和第一步一樣,我們找MA到各個向量的投影,取最大的向量,比比如說找到了OC如右圖,同樣MA可以表示為MA=OA’=ON+NA’,假設ON和OC的長度比為b則MA=b(OC)+NA’.只要再求NA’就可以了。

(3)這樣一直循環求,可以證明殘差是不斷減小的(證明網上去找吧),

(4)不妨讓殘差小於一定閾值的時候,我們就認為他們可以表示這個未知向量了。這樣求出來了就是一個非零項較少的表示啦。比如我們認為這步驟(1)(2)兩次就可以滿足條件啦,如圖3中藍色線所示,那么我們最終得到向量為OM+ON+NA’=OM+MO’+O’A=OA,如果忽略殘差NA’(因為她很小),則有OA≈OO’=a(OB)+b(OC)。於是OA就可以用OB和OC表示了,而不是全部向量來表示OA。這就是稀疏表示了。

上面的這個算法就是追蹤算法,即MP算法。簡單吧。MP算法不是最優的,得到的解是次優解。因為上圖中,第(2)部的時候得到的NA’殘差只是和OC垂直的,並不和OB垂直,這里是二維的情況。至於為什么請看它的改進算法OMP算法,就是每一次找最相似向量的時候要將已經找到的向量正交化。

矩陣A稱為字典(大概是因為就像查字典一樣吧,我想找到y,我就查這個A字典,A是一個過完備基,就是它包含了y像要的信息,那么怎么查呢,就是找到x,不妨認為x是頁碼吧,所以只要給定了這個字典A,然后再給我們一個字y,我們就能查到y在A中的頁碼x)。

二、

如果認為稀疏表示就是上面介紹的那么簡單,那就太小看所遇到的問題了。還有一個問題,如何建立這個詞典A呢,絕對不是上面舉得那個簡單的例子通過簡單的采樣得到。例如:給定一組信號y,如何建立一個詞典A,使得每一個信號y的表示x最稀疏。這就是字典學習問題。

這個問題的解決辦法目前有三種

efficient sparsecoding algorithm NIPS 06;

K-SVD tsp 06;

Online dictionary learning for sparse coding,ICML 09 & JMLR 10

http://blog.sina.com.cn/s/blog_6d0e97bb01015wol.html

http://blog.csdn.net/aichipmunk/article/details/8823537

http://blog.csdn.net/AIchipmunk/article/details/8712384

http://blog.csdn.net/scucj/article/details/7467955


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

其中的零范數為非凸優化。那么如何解這么一個非凸優化問題呢?其中一個常用的解法就是MP算法。

MP算法

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

求解方法

首先解決兩個問題,怎么定義“最接近原子”,怎么計算殘差?

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

Max[Dist(R,di)]=max[<R,di>];

殘差更新R=R-<R,di>I;繼續選擇下一個,直至收斂;

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

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

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

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

再一輪迭代得到如下:

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

具體算法:

收斂性

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

注意事項:

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

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

如下圖:

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

OMP算法 ( smit正交化)

也就是正交的MP算法。

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

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

求解方法

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

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

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

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

收斂性:

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

於是算法收斂。

具體步驟:

最后,貼一個sparse求解的工具包,里面包含了MP,OMP算法的代碼:

http://spams-devel.gforge.inria.fr/

參考文獻:

http://lear.inrialpes.fr/people/mairal/tutorial_iccv09/

http://blog.csdn.net/scucj/article/details/7467955

OrthogonalMatching Pursuit:Recursive Function Approximation with Applications to WaveletDecomposition


參考文獻:

http://blog.csdn.net/pi9nc/article/details/18655239

http://blog.csdn.net/fanjiaxia/article/details/20292341


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM