十一、參考文獻(xiàn)和Deep Learning學(xué)習(xí)資源 先是機器學(xué)習(xí)領(lǐng)域大牛的微博:@余凱_西二旗民工;@老師木;@梁斌penny;@張棟_機器學(xué)習(xí);@鄧侃;@大數(shù)據(jù)皮東;@djvu9…… (1)Deep Learning (2)Deep Learning Methods for Vision http://cs./~fergus/tutorials/deep_learning_cvpr12/ (3)Neural Network for Recognition of Handwritten Digits[Project] http://www./Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi (4)Training a deep autoencoder or a classifier on MNIST digits http://www.cs./~hinton/MatlabForSciencePaper.html (5)Ersatz:deep neural networks in the cloud (6)Deep Learning http://www.cs./~yann/research/deep/ (7)Invited talk "A Tutorial on Deep Learning" by Dr. Kai Yu (余凱) http://vipl./News/academic-report-tutorial-deep-learning-dr-kai-yu (8)CNN - Convolutional neural network class http://www./matlabcentral/fileexchange/24291 (9)Yann LeCun's Publications http://yann./exdb/publis/index.html#lecun-98 (10) LeNet-5, convolutional neural networks http://yann./exdb/lenet/index.html (11) Deep Learning 大牛Geoffrey E. Hinton's HomePage (12)Sparse coding simulation software[Project] http://redwood./bruno/sparsenet/ (13)Andrew Ng's homepage (14)stanford deep learning tutorial http://deeplearning./wiki/index.php/UFLDL_Tutorial (15)「深度神經(jīng)網(wǎng)絡(luò)」(deep neural network)具體是怎樣工作的 http://www.zhihu.com/question/19833708?group_id=15019075#1657279 (16)A shallow understanding on deep learning http://blog.sina.com.cn/s/blog_6ae183910101dw2z.html (17)Bengio's Learning Deep Architectures for AI http://www.iro./~bengioy/papers/ftml_book.pdf (18)andrew ng's talk video: http:///talks/machine-learning-and-ai-via-brain-simulations/57862/ (19)cvpr 2012 tutorial: http://cs./~fergus/tutorials/deep_learning_cvpr12/tutorial_p2_nnets_ranzato_short.pdf (20)Andrew ng清華報告聽后感 http://blog.sina.com.cn/s/blog_593af2a70101bqyo.html (21)Kai Yu:CVPR12 Tutorial on Deep Learning Sparse Coding (22)Honglak Lee:Deep Learning Methods for Vision (23)Andrew Ng :Machine Learning and AI via Brain simulations (24)Deep Learning 【2,3】 http://blog.sina.com.cn/s/blog_46d0a3930101gs5h.html (25)deep learning這件小事…… http://blog.sina.com.cn/s/blog_67fcf49e0101etab.html (26)Yoshua Bengio, U. Montreal:Learning Deep Architectures (27)Kai Yu:A Tutorial on Deep Learning (28)Marc'Aurelio Ranzato:NEURAL NETS FOR VISION (29)Unsupervised feature learning and deep learning http://blog.csdn.net/abcjennifer/article/details/7804962 (30)機器學(xué)習(xí)前沿?zé)狳c–Deep Learning (31)機器學(xué)習(xí)——深度學(xué)習(xí)(Deep Learning) http://blog.csdn.net/abcjennifer/article/details/7826917 (32)卷積神經(jīng)網(wǎng)絡(luò) http://wenku.baidu.com/view/cd16fb8302d276a200292e22.html (33)淺談Deep Learning的基本思想和方法 http://blog.csdn.net/xianlingmao/article/details/8478562 (34)深度神經(jīng)網(wǎng)絡(luò) http://blog.csdn.net/txdb/article/details/6766373 (35)Google的貓臉識別:人工智能的新突破 http://www.36kr.com/p/122132.html (36)余凱,深度學(xué)習(xí)-機器學(xué)習(xí)的新浪潮,Technical News程序天下事 http://blog.csdn.net/datoubo/article/details/8577366 (37)Geoffrey Hinton:UCLTutorial on: Deep Belief Nets (38)Learning Deep Boltzmann Machines http://web./~rsalakhu/www/DBM.html (39)Efficient Sparse Coding Algorithm http://blog.sina.com.cn/s/blog_62af19190100gux1.html (40)Itamar Arel, Derek C. Rose, and Thomas P. Karnowski: Deep Machine Learning—A New Frontier in Artificial Intelligence Research (41)Francis Quintal Lauzon:An introduction to deep learning (42)Tutorial on Deep Learning and Applications (43)Boltzmann神經(jīng)網(wǎng)絡(luò)模型與學(xué)習(xí)算法 http://wenku.baidu.com/view/490dcf748e9951e79b892785.html (44)Deep Learning 和 Knowledge Graph 引爆大數(shù)據(jù)革命 http://blog.sina.com.cn/s/blog_46d0a3930101fswl.html
九、Deep Learning的常用模型或者方法 9.1、AutoEncoder自動編碼器 Deep Learning最簡單的一種方法是利用人工神經(jīng)網(wǎng)絡(luò)的特點,人工神經(jīng)網(wǎng)絡(luò)(ANN)本身就是具有層次結(jié)構(gòu)的系統(tǒng),如果給定一個神經(jīng)網(wǎng)絡(luò),我們假設(shè)其輸出與輸入是相同的,然后訓(xùn)練調(diào)整其參數(shù),得到每一層中的權(quán)重。自然地,我們就得到了輸入I的幾種不同表示(每一層代表一種表示),這些表示就是特征。自動編碼器就是一種盡可能復(fù)現(xiàn)輸入信號的神經(jīng)網(wǎng)絡(luò)。為了實現(xiàn)這種復(fù)現(xiàn),自動編碼器就必須捕捉可以代表輸入數(shù)據(jù)的最重要的因素,就像PCA那樣,找到可以代表原信息的主要成分。 具體過程簡單的說明如下: 1)給定無標(biāo)簽數(shù)據(jù),用非監(jiān)督學(xué)習(xí)學(xué)習(xí)特征:
在我們之前的神經(jīng)網(wǎng)絡(luò)中,如第一個圖,我們輸入的樣本是有標(biāo)簽的,即(input, target),這樣我們根據(jù)當(dāng)前輸出和target(label)之間的差去改變前面各層的參數(shù),直到收斂。但現(xiàn)在我們只有無標(biāo)簽數(shù)據(jù),也就是右邊的圖。那么這個誤差怎么得到呢?
如上圖,我們將input輸入一個encoder編碼器,就會得到一個code,這個code也就是輸入的一個表示,那么我們怎么知道這個code表示的就是input呢?我們加一個decoder解碼器,這時候decoder就會輸出一個信息,那么如果輸出的這個信息和一開始的輸入信號input是很像的(理想情況下就是一樣的),那很明顯,我們就有理由相信這個code是靠譜的。所以,我們就通過調(diào)整encoder和decoder的參數(shù),使得重構(gòu)誤差最小,這時候我們就得到了輸入input信號的第一個表示了,也就是編碼code了。因為是無標(biāo)簽數(shù)據(jù),所以誤差的來源就是直接重構(gòu)后與原輸入相比得到。
2)通過編碼器產(chǎn)生特征,然后訓(xùn)練下一層。這樣逐層訓(xùn)練: 那上面我們就得到第一層的code,我們的重構(gòu)誤差最小讓我們相信這個code就是原輸入信號的良好表達(dá)了,或者牽強點說,它和原信號是一模一樣的(表達(dá)不一樣,反映的是一個東西)。那第二層和第一層的訓(xùn)練方式就沒有差別了,我們將第一層輸出的code當(dāng)成第二層的輸入信號,同樣最小化重構(gòu)誤差,就會得到第二層的參數(shù),并且得到第二層輸入的code,也就是原輸入信息的第二個表達(dá)了。其他層就同樣的方法炮制就行了(訓(xùn)練這一層,前面層的參數(shù)都是固定的,并且他們的decoder已經(jīng)沒用了,都不需要了)。
3)有監(jiān)督微調(diào): 經(jīng)過上面的方法,我們就可以得到很多層了。至于需要多少層(或者深度需要多少,這個目前本身就沒有一個科學(xué)的評價方法)需要自己試驗調(diào)了。每一層都會得到原始輸入的不同的表達(dá)。當(dāng)然了,我們覺得它是越抽象越好了,就像人的視覺系統(tǒng)一樣。 到這里,這個AutoEncoder還不能用來分類數(shù)據(jù),因為它還沒有學(xué)習(xí)如何去連結(jié)一個輸入和一個類。它只是學(xué)會了如何去重構(gòu)或者復(fù)現(xiàn)它的輸入而已?;蛘哒f,它只是學(xué)習(xí)獲得了一個可以良好代表輸入的特征,這個特征可以最大程度上代表原輸入信號。那么,為了實現(xiàn)分類,我們就可以在AutoEncoder的最頂?shù)木幋a層添加一個分類器(例如羅杰斯特回歸、SVM等),然后通過標(biāo)準(zhǔn)的多層神經(jīng)網(wǎng)絡(luò)的監(jiān)督訓(xùn)練方法(梯度下降法)去訓(xùn)練。 也就是說,這時候,我們需要將最后層的特征code輸入到最后的分類器,通過有標(biāo)簽樣本,通過監(jiān)督學(xué)習(xí)進(jìn)行微調(diào),這也分兩種,一個是只調(diào)整分類器(黑色部分):
另一種:通過有標(biāo)簽樣本,微調(diào)整個系統(tǒng):(如果有足夠多的數(shù)據(jù),這個是最好的。end-to-end learning端對端學(xué)習(xí))
一旦監(jiān)督訓(xùn)練完成,這個網(wǎng)絡(luò)就可以用來分類了。神經(jīng)網(wǎng)絡(luò)的最頂層可以作為一個線性分類器,然后我們可以用一個更好性能的分類器去取代它。 在研究中可以發(fā)現(xiàn),如果在原有的特征中加入這些自動學(xué)習(xí)得到的特征可以大大提高精確度,甚至在分類問題中比目前最好的分類算法效果還要好! AutoEncoder存在一些變體,這里簡要介紹下兩個: Sparse AutoEncoder稀疏自動編碼器: 當(dāng)然,我們還可以繼續(xù)加上一些約束條件得到新的Deep Learning方法,如:如果在AutoEncoder的基礎(chǔ)上加上L1的Regularity限制(L1主要是約束每一層中的節(jié)點中大部分都要為0,只有少數(shù)不為0,這就是Sparse名字的來源),我們就可以得到Sparse AutoEncoder法。
如上圖,其實就是限制每次得到的表達(dá)code盡量稀疏。因為稀疏的表達(dá)往往比其他的表達(dá)要有效(人腦好像也是這樣的,某個輸入只是刺激某些神經(jīng)元,其他的大部分的神經(jīng)元是受到抑制的)。 Denoising AutoEncoders降噪自動編碼器: 降噪自動編碼器DA是在自動編碼器的基礎(chǔ)上,訓(xùn)練數(shù)據(jù)加入噪聲,所以自動編碼器必須學(xué)習(xí)去去除這種噪聲而獲得真正的沒有被噪聲污染過的輸入。因此,這就迫使編碼器去學(xué)習(xí)輸入信號的更加魯棒的表達(dá),這也是它的泛化能力比一般編碼器強的原因。DA可以通過梯度下降算法去訓(xùn)練。
![]()
9.3、Restricted Boltzmann Machine (RBM)限制波爾茲曼機 假設(shè)有一個二部圖,每一層的節(jié)點之間沒有鏈接,一層是可視層,即輸入數(shù)據(jù)層(v),一層是隱藏層(h),如果假設(shè)所有的節(jié)點都是隨機二值變量節(jié)點(只能取0或者1值),同時假設(shè)全概率分布p(v,h)滿足Boltzmann 分布,我們稱這個模型是Restricted BoltzmannMachine (RBM)。
下面我們來看看為什么它是Deep Learning方法。首先,這個模型因為是二部圖,所以在已知v的情況下,所有的隱藏節(jié)點之間是條件獨立的(因為節(jié)點之間不存在連接),即p(h|v)=p(h1|v)…p(hn|v)。同理,在已知隱藏層h的情況下,所有的可視節(jié)點都是條件獨立的。同時又由于所有的v和h滿足Boltzmann 分布,因此,當(dāng)輸入v的時候,通過p(h|v) 可以得到隱藏層h,而得到隱藏層h之后,通過p(v|h)又能得到可視層,通過調(diào)整參數(shù),我們就是要使得從隱藏層得到的可視層v1與原來的可視層v如果一樣,那么得到的隱藏層就是可視層另外一種表達(dá),因此隱藏層可以作為可視層輸入數(shù)據(jù)的特征,所以它就是一種Deep Learning方法。
如何訓(xùn)練呢?也就是可視層節(jié)點和隱節(jié)點間的權(quán)值怎么確定呢?我們需要做一些數(shù)學(xué)分析。也就是模型了。
聯(lián)合組態(tài)(jointconfiguration)的能量可以表示為:
而某個組態(tài)的聯(lián)合概率分布可以通過Boltzmann 分布(和這個組態(tài)的能量)來確定:
因為隱藏節(jié)點之間是條件獨立的(因為節(jié)點之間不存在連接),即:
然后我們可以比較容易(對上式進(jìn)行因子分解Factorizes)得到在給定可視層v的基礎(chǔ)上,隱層第j個節(jié)點為1或者為0的概率:
同理,在給定隱層h的基礎(chǔ)上,可視層第i個節(jié)點為1或者為0的概率也可以容易得到:
給定一個滿足獨立同分布的樣本集:D={v(1), v(2),…, v(N)},我們需要學(xué)習(xí)參數(shù)θ={W,a,b}。 我們最大化以下對數(shù)似然函數(shù)(最大似然估計:對于某個概率模型,我們需要選擇一個參數(shù),讓我們當(dāng)前的觀測樣本的概率最大):
也就是對最大對數(shù)似然函數(shù)求導(dǎo),就可以得到L最大時對應(yīng)的參數(shù)W了。
如果,我們把隱藏層的層數(shù)增加,我們可以得到Deep Boltzmann Machine(DBM);如果我們在靠近可視層的部分使用貝葉斯信念網(wǎng)絡(luò)(即有向圖模型,當(dāng)然這里依然限制層中節(jié)點之間沒有鏈接),而在最遠(yuǎn)離可視層的部分使用Restricted Boltzmann Machine,我們可以得到DeepBelief Net(DBN)。
9.4、Deep Belief Networks深信度網(wǎng)絡(luò) DBNs是一個概率生成模型,與傳統(tǒng)的判別模型的神經(jīng)網(wǎng)絡(luò)相對,生成模型是建立一個觀察數(shù)據(jù)和標(biāo)簽之間的聯(lián)合分布,對P(Observation|Label)和 P(Label|Observation)都做了評估,而判別模型僅僅而已評估了后者,也就是P(Label|Observation)。對于在深度神經(jīng)網(wǎng)絡(luò)應(yīng)用傳統(tǒng)的BP算法的時候,DBNs遇到了以下問題: (1)需要為訓(xùn)練提供一個有標(biāo)簽的樣本集; (2)學(xué)習(xí)過程較慢; (3)不適當(dāng)?shù)膮?shù)選擇會導(dǎo)致學(xué)習(xí)收斂于局部最優(yōu)解。
DBNs由多個限制玻爾茲曼機(Restricted Boltzmann Machines)層組成,一個典型的神經(jīng)網(wǎng)絡(luò)類型如圖三所示。這些網(wǎng)絡(luò)被“限制”為一個可視層和一個隱層,層間存在連接,但層內(nèi)的單元間不存在連接。隱層單元被訓(xùn)練去捕捉在可視層表現(xiàn)出來的高階數(shù)據(jù)的相關(guān)性。 首先,先不考慮最頂構(gòu)成一個聯(lián)想記憶(associative memory)的兩層,一個DBN的連接是通過自頂向下的生成權(quán)值來指導(dǎo)確定的,RBMs就像一個建筑塊一樣,相比傳統(tǒng)和深度分層的sigmoid信念網(wǎng)絡(luò),它能易于連接權(quán)值的學(xué)習(xí)。 最開始的時候,通過一個非監(jiān)督貪婪逐層方法去預(yù)訓(xùn)練獲得生成模型的權(quán)值,非監(jiān)督貪婪逐層方法被Hinton證明是有效的,并被其稱為對比分歧(contrastive divergence)。 在這個訓(xùn)練階段,在可視層會產(chǎn)生一個向量v,通過它將值傳遞到隱層。反過來,可視層的輸入會被隨機的選擇,以嘗試去重構(gòu)原始的輸入信號。最后,這些新的可視的神經(jīng)元激活單元將前向傳遞重構(gòu)隱層激活單元,獲得h(在訓(xùn)練過程中,首先將可視向量值映射給隱單元;然后可視單元由隱層單元重建;這些新可視單元再次映射給隱單元,這樣就獲取新的隱單元。執(zhí)行這種反復(fù)步驟叫做吉布斯采樣)。這些后退和前進(jìn)的步驟就是我們熟悉的Gibbs采樣,而隱層激活單元和可視層輸入之間的相關(guān)性差別就作為權(quán)值更新的主要依據(jù)。 訓(xùn)練時間會顯著的減少,因為只需要單個步驟就可以接近最大似然學(xué)習(xí)。增加進(jìn)網(wǎng)絡(luò)的每一層都會改進(jìn)訓(xùn)練數(shù)據(jù)的對數(shù)概率,我們可以理解為越來越接近能量的真實表達(dá)。這個有意義的拓展,和無標(biāo)簽數(shù)據(jù)的使用,是任何一個深度學(xué)習(xí)應(yīng)用的決定性的因素。
在最高兩層,權(quán)值被連接到一起,這樣更低層的輸出將會提供一個參考的線索或者關(guān)聯(lián)給頂層,這樣頂層就會將其聯(lián)系到它的記憶內(nèi)容。而我們最關(guān)心的,最后想得到的就是判別性能,例如分類任務(wù)里面。 在預(yù)訓(xùn)練后,DBN可以通過利用帶標(biāo)簽數(shù)據(jù)用BP算法去對判別性能做調(diào)整。在這里,一個標(biāo)簽集將被附加到頂層(推廣聯(lián)想記憶),通過一個自下向上的,學(xué)習(xí)到的識別權(quán)值獲得一個網(wǎng)絡(luò)的分類面。這個性能會比單純的BP算法訓(xùn)練的網(wǎng)絡(luò)好。這可以很直觀的解釋,DBNs的BP算法只需要對權(quán)值參數(shù)空間進(jìn)行一個局部的搜索,這相比前向神經(jīng)網(wǎng)絡(luò)來說,訓(xùn)練是要快的,而且收斂的時間也少。 DBNs的靈活性使得它的拓展比較容易。一個拓展就是卷積DBNs(Convolutional Deep Belief Networks(CDBNs))。DBNs并沒有考慮到圖像的2維結(jié)構(gòu)信息,因為輸入是簡單的從一個圖像矩陣一維向量化的。而CDBNs就是考慮到了這個問題,它利用鄰域像素的空域關(guān)系,通過一個稱為卷積RBMs的模型區(qū)達(dá)到生成模型的變換不變性,而且可以容易得變換到高維圖像。DBNs并沒有明確地處理對觀察變量的時間聯(lián)系的學(xué)習(xí)上,雖然目前已經(jīng)有這方面的研究,例如堆疊時間RBMs,以此為推廣,有序列學(xué)習(xí)的dubbed temporal convolutionmachines,這種序列學(xué)習(xí)的應(yīng)用,給語音信號處理問題帶來了一個讓人激動的未來研究方向。 目前,和DBNs有關(guān)的研究包括堆疊自動編碼器,它是通過用堆疊自動編碼器來替換傳統(tǒng)DBNs里面的RBMs。這就使得可以通過同樣的規(guī)則來訓(xùn)練產(chǎn)生深度多層神經(jīng)網(wǎng)絡(luò)架構(gòu),但它缺少層的參數(shù)化的嚴(yán)格要求。與DBNs不同,自動編碼器使用判別模型,這樣這個結(jié)構(gòu)就很難采樣輸入采樣空間,這就使得網(wǎng)絡(luò)更難捕捉它的內(nèi)部表達(dá)。但是,降噪自動編碼器卻能很好的避免這個問題,并且比傳統(tǒng)的DBNs更優(yōu)。它通過在訓(xùn)練過程添加隨機的污染并堆疊產(chǎn)生場泛化性能。訓(xùn)練單一的降噪自動編碼器的過程和RBMs訓(xùn)練生成模型的過程一樣。 9.5、Convolutional Neural Networks卷積神經(jīng)網(wǎng)絡(luò) 卷積神經(jīng)網(wǎng)絡(luò)是人工神經(jīng)網(wǎng)絡(luò)的一種,已成為當(dāng)前語音分析和圖像識別領(lǐng)域的研究熱點。它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量。該優(yōu)點在網(wǎng)絡(luò)的輸入是多維圖像時表現(xiàn)的更為明顯,使圖像可以直接作為網(wǎng)絡(luò)的輸入,避免了傳統(tǒng)識別算法中復(fù)雜的特征提取和數(shù)據(jù)重建過程。卷積網(wǎng)絡(luò)是為識別二維形狀而特殊設(shè)計的一個多層感知器,這種網(wǎng)絡(luò)結(jié)構(gòu)對平移、比例縮放、傾斜或者共他形式的變形具有高度不變性。 CNNs是受早期的延時神經(jīng)網(wǎng)絡(luò)(TDNN)的影響。延時神經(jīng)網(wǎng)絡(luò)通過在時間維度上共享權(quán)值降低學(xué)習(xí)復(fù)雜度,適用于語音和時間序列信號的處理。 CNNs是第一個真正成功訓(xùn)練多層網(wǎng)絡(luò)結(jié)構(gòu)的學(xué)習(xí)算法。它利用空間關(guān)系減少需要學(xué)習(xí)的參數(shù)數(shù)目以提高一般前向BP算法的訓(xùn)練性能。CNNs作為一個深度學(xué)習(xí)架構(gòu)提出是為了最小化數(shù)據(jù)的預(yù)處理要求。在CNN中,圖像的一小部分(局部感受區(qū)域)作為層級結(jié)構(gòu)的最低層的輸入,信息再依次傳輸?shù)讲煌膶?,每層通過一個數(shù)字濾波器去獲得觀測數(shù)據(jù)的最顯著的特征。這個方法能夠獲取對平移、縮放和旋轉(zhuǎn)不變的觀測數(shù)據(jù)的顯著特征,因為圖像的局部感受區(qū)域允許神經(jīng)元或者處理單元可以訪問到最基礎(chǔ)的特征,例如定向邊緣或者角點。 1)卷積神經(jīng)網(wǎng)絡(luò)的歷史 1962年Hubel和Wiesel通過對貓視覺皮層細(xì)胞的研究,提出了感受野(receptive field)的概念,1984年日本學(xué)者Fukushima基于感受野概念提出的神經(jīng)認(rèn)知機(neocognitron)可以看作是卷積神經(jīng)網(wǎng)絡(luò)的第一個實現(xiàn)網(wǎng)絡(luò),也是感受野概念在人工神經(jīng)網(wǎng)絡(luò)領(lǐng)域的首次應(yīng)用。神經(jīng)認(rèn)知機將一個視覺模式分解成許多子模式(特征),然后進(jìn)入分層遞階式相連的特征平面進(jìn)行處理,它試圖將視覺系統(tǒng)模型化,使其能夠在即使物體有位移或輕微變形的時候,也能完成識別。 通常神經(jīng)認(rèn)知機包含兩類神經(jīng)元,即承擔(dān)特征抽取的S-元和抗變形的C-元。S-元中涉及兩個重要參數(shù),即感受野與閾值參數(shù),前者確定輸入連接的數(shù)目,后者則控制對特征子模式的反應(yīng)程度。許多學(xué)者一直致力于提高神經(jīng)認(rèn)知機的性能的研究:在傳統(tǒng)的神經(jīng)認(rèn)知機中,每個S-元的感光區(qū)中由C-元帶來的視覺模糊量呈正態(tài)分布。如果感光區(qū)的邊緣所產(chǎn)生的模糊效果要比中央來得大,S-元將會接受這種非正態(tài)模糊所導(dǎo)致的更大的變形容忍性。我們希望得到的是,訓(xùn)練模式與變形刺激模式在感受野的邊緣與其中心所產(chǎn)生的效果之間的差異變得越來越大。為了有效地形成這種非正態(tài)模糊,F(xiàn)ukushima提出了帶雙C-元層的改進(jìn)型神經(jīng)認(rèn)知機。 Van Ooyen和Niehuis為提高神經(jīng)認(rèn)知機的區(qū)別能力引入了一個新的參數(shù)。事實上,該參數(shù)作為一種抑制信號,抑制了神經(jīng)元對重復(fù)激勵特征的激勵。多數(shù)神經(jīng)網(wǎng)絡(luò)在權(quán)值中記憶訓(xùn)練信息。根據(jù)Hebb學(xué)習(xí)規(guī)則,某種特征訓(xùn)練的次數(shù)越多,在以后的識別過程中就越容易被檢測。也有學(xué)者將進(jìn)化計算理論與神經(jīng)認(rèn)知機結(jié)合,通過減弱對重復(fù)性激勵特征的訓(xùn)練學(xué)習(xí),而使得網(wǎng)絡(luò)注意那些不同的特征以助于提高區(qū)分能力。上述都是神經(jīng)認(rèn)知機的發(fā)展過程,而卷積神經(jīng)網(wǎng)絡(luò)可看作是神經(jīng)認(rèn)知機的推廣形式,神經(jīng)認(rèn)知機是卷積神經(jīng)網(wǎng)絡(luò)的一種特例。 2)卷積神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu) 卷積神經(jīng)網(wǎng)絡(luò)是一個多層的神經(jīng)網(wǎng)絡(luò),每層由多個二維平面組成,而每個平面由多個獨立神經(jīng)元組成。
圖:卷積神經(jīng)網(wǎng)絡(luò)的概念示范:輸入圖像通過和三個可訓(xùn)練的濾波器和可加偏置進(jìn)行卷積,濾波過程如圖一,卷積后在C1層產(chǎn)生三個特征映射圖,然后特征映射圖中每組的四個像素再進(jìn)行求和,加權(quán)值,加偏置,通過一個Sigmoid函數(shù)得到三個S2層的特征映射圖。這些映射圖再進(jìn)過濾波得到C3層。這個層級結(jié)構(gòu)再和S2一樣產(chǎn)生S4。最終,這些像素值被光柵化,并連接成一個向量輸入到傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),得到輸出。 一般地,C層為特征提取層,每個神經(jīng)元的輸入與前一層的局部感受野相連,并提取該局部的特征,一旦該局部特征被提取后,它與其他特征間的位置關(guān)系也隨之確定下來;S層是特征映射層,網(wǎng)絡(luò)的每個計算層由多個特征映射組成,每個特征映射為一個平面,平面上所有神經(jīng)元的權(quán)值相等。特征映射結(jié)構(gòu)采用影響函數(shù)核小的sigmoid函數(shù)作為卷積網(wǎng)絡(luò)的激活函數(shù),使得特征映射具有位移不變性。 此外,由于一個映射面上的神經(jīng)元共享權(quán)值,因而減少了網(wǎng)絡(luò)自由參數(shù)的個數(shù),降低了網(wǎng)絡(luò)參數(shù)選擇的復(fù)雜度。卷積神經(jīng)網(wǎng)絡(luò)中的每一個特征提取層(C-層)都緊跟著一個用來求局部平均與二次提取的計算層(S-層),這種特有的兩次特征提取結(jié)構(gòu)使網(wǎng)絡(luò)在識別時對輸入樣本有較高的畸變?nèi)萑棠芰Α?/span> 3)關(guān)于參數(shù)減少與權(quán)值共享 上面聊到,好像CNN一個牛逼的地方就在于通過感受野和權(quán)值共享減少了神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的參數(shù)的個數(shù)。那究竟是啥的呢? 下圖左:如果我們有1000x1000像素的圖像,有1百萬個隱層神經(jīng)元,那么他們?nèi)B接的話(每個隱層神經(jīng)元都連接圖像的每一個像素點),就有1000x1000x1000000=10^12個連接,也就是10^12個權(quán)值參數(shù)。然而圖像的空間聯(lián)系是局部的,就像人是通過一個局部的感受野去感受外界圖像一樣,每一個神經(jīng)元都不需要對全局圖像做感受,每個神經(jīng)元只感受局部的圖像區(qū)域,然后在更高層,將這些感受不同局部的神經(jīng)元綜合起來就可以得到全局的信息了。這樣,我們就可以減少連接的數(shù)目,也就是減少神經(jīng)網(wǎng)絡(luò)需要訓(xùn)練的權(quán)值參數(shù)的個數(shù)了。如下圖右:假如局部感受野是10x10,隱層每個感受野只需要和這10x10的局部圖像相連接,所以1百萬個隱層神經(jīng)元就只有一億個連接,即10^8個參數(shù)。比原來減少了四個0(數(shù)量級),這樣訓(xùn)練起來就沒那么費力了,但還是感覺很多的啊,那還有啥辦法沒?
我們知道,隱含層的每一個神經(jīng)元都連接10x10個圖像區(qū)域,也就是說每一個神經(jīng)元存在10x10=100個連接權(quán)值參數(shù)。那如果我們每個神經(jīng)元這100個參數(shù)是相同的呢?也就是說每個神經(jīng)元用的是同一個卷積核去卷積圖像。這樣我們就只有多少個參數(shù)??只有100個參數(shù)啊?。?!親!不管你隱層的神經(jīng)元個數(shù)有多少,兩層間的連接我只有100個參數(shù)??!親!這就是權(quán)值共享??!親!這就是卷積神經(jīng)網(wǎng)絡(luò)的主打賣點啊!親?。ㄓ悬c煩了,呵呵)也許你會問,這樣做靠譜嗎?為什么可行呢?這個……共同學(xué)習(xí)。 好了,你就會想,這樣提取特征也忒不靠譜吧,這樣你只提取了一種特征啊?對了,真聰明,我們需要提取多種特征對不?假如一種濾波器,也就是一種卷積核就是提出圖像的一種特征,例如某個方向的邊緣。那么我們需要提取不同的特征,怎么辦,加多幾種濾波器不就行了嗎?對了。所以假設(shè)我們加到100種濾波器,每種濾波器的參數(shù)不一樣,表示它提出輸入圖像的不同特征,例如不同的邊緣。這樣每種濾波器去卷積圖像就得到對圖像的不同特征的放映,我們稱之為Feature Map。所以100種卷積核就有100個Feature Map。這100個Feature Map就組成了一層神經(jīng)元。到這個時候明了了吧。我們這一層有多少個參數(shù)了?100種卷積核x每種卷積核共享100個參數(shù)=100x100=10K,也就是1萬個參數(shù)。才1萬個參數(shù)?。∮H?。ㄓ謥砹耍懿涣肆耍。┮娤聢D右:不同的顏色表達(dá)不同的濾波器。
嘿喲,遺漏一個問題了。剛才說隱層的參數(shù)個數(shù)和隱層的神經(jīng)元個數(shù)無關(guān),只和濾波器的大小和濾波器種類的多少有關(guān)。那么隱層的神經(jīng)元個數(shù)怎么確定呢?它和原圖像,也就是輸入的大?。ㄉ窠?jīng)元個數(shù))、濾波器的大小和濾波器在圖像中的滑動步長都有關(guān)!例如,我的圖像是1000x1000像素,而濾波器大小是10x10,假設(shè)濾波器沒有重疊,也就是步長為10,這樣隱層的神經(jīng)元個數(shù)就是(1000x1000 )/ (10x10)=100x100個神經(jīng)元了,假設(shè)步長是8,也就是卷積核會重疊兩個像素,那么……我就不算了,思想懂了就好。注意了,這只是一種濾波器,也就是一個Feature Map的神經(jīng)元個數(shù)哦,如果100個Feature Map就是100倍了。由此可見,圖像越大,神經(jīng)元個數(shù)和需要訓(xùn)練的權(quán)值參數(shù)個數(shù)的貧富差距就越大。
需要注意的一點是,上面的討論都沒有考慮每個神經(jīng)元的偏置部分。所以權(quán)值個數(shù)需要加1 。這個也是同一種濾波器共享的。 總之,卷積網(wǎng)絡(luò)的核心思想是將:局部感受野、權(quán)值共享(或者權(quán)值復(fù)制)以及時間或空間亞采樣這三種結(jié)構(gòu)思想結(jié)合起來獲得了某種程度的位移、尺度、形變不變性。 4)一個典型的例子說明 一種典型的用來識別數(shù)字的卷積網(wǎng)絡(luò)是LeNet-5(效果和paper等見這)。當(dāng)年美國大多數(shù)銀行就是用它來識別支票上面的手寫數(shù)字的。能夠達(dá)到這種商用的地步,它的準(zhǔn)確性可想而知。畢竟目前學(xué)術(shù)界和工業(yè)界的結(jié)合是最受爭議的。
那下面咱們也用這個例子來說明下。
LeNet-5共有7層,不包含輸入,每層都包含可訓(xùn)練參數(shù)(連接權(quán)重)。輸入圖像為32*32大小。這要比Mnist數(shù)據(jù)庫(一個公認(rèn)的手寫數(shù)據(jù)庫)中最大的字母還大。這樣做的原因是希望潛在的明顯特征如筆畫斷電或角點能夠出現(xiàn)在最高層特征監(jiān)測子感受野的中心。 我們先要明確一點:每個層有多個Feature Map,每個Feature Map通過一種卷積濾波器提取輸入的一種特征,然后每個Feature Map有多個神經(jīng)元。 C1層是一個卷積層(為什么是卷積?卷積運算一個重要的特點就是,通過卷積運算,可以使原信號特征增強,并且降低噪音),由6個特征圖Feature Map構(gòu)成。特征圖中每個神經(jīng)元與輸入中5*5的鄰域相連。特征圖的大小為28*28,這樣能防止輸入的連接掉到邊界之外(是為了BP反饋時的計算,不致梯度損失,個人見解)。C1有156個可訓(xùn)練參數(shù)(每個濾波器5*5=25個unit參數(shù)和一個bias參數(shù),一共6個濾波器,共(5*5+1)*6=156個參數(shù)),共156*(28*28)=122,304個連接。 S2層是一個下采樣層(為什么是下采樣?利用圖像局部相關(guān)性的原理,對圖像進(jìn)行子抽樣,可以減少數(shù)據(jù)處理量同時保留有用信息),有6個14*14的特征圖。特征圖中的每個單元與C1中相對應(yīng)特征圖的2*2鄰域相連接。S2層每個單元的4個輸入相加,乘以一個可訓(xùn)練參數(shù),再加上一個可訓(xùn)練偏置。結(jié)果通過sigmoid函數(shù)計算??捎?xùn)練系數(shù)和偏置控制著sigmoid函數(shù)的非線性程度。如果系數(shù)比較小,那么運算近似于線性運算,亞采樣相當(dāng)于模糊圖像。如果系數(shù)比較大,根據(jù)偏置的大小亞采樣可以被看成是有噪聲的“或”運算或者有噪聲的“與”運算。每個單元的2*2感受野并不重疊,因此S2中每個特征圖的大小是C1中特征圖大小的1/4(行和列各1/2)。S2層有12個可訓(xùn)練參數(shù)和5880個連接。
圖:卷積和子采樣過程:卷積過程包括:用一個可訓(xùn)練的濾波器fx去卷積一個輸入的圖像(第一階段是輸入的圖像,后面的階段就是卷積特征map了),然后加一個偏置bx,得到卷積層Cx。子采樣過程包括:每鄰域四個像素求和變?yōu)橐粋€像素,然后通過標(biāo)量Wx+1加權(quán),再增加偏置bx+1,然后通過一個sigmoid激活函數(shù),產(chǎn)生一個大概縮小四倍的特征映射圖Sx+1。 所以從一個平面到下一個平面的映射可以看作是作卷積運算,S-層可看作是模糊濾波器,起到二次特征提取的作用。隱層與隱層之間空間分辨率遞減,而每層所含的平面數(shù)遞增,這樣可用于檢測更多的特征信息。 C3層也是一個卷積層,它同樣通過5x5的卷積核去卷積層S2,然后得到的特征map就只有10x10個神經(jīng)元,但是它有16種不同的卷積核,所以就存在16個特征map了。這里需要注意的一點是:C3中的每個特征map是連接到S2中的所有6個或者幾個特征map的,表示本層的特征map是上一層提取到的特征map的不同組合(這個做法也并不是唯一的)。(看到?jīng)]有,這里是組合,就像之前聊到的人的視覺系統(tǒng)一樣,底層的結(jié)構(gòu)構(gòu)成上層更抽象的結(jié)構(gòu),例如邊緣構(gòu)成形狀或者目標(biāo)的部分)。 剛才說C3中每個特征圖由S2中所有6個或者幾個特征map組合而成。為什么不把S2中的每個特征圖連接到每個C3的特征圖呢?原因有2點。第一,不完全的連接機制將連接的數(shù)量保持在合理的范圍內(nèi)。第二,也是最重要的,其破壞了網(wǎng)絡(luò)的對稱性。由于不同的特征圖有不同的輸入,所以迫使他們抽取不同的特征(希望是互補的)。 例如,存在的一個方式是:C3的前6個特征圖以S2中3個相鄰的特征圖子集為輸入。接下來6個特征圖以S2中4個相鄰特征圖子集為輸入。然后的3個以不相鄰的4個特征圖子集為輸入。最后一個將S2中所有特征圖為輸入。這樣C3層有1516個可訓(xùn)練參數(shù)和151600個連接。 S4層是一個下采樣層,由16個5*5大小的特征圖構(gòu)成。特征圖中的每個單元與C3中相應(yīng)特征圖的2*2鄰域相連接,跟C1和S2之間的連接一樣。S4層有32個可訓(xùn)練參數(shù)(每個特征圖1個因子和一個偏置)和2000個連接。 C5層是一個卷積層,有120個特征圖。每個單元與S4層的全部16個單元的5*5鄰域相連。由于S4層特征圖的大小也為5*5(同濾波器一樣),故C5特征圖的大小為1*1:這構(gòu)成了S4和C5之間的全連接。之所以仍將C5標(biāo)示為卷積層而非全相聯(lián)層,是因為如果LeNet-5的輸入變大,而其他的保持不變,那么此時特征圖的維數(shù)就會比1*1大。C5層有48120個可訓(xùn)練連接。 F6層有84個單元(之所以選這個數(shù)字的原因來自于輸出層的設(shè)計),與C5層全相連。有10164個可訓(xùn)練參數(shù)。如同經(jīng)典神經(jīng)網(wǎng)絡(luò),F(xiàn)6層計算輸入向量和權(quán)重向量之間的點積,再加上一個偏置。然后將其傳遞給sigmoid函數(shù)產(chǎn)生單元i的一個狀態(tài)。 最后,輸出層由歐式徑向基函數(shù)(Euclidean Radial Basis Function)單元組成,每類一個單元,每個有84個輸入。換句話說,每個輸出RBF單元計算輸入向量和參數(shù)向量之間的歐式距離。輸入離參數(shù)向量越遠(yuǎn),RBF輸出的越大。一個RBF輸出可以被理解為衡量輸入模式和與RBF相關(guān)聯(lián)類的一個模型的匹配程度的懲罰項。用概率術(shù)語來說,RBF輸出可以被理解為F6層配置空間的高斯分布的負(fù)log-likelihood。給定一個輸入模式,損失函數(shù)應(yīng)能使得F6的配置與RBF參數(shù)向量(即模式的期望分類)足夠接近。這些單元的參數(shù)是人工選取并保持固定的(至少初始時候如此)。這些參數(shù)向量的成分被設(shè)為-1或1。雖然這些參數(shù)可以以-1和1等概率的方式任選,或者構(gòu)成一個糾錯碼,但是被設(shè)計成一個相應(yīng)字符類的7*12大?。?4)的格式化圖片。這種表示對識別單獨的數(shù)字不是很有用,但是對識別可打印ASCII集中的字符串很有用。 使用這種分布編碼而非更常用的“1 of N”編碼用于產(chǎn)生輸出的另一個原因是,當(dāng)類別比較大的時候,非分布編碼的效果比較差。原因是大多數(shù)時間非分布編碼的輸出必須為0。這使得用sigmoid單元很難實現(xiàn)。另一個原因是分類器不僅用于識別字母,也用于拒絕非字母。使用分布編碼的RBF更適合該目標(biāo)。因為與sigmoid不同,他們在輸入空間的較好限制的區(qū)域內(nèi)興奮,而非典型模式更容易落到外邊。 RBF參數(shù)向量起著F6層目標(biāo)向量的角色。需要指出這些向量的成分是+1或-1,這正好在F6 sigmoid的范圍內(nèi),因此可以防止sigmoid函數(shù)飽和。實際上,+1和-1是sigmoid函數(shù)的最大彎曲的點處。這使得F6單元運行在最大非線性范圍內(nèi)。必須避免sigmoid函數(shù)的飽和,因為這將會導(dǎo)致?lián)p失函數(shù)較慢的收斂和病態(tài)問題。 5)訓(xùn)練過程 神經(jīng)網(wǎng)絡(luò)用于模式識別的主流是有指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò),無指導(dǎo)學(xué)習(xí)網(wǎng)絡(luò)更多的是用于聚類分析。對于有指導(dǎo)的模式識別,由于任一樣本的類別是已知的,樣本在空間的分布不再是依據(jù)其自然分布傾向來劃分,而是要根據(jù)同類樣本在空間的分布及不同類樣本之間的分離程度找一種適當(dāng)?shù)目臻g劃分方法,或者找到一個分類邊界,使得不同類樣本分別位于不同的區(qū)域內(nèi)。這就需要一個長時間且復(fù)雜的學(xué)習(xí)過程,不斷調(diào)整用以劃分樣本空間的分類邊界的位置,使盡可能少的樣本被劃分到非同類區(qū)域中。 卷積網(wǎng)絡(luò)在本質(zhì)上是一種輸入到輸出的映射,它能夠?qū)W習(xí)大量的輸入與輸出之間的映射關(guān)系,而不需要任何輸入和輸出之間的精確的數(shù)學(xué)表達(dá)式,只要用已知的模式對卷積網(wǎng)絡(luò)加以訓(xùn)練,網(wǎng)絡(luò)就具有輸入輸出對之間的映射能力。卷積網(wǎng)絡(luò)執(zhí)行的是有導(dǎo)師訓(xùn)練,所以其樣本集是由形如:(輸入向量,理想輸出向量)的向量對構(gòu)成的。所有這些向量對,都應(yīng)該是來源于網(wǎng)絡(luò)即將模擬的系統(tǒng)的實際“運行”結(jié)果。它們可以是從實際運行系統(tǒng)中采集來的。在開始訓(xùn)練前,所有的權(quán)都應(yīng)該用一些不同的小隨機數(shù)進(jìn)行初始化?!靶‰S機數(shù)”用來保證網(wǎng)絡(luò)不會因權(quán)值過大而進(jìn)入飽和狀態(tài),從而導(dǎo)致訓(xùn)練失??;“不同”用來保證網(wǎng)絡(luò)可以正常地學(xué)習(xí)。實際上,如果用相同的數(shù)去初始化權(quán)矩陣,則網(wǎng)絡(luò)無能力學(xué)習(xí)。 訓(xùn)練算法與傳統(tǒng)的BP算法差不多。主要包括4步,這4步被分為兩個階段: 第一階段,向前傳播階段: a)從樣本集中取一個樣本(X,Yp),將X輸入網(wǎng)絡(luò); b)計算相應(yīng)的實際輸出Op。 在此階段,信息從輸入層經(jīng)過逐級的變換,傳送到輸出層。這個過程也是網(wǎng)絡(luò)在完成訓(xùn)練后正常運行時執(zhí)行的過程。在此過程中,網(wǎng)絡(luò)執(zhí)行的是計算(實際上就是輸入與每層的權(quán)值矩陣相點乘,得到最后的輸出結(jié)果): Op=Fn(…(F2(F1(XpW(1))W(2))…)W(n)) 第二階段,向后傳播階段 a)算實際輸出Op與相應(yīng)的理想輸出Yp的差; b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣。 6)卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)點 卷積神經(jīng)網(wǎng)絡(luò)CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形。由于CNN的特征檢測層通過訓(xùn)練數(shù)據(jù)進(jìn)行學(xué)習(xí),所以在使用CNN時,避免了顯式的特征抽取,而隱式地從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí);再者由于同一特征映射面上的神經(jīng)元權(quán)值相同,所以網(wǎng)絡(luò)可以并行學(xué)習(xí),這也是卷積網(wǎng)絡(luò)相對于神經(jīng)元彼此相連網(wǎng)絡(luò)的一大優(yōu)勢。卷積神經(jīng)網(wǎng)絡(luò)以其局部權(quán)值共享的特殊結(jié)構(gòu)在語音識別和圖像處理方面有著獨特的優(yōu)越性,其布局更接近于實際的生物神經(jīng)網(wǎng)絡(luò),權(quán)值共享降低了網(wǎng)絡(luò)的復(fù)雜性,特別是多維輸入向量的圖像可以直接輸入網(wǎng)絡(luò)這一特點避免了特征提取和分類過程中數(shù)據(jù)重建的復(fù)雜度。 流的分類方式幾乎都是基于統(tǒng)計特征的,這就意味著在進(jìn)行分辨前必須提取某些特征。然而,顯式的特征提取并不容易,在一些應(yīng)用問題中也并非總是可靠的。卷積神經(jīng)網(wǎng)絡(luò),它避免了顯式的特征取樣,隱式地從訓(xùn)練數(shù)據(jù)中進(jìn)行學(xué)習(xí)。這使得卷積神經(jīng)網(wǎng)絡(luò)明顯有別于其他基于神經(jīng)網(wǎng)絡(luò)的分類器,通過結(jié)構(gòu)重組和減少權(quán)值將特征提取功能融合進(jìn)多層感知器。它可以直接處理灰度圖片,能夠直接用于處理基于圖像的分類。 卷積網(wǎng)絡(luò)較一般神經(jīng)網(wǎng)絡(luò)在圖像處理方面有如下優(yōu)點: a)輸入圖像和網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)能很好的吻合;b)特征提取和模式分類同時進(jìn)行,并同時在訓(xùn)練中產(chǎn)生;c)權(quán)重共享可以減少網(wǎng)絡(luò)的訓(xùn)練參數(shù),使神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)變得更簡單,適應(yīng)性更強。 7)小結(jié) CNNs中這種層間聯(lián)系和空域信息的緊密關(guān)系,使其適于圖像處理和理解。而且,其在自動提取圖像的顯著特征方面還表現(xiàn)出了比較優(yōu)的性能。在一些例子當(dāng)中,Gabor濾波器已經(jīng)被使用在一個初始化預(yù)處理的步驟中,以達(dá)到模擬人類視覺系統(tǒng)對視覺刺激的響應(yīng)。在目前大部分的工作中,研究者將CNNs應(yīng)用到了多種機器學(xué)習(xí)問題中,包括人臉識別,文檔分析和語言檢測等。為了達(dá)到尋找視頻中幀與幀之間的相干性的目的,目前CNNs通過一個時間相干性去訓(xùn)練,但這個不是CNNs特有的。
十、總結(jié)與展望 1)Deep learning總結(jié) 深度學(xué)習(xí)是關(guān)于自動學(xué)習(xí)要建模的數(shù)據(jù)的潛在(隱含)分布的多層(復(fù)雜)表達(dá)的算法。換句話來說,深度學(xué)習(xí)算法自動的提取分類需要的低層次或者高層次特征。高層次特征,一是指該特征可以分級(層次)地依賴其他特征,例如:對于機器視覺,深度學(xué)習(xí)算法從原始圖像去學(xué)習(xí)得到它的一個低層次表達(dá),例如邊緣檢測器,小波濾波器等,然后在這些低層次表達(dá)的基礎(chǔ)上再建立表達(dá),例如這些低層次表達(dá)的線性或者非線性組合,然后重復(fù)這個過程,最后得到一個高層次的表達(dá)。 Deep learning能夠得到更好地表示數(shù)據(jù)的feature,同時由于模型的層次、參數(shù)很多,capacity足夠,因此,模型有能力表示大規(guī)模數(shù)據(jù),所以對于圖像、語音這種特征不明顯(需要手工設(shè)計且很多沒有直觀物理含義)的問題,能夠在大規(guī)模訓(xùn)練數(shù)據(jù)上取得更好的效果。此外,從模式識別特征和分類器的角度,deep learning框架將feature和分類器結(jié)合到一個框架中,用數(shù)據(jù)去學(xué)習(xí)feature,在使用中減少了手工設(shè)計feature的巨大工作量(這是目前工業(yè)界工程師付出努力最多的方面),因此,不僅僅效果可以更好,而且,使用起來也有很多方便之處,因此,是十分值得關(guān)注的一套框架,每個做ML的人都應(yīng)該關(guān)注了解一下。 當(dāng)然,deep learning本身也不是完美的,也不是解決世間任何ML問題的利器,不應(yīng)該被放大到一個無所不能的程度。 2)Deep learning未來 深度學(xué)習(xí)目前仍有大量工作需要研究。目前的關(guān)注點還是從機器學(xué)習(xí)的領(lǐng)域借鑒一些可以在深度學(xué)習(xí)使用的方法,特別是降維領(lǐng)域。例如:目前一個工作就是稀疏編碼,通過壓縮感知理論對高維數(shù)據(jù)進(jìn)行降維,使得非常少的元素的向量就可以精確的代表原來的高維信號。另一個例子就是半監(jiān)督流行學(xué)習(xí),通過測量訓(xùn)練樣本的相似性,將高維數(shù)據(jù)的這種相似性投影到低維空間。另外一個比較鼓舞人心的方向就是evolutionary programming approaches(遺傳編程方法),它可以通過最小化工程能量去進(jìn)行概念性自適應(yīng)學(xué)習(xí)和改變核心架構(gòu)。 Deep learning還有很多核心的問題需要解決: (1)對于一個特定的框架,對于多少維的輸入它可以表現(xiàn)得較優(yōu)(如果是圖像,可能是上百萬維)? (2)對捕捉短時或者長時間的時間依賴,哪種架構(gòu)才是有效的? (3)如何對于一個給定的深度學(xué)習(xí)架構(gòu),融合多種感知的信息? (4)有什么正確的機理可以去增強一個給定的深度學(xué)習(xí)架構(gòu),以改進(jìn)其魯棒性和對扭曲和數(shù)據(jù)丟失的不變性? (5)模型方面是否有其他更為有效且有理論依據(jù)的深度模型學(xué)習(xí)算法? 探索新的特征提取模型是值得深入研究的內(nèi)容。此外有效的可并行訓(xùn)練算法也是值得研究的一個方向。當(dāng)前基于最小批處理的隨機梯度優(yōu)化算法很難在多計算機中進(jìn)行并行訓(xùn)練。通常辦法是利用圖形處理單元加速學(xué)習(xí)過程。然而單個機器GPU對大規(guī)模數(shù)據(jù)識別或相似任務(wù)數(shù)據(jù)集并不適用。在深度學(xué)習(xí)應(yīng)用拓展方面,如何合理充分利用深度學(xué)習(xí)在增強傳統(tǒng)學(xué)習(xí)算法的性能仍是目前各領(lǐng)域的研究重點。
十一、參考文獻(xiàn)和Deep Learning學(xué)習(xí)資源 先是機器學(xué)習(xí)領(lǐng)域大牛的微博:@余凱_西二旗民工;@老師木;@梁斌penny;@張棟_機器學(xué)習(xí);@鄧侃;@大數(shù)據(jù)皮東;@djvu9…… (1)Deep Learning (2)Deep Learning Methods for Vision http://cs./~fergus/tutorials/deep_learning_cvpr12/ (3)Neural Network for Recognition of Handwritten Digits[Project] http://www./Articles/16650/Neural-Network-for-Recognition-of-Handwritten-Digi (4)Training a deep autoencoder or a classifier on MNIST digits http://www.cs./~hinton/MatlabForSciencePaper.html (5)Ersatz:deep neural networks in the cloud (6)Deep Learning http://www.cs./~yann/research/deep/ (7)Invited talk "A Tutorial on Deep Learning" by Dr. Kai Yu (余凱) http://vipl./News/academic-report-tutorial-deep-learning-dr-kai-yu (8)CNN - Convolutional neural network class http://www./matlabcentral/fileexchange/24291 (9)Yann LeCun's Publications http://yann./exdb/publis/index.html#lecun-98 (10) LeNet-5, convolutional neural networks http://yann./exdb/lenet/index.html (11) Deep Learning 大牛Geoffrey E. Hinton's HomePage (12)Sparse coding simulation software[Project] http://redwood./bruno/sparsenet/ (13)Andrew Ng's homepage (14)stanford deep learning tutorial http://deeplearning./wiki/index.php/UFLDL_Tutorial (15)「深度神經(jīng)網(wǎng)絡(luò)」(deep neural network)具體是怎樣工作的 http://www.zhihu.com/question/19833708?group_id=15019075#1657279 (16)A shallow understanding on deep learning http://blog.sina.com.cn/s/blog_6ae183910101dw2z.html (17)Bengio's Learning Deep Architectures for AI http://www.iro./~bengioy/papers/ftml_book.pdf (18)andrew ng's talk video: http:///talks/machine-learning-and-ai-via-brain-simulations/57862/ (19)cvpr 2012 tutorial: http://cs./~fergus/tutorials/deep_learning_cvpr12/tutorial_p2_nnets_ranzato_short.pdf (20)Andrew ng清華報告聽后感 http://blog.sina.com.cn/s/blog_593af2a70101bqyo.html (21)Kai Yu:CVPR12 Tutorial on Deep Learning Sparse Coding (22)Honglak Lee:Deep Learning Methods for Vision (23)Andrew Ng :Machine Learning and AI via Brain simulations (24)Deep Learning 【2,3】 http://blog.sina.com.cn/s/blog_46d0a3930101gs5h.html (25)deep learning這件小事…… http://blog.sina.com.cn/s/blog_67fcf49e0101etab.html (26)Yoshua Bengio, U. Montreal:Learning Deep Architectures (27)Kai Yu:A Tutorial on Deep Learning (28)Marc'Aurelio Ranzato:NEURAL NETS FOR VISION (29)Unsupervised feature learning and deep learning http://blog.csdn.net/abcjennifer/article/details/7804962 (30)機器學(xué)習(xí)前沿?zé)狳c–Deep Learning (31)機器學(xué)習(xí)——深度學(xué)習(xí)(Deep Learning) http://blog.csdn.net/abcjennifer/article/details/7826917 (32)卷積神經(jīng)網(wǎng)絡(luò) http://wenku.baidu.com/view/cd16fb8302d276a200292e22.html (33)淺談Deep Learning的基本思想和方法 http://blog.csdn.net/xianlingmao/article/details/8478562 (34)深度神經(jīng)網(wǎng)絡(luò) http://blog.csdn.net/txdb/article/details/6766373 (35)Google的貓臉識別:人工智能的新突破 http://www.36kr.com/p/122132.html (36)余凱,深度學(xué)習(xí)-機器學(xué)習(xí)的新浪潮,Technical News程序天下事 http://blog.csdn.net/datoubo/article/details/8577366 (37)Geoffrey Hinton:UCLTutorial on: Deep Belief Nets (38)Learning Deep Boltzmann Machines http://web./~rsalakhu/www/DBM.html (39)Efficient Sparse Coding Algorithm http://blog.sina.com.cn/s/blog_62af19190100gux1.html (40)Itamar Arel, Derek C. Rose, and Thomas P. Karnowski: Deep Machine Learning—A New Frontier in Artificial Intelligence Research (41)Francis Quintal Lauzon:An introduction to deep learning (42)Tutorial on Deep Learning and Applications (43)Boltzmann神經(jīng)網(wǎng)絡(luò)模型與學(xué)習(xí)算法 http://wenku.baidu.com/view/490dcf748e9951e79b892785.html (44)Deep Learning 和 Knowledge Graph 引爆大數(shù)據(jù)革命 |
|