sparse coding
稀疏編碼系列:
- (一)----Spatial Pyramid 小結
- (二)----圖像的稀疏表示——ScSPM和LLC的總結
- (三)----理解sparse coding
- (四)----稀疏模型與結構性稀疏模型
---------------------------------------------------------------------------
???????
??????? 本文的內容主要來自余凱老師在CVPR2012上給的Tutorial。前面在總結ScSPM和LLC的時候,引用了很多Tutorial上的圖片。其實這個Tutorial感覺寫的挺好的,所以這次把它大致用自己的語言描述一下。不過稀疏編碼是前兩年比較火的東西,現在火的是deep learning了。
1、What is sparse coding?
?????? 1988年,神經稀疏編碼的概念由Mitchison提出,由牛津大學的Rolls等正式引用。靈長目動物顎葉視覺皮層和貓視覺皮層的電生理實驗報告和一些相關模型的研究結果都說明了視覺皮層復雜刺激的表達是采用稀疏編碼原則的。研究表明:初級視覺皮層V1區第四層有5000萬個(相當于基函數),而負責視覺感知的視網膜和外側膝狀體的神經細胞只有100萬個左右(理解為輸出神經元)。說明稀疏編碼是神經信息群體分布式表達的一種有效策略。1996年,加州大學伯克利分校的Olshausen等在Nature雜志發表論文指出:自然圖像經過稀疏編碼后得到的基函數類似V1區簡單細胞感受野的反應特性(空間局部性、空間方向性、信息選擇性)。
?????? 典型的sparse coding的過程分為訓練和測試。
?????? Training:給定一些訓練樣本(training samples)[?x1, x2, …, xm(in Rd)],學習一本字典的基(bases)[Φ1,Φ2……(also in?Rd)]。可是用k-means等無監督的方法,也可以用優化的方法(這時training完了同時也得到了這些training samples的codes,這是一個LASSO和QP問題的循環迭代);
?????? Coding:用優化的方法求解測試樣本的codes(此時字典已經學得)。經典的方法是求解LASSO:
??????????????????(1)
????????自我學習就是在Training的時候采用大量無標注的自然圖像訓練字典,然后對帶標注的圖像進行編碼得到特征codes。
?
2、Connections to RBMs, autoencoders
????? (1)式(經典的稀疏編碼)有幾個特點:
??????????? ——系數a是稀疏的;
??????????? ——a的維數一般比x的維數大;
??????????? ——編碼過程a=f(x)是一個非線性的關于x的隱函數(即我們沒有f(x)的顯示表達,因為求解LASSO沒有解析解);
??????????? ——重建過程x'=g(a)是一個線性的顯示的關于a的函數(X’=ΣaiΦi)。
???????? 而RBM和自編碼的特點則是:
?????????? ——有顯示的f(x);
?????????? ——不會必然得到稀疏的a,但是如果我們增加稀疏的約束(如稀疏自編碼,稀疏RBM),通常能得到更好的效果(進一步說明sparse helps learning)。
???????? 從廣義上說,滿足這么幾個條件的編碼方式a=f(x)都可以叫稀疏編碼:
?????????? 1) a是稀疏的,且通常具有比x更高的維數;
???????????2) f(x)是一個非線性的映射;(jiang1st2010注:該條要求存疑,見下面解釋。)
?????????? 3) 重建的過程x'=g(a),使得重建后的x'與x相似。
????????? 因此,sparse RBM,sparse auto-encoder,甚至VQ都可以算是一種sparse coding。(jiang1st2010注:第二條要求稱f(x)是一個非線性映射,然而SPM中用到的VQ是一個線性映射,原因可以參見這里和這里。余凱老師也是LLC論文的作者,似乎存在矛盾?不過這是個小問題了,沒必要深究。)
?
3、Sparse activations vs. sparse models
???????? 現在可以用a=f(x)表示稀疏編碼的問題了。它可以分解成兩種情況:
???????? 1)sparse model:f(x)的參數是稀疏的
????????????????? --例如:LASSO f(x)=<w,x>,其中w要求是稀疏的。(jiang1st2010注:這個例子中f(x)也是線性的!)
????????????????? --這是一個特征選擇的問題:所有的x都挑選相同的特征子集。
??????????????????--hot topic.
?????????2)sparse activation:f(x)的輸出是稀疏的
????????????????? --就是說a是稀疏的。
????????????????? --這是特征學習的問題:不同的x會激活不懂的特征子集。
???????????????????????????????????????????
?
4、Sparsity vs. locality
?????? 其實這個問題在這里已經談過了。簡單的說就是sparsity不一定導致locality,而locality肯定是sparse的。sparse不比locality好,因為locality具有smooth的特性(即相鄰的x編碼后的f(x)也是相鄰的),而僅僅sparse不能保證smooth。smooth的特性對classification會具有更好的效果,并且設計f(x)時,應盡量保證相似的x在它們的codes中有相似的非0的維度。
?
???????? Tutorial上展示了(1)中取不同的λ,字典中各項呈現的效果:
??????
???
??????? 作者想說明的問題是分類效果越好的情況下,basis會更清晰地表現出屬于某幾個特定的類。但是我沒太看明白。
?
5、Hierarchical sparse coding
????????這里圖3曾說明了SIFT本身就是一個Coding+Pooling的過程,所以SPM是一個兩層的Coding+Pooling。而Hierarchical sparse coding就是兩層的coding都是sparse coding,如下圖:
???????? 整個HSC的第一層就從pixel層級開始(不需要手動設計SIFT特征了),經過兩層SC后,形成codes。這個過程可以從無標注的數據中學習,就是self-taught learning。從pixel層級開始,這點和DNN啥的很像了。
????????? 從結果來看,HSC的性能會比SIFT+SC稍微好些。
????????
?????????? Tutorial的最后列舉了關于SC的其他主題,我也不懂,這里就不廢話了。
-----------------
轉載出處:http://blog.csdn.net/jwh_bupt/article/details/9902949
總結
以上是生活随笔為你收集整理的sparse coding的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云服务器共享型、计算型和通用型有什么
- 下一篇: Reason: Cannot pass