#Deep Learning回顧#之2006年的Science Paper

你們都清楚神經網絡在上個世紀七八十年代是着實火過一回的,尤爲是後向傳播BP算法出來以後,但90年代後被SVM之類搶了風頭,再後來你們更熟悉的是SVM、AdaBoost、隨機森林、GBDT、LR、FTRL這些概念。究其緣由,主要是神經網絡很難解決訓練的問題,好比梯度消失。當時的神經網絡研究進入一個低潮期,不過Hinton老人家堅持下來了。html

功夫不負有心人,2006年Hinton和學生髮表了利用RBM編碼的深層神經網絡的Science Paper:Reducing the Dimensionality of Data with Neural Networks,不過回頭來看,這篇paper在當今的實用性並不強,它的更大做用是把神經網絡又推回到你們視線中,利用單層的RBM自編碼預訓練使得深層的神經網絡訓練變得可能,但那時候Deep learning依然爭議不少,最終真正爆發是2012年的ImageNet的奪冠,這是後話。算法

flow

如圖中所示,這篇paper的主要思想是使用受限RBM先分層訓練,受限的意思是不包含層內的相互鏈接邊(好比vi*vj或hi*hj)。每一層RBM訓練時的目標是使得能量最小:網絡

rbm

能量最小其實就是P(v, h)聯合機率最大,而其餘v’相關的p(v’, h)較小,後面這個是歸一化因子相關。這塊若是理解有問題的,須要補一下RBM相關知識,目前網上資料很多了。函數

大體的過程爲,從輸入層開始,不斷進行降維,好比左圖中的2000維降到1000維, 降維時保證能量最小,也就是輸出h和輸入v比較一致,而和其餘輸入v’不一致,換句話說,輸出儘可能保證輸入的信息量。降維從目標上比較相似於PCA,但Hinton在文章說這種方法比PCA效果會好不少,尤爲是通過多層壓縮的時候(好比784個像素壓縮到6個實數),從原理應該也是這樣的,RBM每一層都儘可能保留了輸入的信息。學習

預訓練結束後,就會展開獲得中間的解碼器,這是一個疊加的過程,也就是下一層RBM的輸出做爲上一層RBM的輸入。優化

最後再利用真實數據進行參數細調,目標是輸入圖片通過編碼解碼後儘可能保持原圖信息,用的Loss函數是負Log Likelihood:
likelihood編碼

這篇在今天看來實用性不太大,難度也不大,但在當時這篇文章看起來仍是晦澀的,不少原理沒有細講。爲什麼能中Science?我的認爲,畢竟Hinton是神經網絡的泰斗,換我的名不見經傳的人估計中不了,另外這篇文章也確實使得之前不可能的深層神經網絡變得可能了,在今天依然有不少能夠借鑑的地方,細心的同窗會發現上百或上千層的ResNet的思想在必定程度上和這篇論文是神似的。ResNet也是意識到深層(152層)很差直接訓練,那就在單層上想辦法,將原來直接優化H(x)改成優化殘差F(x) = H(x)-x,其中H(X)是某一層原始的的指望映射輸出,x是輸入,至關於輸入x有個直通車到達該層輸出,從而使得單層的訓練更加容易。htm

參考資料:圖片

[1] Paper:http://www.cs.toronto.edu/~hinton/science.pdfci

[2] 代碼:http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html


本文只是簡單回顧,疏漏之處敬請諒解,感興趣的能夠加QQ羣一塊兒學習:252085834

相關文章
相關標籤/搜索