Deep Belief Network(DBN)的實(shí)現(xiàn)(c++)

Deep Belief Network(DBN)的實(shí)現(xiàn)(c++)

2013年09月23日?創(chuàng)業(yè),技術(shù),科研? 共 1557字?評(píng)論數(shù) 24? 被圍觀 8,650+

每每想到幾年前寫一篇關(guān)于Action Classification的paper的時(shí)候,苦于沒有找到好的feature representation方法而失敗了。那時(shí)候記得也是想表示成一層一層的特征出來(lái),當(dāng)時(shí)用了關(guān)聯(lián)規(guī)則挖掘,效率沒法克服;然后上了topic model的思想來(lái)組織圖像,沒做到點(diǎn)子上?,F(xiàn)在想想也許當(dāng)時(shí)多實(shí)驗(yàn)試驗(yàn)Hierarchical topic model的思想說(shuō)不定能搞出點(diǎn)名堂。

去年Deep Learning被轟出來(lái)之后,在個(gè)方便都自然的取得了比較理想的效果。想到了自己之前的問題,或許可以借來(lái)用用。

所以,最近接觸了Deep的思想,學(xué)習(xí)并實(shí)現(xiàn)了下。先從hinton最初的DBN著手,實(shí)現(xiàn)起來(lái)還是比較簡(jiǎn)單的。雖然有很多實(shí)現(xiàn)了,考慮的長(zhǎng)遠(yuǎn)的規(guī)劃,先自己實(shí)現(xiàn)著吧。

代碼風(fēng)格Too young, too simple, sometimes naive and many bugs. 不要笑話哈~;框架參考自:yusugomori,不過他沒寫完的樣子。。

一、實(shí)現(xiàn):

1、Layer-wise pre-training階段,一層一層的訓(xùn)練Restrict Boltzmann Machine (RBM),用的CD-k(k=1)的方法;

2、最后一層加入了softmax regression,作為最終結(jié)果輸出層;

3、fine-tuning過程,即為傳統(tǒng)的BP過程。

二、實(shí)驗(yàn)

1、用的MNIST的數(shù)據(jù)集,這里為了可以忍受自己寫的幼兒園水平代碼的效率,選擇10000個(gè)樣本training,60000個(gè)樣本testing。不過傳統(tǒng)上大家都把兩者反過來(lái),效果肯定會(huì)更好了。

2、學(xué)習(xí)速率0.1,rbm和LR的L2的懲罰相l(xiāng)amda開始用的0.0002,三個(gè)隱層大小[400 400 900],這些都沒調(diào)

3、開始時(shí)候沒有進(jìn)行fine-tuning, accuracy大約在84%左右(不過這里是用的svm,當(dāng)時(shí)lr還沒寫完。。),現(xiàn)在fine-tuning之后,用softmax regression對(duì)60000個(gè)樣本分類結(jié)果為93%,還可以哈。不過把L2正則項(xiàng)的懲罰因子lamda設(shè)成0后,準(zhǔn)確率到了95%。

4、調(diào)調(diào)參,或者用60000訓(xùn)練10000測(cè)試,達(dá)到95%以上應(yīng)該沒啥問題吧。

三、源碼https://github.com/lipiji/PG_DEEP

1、想做成像libsvm一樣好用的tool,一個(gè)train可以訓(xùn)練出模型,一個(gè)predict可以預(yù)測(cè)你的數(shù)據(jù),目前還在開發(fā)當(dāng)中。

2、源碼風(fēng)格比較幼兒園,好處就是能夠看懂每個(gè)細(xì)節(jié),方便學(xué)習(xí)吧;怪自己一直沒有遇到什么c++魯棒規(guī)范實(shí)踐的項(xiàng)目。

3、代碼沒有進(jìn)行任何矩陣等計(jì)算的優(yōu)化,優(yōu)化空間很大。

四、計(jì)劃

1、優(yōu)化代碼,理想是做一個(gè)像libsvm一樣方便大家使用的tool;

2、學(xué)習(xí)實(shí)現(xiàn)DNN, AutoEncoder和Sparse Coding啊,convolution啊、dropout啊、GPU啊等等其他升級(jí)版本;

3、能夠再次基礎(chǔ)上擴(kuò)展出vision、nlp等領(lǐng)域里面的那些好用的算法,例如word2vec等。

五、附錄

1、第一層RBM的參數(shù)矩陣W1(768x400)可視化結(jié)果,W2、W3可視化跟隨機(jī)噪聲似的,或許應(yīng)該用其他方法可視化。不過看著怎么不太舒服的樣子,之所以有很多白色的區(qū)域,是因?yàn)橐胝齽t項(xiàng)防止過擬合,體現(xiàn)了一定的稀疏性。正則項(xiàng)的懲罰因子設(shè)成0后,白色區(qū)域就消失了。

PS:有bug大家反饋哈~

Reference:

[1] A fast learning algorithm for deep belief nets

[2] A Practical Guide to Training Restricted Boltzmann Machines

[3]https://github.com/yusugomori/DeepLearning

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 激活函數(shù)(Activation Function) 為了讓神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)復(fù)雜的決策邊界(decision bou...
    御風(fēng)之星閱讀 5,491評(píng)論 0 8
  • 聲明:作者翻譯論文僅為學(xué)習(xí),如有侵權(quán)請(qǐng)聯(lián)系作者刪除博文,謝謝! 翻譯論文匯總:https://github.com...
    SnailTyan閱讀 12,739評(píng)論 1 27
  • 五、Deep Learning的基本思想 假設(shè)我們有一個(gè)系統(tǒng)S,它有n層(S1,…Sn),它的輸入是I,輸出是O,...
    dma_master閱讀 1,904評(píng)論 1 2
  • 一條漂亮的藍(lán)色魚 在我心里播了種,占了一角 我沒有水,優(yōu)質(zhì)的水,好足夠我跟傲慢的自己撒個(gè)嬌 于是藍(lán)色魚越來(lái)越渺小,...
    cicizhang閱讀 427評(píng)論 0 0
  • * 財(cái)富是一種思維方式,而不是存在銀行里的錢。 * 投資本身不會(huì)有風(fēng)險(xiǎn),失控的投資才有風(fēng)險(xiǎn)。 * 成為一位成熟的投...
    豆柒閱讀 2,309評(píng)論 0 4

友情鏈接更多精彩內(nèi)容