這裡指的Deep Network包括: Convolutional Sparse Coding, Deep RBM, TCNN,Sparse Autoencoder等等。
這方面的基本知識可以參照
1. http://deeplearning.net/tutorial/
2. http://ufldl.stanford.edu/wiki/index.php/Main_Page (昨天剛發現的一個新的tutorial,關於unsupervised feature learning的)
最近一直在研究這方面東西,積累了一些代碼,放上來留檔並分享。
主要代碼在deeplearning.net上都有,但由於那個網站兩年沒更新了,而Deep Learning這塊又是最近比較火的一塊,代碼新陳代謝相當快,因此在這邊分享幾個最近找到的不錯的代碼 (主要是matlab的):
1. DeconvNet Toolbox:
http://www.matthewzeiler.com/software/
相當全的一個toolbox,裡面基本包含了convolutional sparse coding從演算法層面到gui層面所有功能 (但結構也有點複雜)。由於是作者一個人開發的,所以還有些bug。花了近兩個月時間把它搞通了,收穫頗豐。
2. TCNN
http://ai.stanford.edu/~quocle/TCNNweb/index.html
最近剛剛嘗試,相比DeconvNet寫得比較簡潔易懂。但是原來代碼裡面給的資料似乎沒法跑。所幸同作者還有一些代碼用到了TCNN,比如action recognition,可以一起下載下來參考。這個代碼主要特色就是tiled結構,可以用來參考,然後把裡面ICA的最佳化函數換成RICA,Sparse Coding等等。總之,在這個代碼裡也瞭解了不少(比如line search等)。
現在調下來感覺sparse coding比ICA魯棒很多的,至少對於sparsity penalty不那麼敏感。而且Sparse Coding比較bio-plausible, 這個日後會寫點東西分析一下的。
3. lush
http://lush.sourceforge.net/
Lecun組的鎮山之寶,裡麵包含了不少代碼,用的是自己發明的程式設計語言lush,但本人沒調成功 (linux下安裝成功,但調試路徑方面不知道怎麼設定)。。。而且由於有了之前兩個的架構,Lecun paper裡面的idea可以輕鬆implement,所以也就沒有花太多時間在上面了。
4. pylearn
http://www.iro.umontreal.ca/~lisa/twiki/bin/view.cgi/Public/PublicCode
Python寫的,貌似是加拿大那兩個組(Bengio and Hinton)的成員主力開發的。裡麵包括許多deep learning方面的東西 (各種RBM)。
文檔見 http://deeplearning.net/software/pylearn2/index.html, 寫得很簡潔,主要是一個google group, 要不懂可以到上面去問問題。但由於個人對matlab黏性太大,暫時沒有轉到Python的打算,所以只是把代碼放在這裡供參考。
補:
另外兩個年代久遠但還是比較基礎的演算法:
sparse coding:
http://redwood.berkeley.edu/bruno/sparsenet/
ICA:
http://www.cs.helsinki.fi/u/phoyer/software.html