轉載:稀疏編碼

來源:互聯網
上載者:User

標籤:

原文地址:http://blog.csdn.net/jwh_bupt/article/details/9902949

Many thanks

---------------------------------------------------------------------------

       

        本文的內容主要來自餘凱老師在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的其他主題,我也不懂,這裡就不廢話了。

 

-----------------

jiang1st2010

轉載:稀疏編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.