稀疏學習的任務主要是有稀疏編碼、字典學習。html
關於稀疏信號的定義,這裏給出4種形式:嚴格k稀疏信號,可壓縮信號、稀疏基下的稀疏信號、稀疏基下的可壓縮信號算法
(1)嚴格k稀疏信號:考慮一個有限長信號x屬於Rn,若是x至多有k個非零元素,即||x||0≤k,則稱信號x爲嚴格k稀疏信號,函數
(2)可壓縮信號:若是信號能夠用一個k稀疏向量來近似表示,則稱這樣的信號爲可壓縮信號。工具
(3)稀疏基下的稀疏信號:大多數的狀況下,信號自己不是稀疏的,可是在某些合適的基或變換下稀疏。學習
(4)稀疏基下的可壓縮信號:給定值k,信號x的最佳近似k項元素的線性組合,稱爲x的最佳k稀疏近似。優化
字典的概念:字典A來自信號空間的元素集,其線性組合能夠表示或近似表示信號。在咱們常常關注的稀疏學習任務中,每每要求字典是一個扁矩陣,也稱爲過完備字典。ui
稀疏編碼的概念來自於神經生物學。生物學家提出,哺乳類動物在長期的進化中,生成了可以快速,準確,低代價地表示天然圖像的視覺神經方面的能力。咱們直觀地能夠想象,咱們的眼睛每看到的一副畫面都是上億像素的,而每一副圖像咱們都只用不多的代價重建與存儲。咱們把它叫作稀疏編碼,即Sparse Coding.編碼
稀疏編碼的目的是在大量的數據集中,選取很小部分做爲元素來重建新的數據。spa
稀疏編碼難點之一是其最優化目標函數的求解。.net
哺乳動物初級視覺皮層簡單細胞的感覺野的三個性質: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吧。
二、而後呢,假設咱們獲得了一個新的y,也就是又從新採了一次樣獲得y,咱們能夠認爲矩陣A裏面的信號能夠估計這個新的信號y,由於A就是由不一樣的採樣信號y組成嘛,固然能夠估計這個新的信號y啦。那麼如何估計呢,咱們不妨設這個新的信號y是矩陣A中各個信號的線性組合,不必定所有包含A中的每一列哈,能夠理解爲A中有太多的這樣的信號啦,咱們只去其中的一部分就能夠足夠來表示這個新信號y啦。
三、有了上面這些信息,咱們能夠表示爲這樣:給定一個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我的借東西完成,你說哪個辦法好呢?用最少的資源得到最大的收益哈。
四、怎麼能夠解得這個最少非零項的解呢?有問題,就必然有解決方法。咱們不用上面的直接解方程了。咱們來看另外一種方法:
咱們這樣來想,有一組向量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)。
2、
若是認爲稀疏表示就是上面介紹的那麼簡單,那就過小看所遇到的問題了。還有一個問題,如何創建這個詞典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算法是一種貪心算法(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要改進的地方。
也就是正交的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