[原創]#Deep Learning回顧#之2006年的Science Paper
大家都清楚神經網路在上個世紀七八十年代是著實火過一回的,尤其是後向傳播BP演算法出來之後,但90年代後被SVM之類搶了風頭,再後來大家更熟悉的是SVM、AdaBoost、隨機森林、GBDT、LR、FTRL這些概念。究其原因,主要是神經網路很難解決訓練的問題,比如梯度消失。當時的神經網路研究進入一個低潮期,不過Hinton老人家堅持下來了。
功夫不負有心人,2006年Hinton和學生髮表了利用RBM編碼的深層神經網路的Science Paper:Reducing the Dimensionality of Data with Neural Networks,不過回頭來看,這篇paper在當今的實用性並不強,它的更大作用是把神經網路又推回到大家視線中,利用單層的RBM自編碼預訓練使得深層的神經網路訓練變得可能,但那時候Deep learning依然爭議很多,最終真正爆發是2012年的ImageNet的奪冠,這是後話。
如圖中所示,這篇paper的主要思想是使用受限RBM先分層訓練,受限的意思是不包含層內的相互連接邊(比如vi*vj或hi*hj)。每一層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:
這篇在今天看來實用性不太大,難度也不大,但在當時這篇文章看起來還是晦澀的,很多原理沒有細講。為何能中Science?個人認為,畢竟Hinton是神經網路的泰斗,換個人名不見經傳的人估計中不了,另外這篇文章也確實使得以前不可能的深層神經網路變得可能了,在今天依然有很多可以借鑒的地方,細心的同學會發現上百或上千層的ResNet的思想在一定程度上和這篇論文是神似的。ResNet也是意識到深層(152層)不好直接訓練,那就在單層上想辦法,將原來直接優化H(x)改為優化殘差F(x) = H(x)-x,其中H(X)是某一層原始的的期望映射輸出,x是輸入,相當於輸入x有個直通車到達該層輸出,從而使得單層的訓練更加容易。
參考資料:
[1] Paper:http://www.cs.toronto.edu/~hinton/science.pdf
[2] 代碼:http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html
本文只是簡單回顧,疏漏之處敬請諒解,感興趣的可以加QQ群一起學習:564533376
推薦閱讀:
※【量化策略】當Trading遇上Reinforcement Learning
※深入淺出理解決策樹演算法(二)-ID3演算法與C4.5演算法
※用貝葉斯思想,來談談為什麼趙處長演的這麼像,檢察機關還是揪著他不放。
※目標檢測(1)-Selective Search
TAG:深度学习DeepLearning | 机器学习 | 卷积 |