深度学习常见算法的介绍
原文鏈接:http://www.notescloud.top/cloudSearch/detail?id=2356
深度學(xué)習(xí)常見算法的介紹
好書推薦
深度學(xué)習(xí)算法實(shí)踐.pdf:
http://www.notescloud.top/cloudSearch/detail?id=2355
很多人都有誤解,以為深度學(xué)習(xí)比機(jī)器學(xué)習(xí)先進(jìn)。其實(shí)深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支。可以理解為具有多層結(jié)構(gòu)的模型。具體的話,深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中的具有深層結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)算法,即機(jī)器學(xué)習(xí)>神經(jīng)網(wǎng)絡(luò)算法>深度神經(jīng)網(wǎng)絡(luò)(深度學(xué)習(xí))。
關(guān)于深度學(xué)習(xí)的理論推導(dǎo),太大太復(fù)雜,一些常見的深度學(xué)習(xí)算法本人也是模模糊糊的,看過好多次的,隔斷時(shí)間就會(huì)忘記,現(xiàn)在對(duì)其系統(tǒng)的整理一下(從歷史,致命問題出發(fā),再看具體算法的思想,框架,優(yōu)缺點(diǎn)和改進(jìn)的方向,又總結(jié)了CNN和RNN的比較)。
一、歷史:多層感知機(jī)到神經(jīng)網(wǎng)絡(luò),再到深度學(xué)習(xí)
神經(jīng)網(wǎng)絡(luò)技術(shù)起源于上世紀(jì)五、六十年代,當(dāng)時(shí)叫感知機(jī)(perceptron),擁有輸入層、輸出層和一個(gè)隱含層。輸入的特征向量通過隱含層變換達(dá)到輸出層,在輸出層得到分類結(jié)果。(扯一個(gè)不相關(guān)的:由于計(jì)算技術(shù)的落后,當(dāng)時(shí)感知器傳輸函數(shù)是用線拉動(dòng)變阻器改變電阻的方法機(jī)械實(shí)現(xiàn)的,腦補(bǔ)一下科學(xué)家們扯著密密麻麻的導(dǎo)線的樣子…)
心理學(xué)家Rosenblatt提出的單層感知機(jī)有一個(gè)嚴(yán)重得不能再嚴(yán)重的問題,即它對(duì)稍復(fù)雜一些的函數(shù)都無能為力(比如最為典型的"異或"操作)。
這個(gè)缺點(diǎn)直到上世紀(jì)八十年代才被Rumelhart、Williams、Hinton、LeCun等人發(fā)明的多層感知機(jī)解決,多層感知機(jī)解決了之前無法模擬異或邏輯的缺陷,同時(shí)更多的層數(shù)也讓網(wǎng)絡(luò)更能夠刻畫現(xiàn)實(shí)世界中的復(fù)雜情形。
多層感知機(jī)可以擺脫早期離散傳輸函數(shù)的束縛,使用sigmoid或tanh等連續(xù)函數(shù)模擬神經(jīng)元對(duì)激勵(lì)的響應(yīng),在訓(xùn)練算法上則使用Werbos發(fā)明的反向傳播BP算法。這就是我們現(xiàn)在所說的【神經(jīng)網(wǎng)絡(luò)】,BP算法也叫BP神經(jīng)網(wǎng)絡(luò)具體過程可參見我轉(zhuǎn)載的文章(http://blog.csdn.net/abc200941410128/article/details/78708319)。
但是BP神經(jīng)網(wǎng)絡(luò)(多層感知機(jī))面臨在致命問題(見下節(jié))。隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,有兩個(gè)重大問題:一是優(yōu)化函數(shù)越來越容易陷入局部最優(yōu)解,并且這個(gè)"陷阱"越來越偏離真正的全局最優(yōu)。利用有限數(shù)據(jù)訓(xùn)練的深層網(wǎng)絡(luò),性能還不如較淺層網(wǎng)絡(luò)。同時(shí),另一個(gè)不可忽略的問題是"梯度消失"現(xiàn)象更加嚴(yán)重。
2006年,Hinton利用預(yù)訓(xùn)練方法緩解了局部最優(yōu)解問題,將隱含層推動(dòng)到了7層,神經(jīng)網(wǎng)絡(luò)真正意義上有了"深度",由此揭開了深度學(xué)習(xí)的熱潮,隨后的DBN、CNN、RNN、LSTM等才逐漸出現(xiàn)。
這里的"深度"并沒有固定的定義------在語音識(shí)別中4層網(wǎng)絡(luò)就能夠被認(rèn)為是"較深的",而在圖像識(shí)別中20層以上的網(wǎng)絡(luò)屢見不鮮。
為了克服梯度消失,ReLU、maxout等傳輸函數(shù)代替了sigmoid,形成了如今DNN的基本形式。單從結(jié)構(gòu)上來說,全鏈接的多層感知機(jī)是沒有任何區(qū)別的。
二、深度神經(jīng)網(wǎng)絡(luò)的致命問題
隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,有三個(gè)重大問題:一是非凸優(yōu)化問題,即優(yōu)化函數(shù)越來越容易陷入局部最優(yōu)解;二是(Gradient Vanish)梯度消失問題;三是過擬合問題。
2.1 非凸優(yōu)化問題
線性回歸,本質(zhì)是一個(gè)多元一次函數(shù)的優(yōu)化問題,設(shè)f(x,y)=x+y
多層神經(jīng)網(wǎng)絡(luò),本質(zhì)是一個(gè)多元K次函數(shù)優(yōu)化問題,設(shè)f(x,y)=xy
在線性回歸當(dāng)中,從任意一個(gè)點(diǎn)出發(fā)搜索,最終必然是下降到全局最小值附近的。所以置0也無妨(這也是為什么我們往往解線性回歸方程時(shí)初值為0)。
而在多層神經(jīng)網(wǎng)絡(luò)中,從不同點(diǎn)出發(fā),可能最終困在局部最小值。局部最小值是神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)帶來的揮之不去的陰影,隨著隱層層數(shù)的增加,非凸的目標(biāo)函數(shù)越來越復(fù)雜,局部最小值點(diǎn)成倍增長(zhǎng),利用有限數(shù)據(jù)訓(xùn)練的深層網(wǎng)絡(luò),性能還不如較淺層網(wǎng)絡(luò)。。避免的方法一般是權(quán)值初始化。為了統(tǒng)一初始化方案,通常將輸入縮放到[?1,1],但是仍然無法保證能夠達(dá)到全局最優(yōu),其實(shí)這也是科學(xué)家們一直在研究而未解決的問題。
所以,從本質(zhì)上來看,深度結(jié)構(gòu)帶來的非凸優(yōu)化仍然不能解決(包括現(xiàn)在的各類深度學(xué)習(xí)算法和其他非凸優(yōu)化問題都是如此),這限制著深度結(jié)構(gòu)的發(fā)展。
2.2 (Gradient Vanish)梯度消失問題
這個(gè)問題實(shí)際上是由激活函數(shù)不當(dāng)引起的,多層使用Sigmoid系函數(shù),會(huì)使得誤差從輸出層開始呈指數(shù)衰減。在數(shù)學(xué)上,激活函數(shù)的作用就是將輸入數(shù)據(jù)映射到0到1上(tanh是映射-1到+1上)。至于映射的原因,除了對(duì)數(shù)據(jù)進(jìn)行正則化外,大概是控制數(shù)據(jù),使其只在一定的范圍內(nèi)。當(dāng)然也有另外細(xì)節(jié)作用,例如Sigmoid(tanh)中,能在激活的時(shí)候,更關(guān)注數(shù)據(jù)在零(或中心點(diǎn))前后的細(xì)小變化,而忽略數(shù)據(jù)在極端時(shí)的變化,例如ReLU還有避免梯度消失的作用。通常,Sigmoid(tanh)多用于全連接層,而ReLU多用于卷積層。
Sigmoid
ReLU
"梯度消失"現(xiàn)象具體來說,我們常常使用sigmoid作為神經(jīng)元的輸入輸出函數(shù)。對(duì)于幅度為1的信號(hào),在BP反向傳播梯度時(shí),每傳遞一層,梯度衰減為原來的0.25。層數(shù)一多,梯度指數(shù)衰減后低層基本上接受不到有效的訓(xùn)練信號(hào)。
幸運(yùn)的是,這個(gè)問題已經(jīng)被Hinton在2006年提出的逐層貪心預(yù)訓(xùn)練權(quán)值矩陣變向減輕,最近提出的ReLu則從根本上提出了解決方案。
2012年,Hinton組的Alex Krizhevsky率先將受到Gradient Vanish影響較小的CNN中大規(guī)模使用新提出的ReLu函數(shù)。
2014年,Google研究員賈揚(yáng)清則利用ReLu這個(gè)神器,成功將CNN擴(kuò)展到了22層巨型深度網(wǎng)絡(luò),見知乎。
對(duì)于深受Gradient Vanish困擾的RNN,其變種LSTM也克服了這個(gè)問題。
2.3 過擬合問題
這就是神經(jīng)網(wǎng)絡(luò)的最后一個(gè)致命問題:過擬合,龐大的結(jié)構(gòu)和參數(shù)使得,盡管訓(xùn)練error降的很低,但是test error卻高的離譜。
過擬合還可以和Gradient Vanish、局部最小值混合三打,具體玩法是這樣的:
由于Gradient Vanish,導(dǎo)致深度結(jié)構(gòu)的較低層幾乎無法訓(xùn)練,而較高層卻非常容易訓(xùn)練。
較低層由于無法訓(xùn)練,很容易把原始輸入信息,沒有經(jīng)過任何非線性變換,或者錯(cuò)誤變換推到高層去,使得高層解離特征壓力太大。
如果特征無法解離,強(qiáng)制性的誤差監(jiān)督訓(xùn)練就會(huì)使得模型對(duì)輸入數(shù)據(jù)直接做擬合。
其結(jié)果就是,A Good Optimation But a Poor Generalization,這也是SVM、決策樹等淺層結(jié)構(gòu)的毛病。
Bengio指出,這些利用局部數(shù)據(jù)做優(yōu)化的淺層結(jié)構(gòu)基于先驗(yàn)知識(shí)(Prior): Smoothness
即,給定樣本(xi,yi),盡可能從數(shù)值上做優(yōu)化,使得訓(xùn)練出來的模型,對(duì)于近似的x,輸出近似的y。
然而一旦輸入值做了泛型遷移,比如兩種不同的鳥,鳥的顏色有別,且在圖像中的比例不一,那么SVM、決策樹幾乎毫無用處。
因?yàn)?#xff0c;對(duì)輸入數(shù)據(jù)簡(jiǎn)單地做數(shù)值化學(xué)習(xí),而不是解離出特征,對(duì)于高維數(shù)據(jù)(如圖像、聲音、文本),是毫無意義的。
然后就是最后的事了,由于低層學(xué)不動(dòng),高層在亂學(xué),所以很快就掉進(jìn)了吸引盆中,完成神經(jīng)網(wǎng)絡(luò)三殺。
三、深度學(xué)習(xí)里面的基本模型
深度學(xué)習(xí)里面的基本模型大致分為了3類:多層感知機(jī)模型;深度神經(jīng)網(wǎng)絡(luò)模型和遞歸神經(jīng)網(wǎng)絡(luò)模型。其代表分別是DBN(Deep belief network) 深度信念網(wǎng)絡(luò)、CNN(Convolution Neural Networks)卷積神經(jīng)網(wǎng)絡(luò)、RNN(Recurrent neural network) 遞歸神經(jīng)網(wǎng)絡(luò)。
3.1 DBN(Deep belief network) 深度信念網(wǎng)絡(luò)
2006年,Geoffrey Hinton提出深度信念網(wǎng)絡(luò)(DBN)及其高效的學(xué)習(xí)算法,即Pre-training+Fine tuning,并發(fā)表于《Science》上,成為其后深度學(xué)習(xí)算法的主要框架。DBN是一種生成模型,通過訓(xùn)練其神經(jīng)元間的權(quán)重,我們可以讓整個(gè)神經(jīng)網(wǎng)絡(luò)按照最大概率來生成訓(xùn)練數(shù)據(jù)。所以,我們不僅可以使用DBN識(shí)別特征、分類數(shù)據(jù),還可以用它來生成數(shù)據(jù)。
3.1.1 網(wǎng)絡(luò)結(jié)構(gòu)
深度信念網(wǎng)絡(luò)(DBN)由若干層受限玻爾茲曼機(jī)(RBM)堆疊而成,上一層RBM的隱層作為下一層RBM的可見層。
(1) RBM
一個(gè)普通的RBM網(wǎng)絡(luò)結(jié)構(gòu)如上圖所示,是一個(gè)雙層模型,由m個(gè)可見層單元及n個(gè)隱層單元組成,其中,層內(nèi)神經(jīng)元無連接,層間神經(jīng)元全連接,也就是說:在給定可見層狀態(tài)時(shí),隱層的激活狀態(tài)條件獨(dú)立,反之,當(dāng)給定隱層狀態(tài)時(shí),可見層的激活狀態(tài)條件獨(dú)立。這保證了層內(nèi)神經(jīng)元之間的條件獨(dú)立性,降低概率分布計(jì)算及訓(xùn)練的復(fù)雜度。RBM可以被視為一個(gè)無向圖模型,可見層神經(jīng)元與隱層神經(jīng)元之間的連接權(quán)重是雙向的,即可見層到隱層的連接權(quán)重為W,則隱層到可見層的連接權(quán)重為W’。除以上提及的參數(shù)外,RBM的參數(shù)還包括可見層偏置b及隱層偏置c。RBM可見層和隱層單元所定義的分布可根據(jù)實(shí)際需要更換,包括:Binary單元、Gaussian單元、Rectified Linear單元等,這些不同單元的主要區(qū)別在于其激活函數(shù)不同
(2) DBN
DBN模型由若干層RBM堆疊而成,如果在訓(xùn)練集中有標(biāo)簽數(shù)據(jù),那么最后一層RBM的可見層中既包含前一層RBM的隱層單元,也包含標(biāo)簽層單元。假設(shè)頂層RBM的可見層有500個(gè)神經(jīng)元,訓(xùn)練數(shù)據(jù)的分類一共分成了10類,那么頂層RBM的可見層有510個(gè)顯性神經(jīng)元,對(duì)每一訓(xùn)練數(shù)據(jù),相應(yīng)的標(biāo)簽神經(jīng)元被打開設(shè)為1,而其他的則被關(guān)閉設(shè)為0
3.1.2 訓(xùn)練過程和優(yōu)缺點(diǎn)
DBN的訓(xùn)練包括Pre-training和Fine tuning兩步,其中Pre-training過程相當(dāng)于逐層訓(xùn)練每一個(gè)RBM,經(jīng)過Pre-training的DBN已經(jīng)可用于模擬訓(xùn)練數(shù)據(jù),而為了進(jìn)一步提高網(wǎng)絡(luò)的判別性能, Fine tuning過程利用標(biāo)簽數(shù)據(jù)通過BP算法對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行微調(diào)。
對(duì)DBN優(yōu)缺點(diǎn)的總結(jié)主要集中在生成模型與判別模型的優(yōu)缺點(diǎn)總結(jié)上。
1、優(yōu)點(diǎn):
- 生成模型學(xué)習(xí)聯(lián)合概率密度分布,所以就可以從統(tǒng)計(jì)的角度表示數(shù)據(jù)的分布情況,能夠反映同類數(shù)據(jù)本身的相似度;
- 生成模型可以還原出條件概率分布,此時(shí)相當(dāng)于判別模型,而判別模型無法得到聯(lián)合分布,所以不能當(dāng)成生成模型使用。
2、缺點(diǎn):
- 生成模型不關(guān)心不同類別之間的最優(yōu)分類面到底在哪兒,所以用于分類問題時(shí),分類精度可能沒有判別模型高;
- 由于生成模型學(xué)習(xí)的是數(shù)據(jù)的聯(lián)合分布,因此在某種程度上學(xué)習(xí)問題的復(fù)雜性更高。
- 要求輸入數(shù)據(jù)具有平移不變性。
關(guān)于 判別模型與生成模型可以參看(http://blog.csdn.net/erlib/article/details/53585134)
3.1.3 改進(jìn)模型
DBN的變體比較多,它的改進(jìn)主要集中于其組成"零件"RBM的改進(jìn),有卷積DBN(CDBN)和條件RBM(Conditional RBM)等。
DBN并沒有考慮到圖像的二維結(jié)構(gòu)信息,因?yàn)檩斎胧呛?jiǎn)單的將一個(gè)圖像矩陣轉(zhuǎn)換為一維向量。而CDBN利用鄰域像素的空域關(guān)系,通過一個(gè)稱為卷積RBM(CRBM)的模型達(dá)到生成模型的變換不變性,而且可以容易得變換到高維圖像。
DBN并沒有明確地處理對(duì)觀察變量的時(shí)間聯(lián)系的學(xué)習(xí)上,Conditional RBM通過考慮前一時(shí)刻的可見層單元變量作為附加的條件輸入,以模擬序列數(shù)據(jù),這種變體在語音信號(hào)處理領(lǐng)域應(yīng)用較多。
3.2 CNN(Convolution Neural Networks)卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是人工神經(jīng)網(wǎng)絡(luò)的一種,已成為當(dāng)前語音分析和圖像識(shí)別領(lǐng)域的研究熱點(diǎn)。它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量。該優(yōu)點(diǎn)在網(wǎng)絡(luò)的輸入是多維圖像時(shí)表現(xiàn)的更為明顯,使圖像可以直接作為網(wǎng)絡(luò)的輸入,避免了傳統(tǒng)識(shí)別算法中復(fù)雜的特征提取和數(shù)據(jù)重建過程。
全鏈接DNN的結(jié)構(gòu)里下層神經(jīng)元和所有上層神經(jīng)元都能夠形成連接,帶來了參數(shù)數(shù)量的膨脹問題。例如,1000*1000的像素圖像,光這一層就有10^12個(gè)權(quán)重需要訓(xùn)練。此時(shí)我們可以用卷積神經(jīng)網(wǎng)絡(luò)CNN,對(duì)于CNN來說,并不是所有上下層神經(jīng)元都能直接相連,而是通過"卷積核"作為中介。同一個(gè)卷積核在所有圖像內(nèi)是共享的,圖像通過卷積操作后仍然保留原先的位置關(guān)系。圖像輸入層到隱含層的參數(shù)瞬間降低到了100*100*100=10^6個(gè)
卷積網(wǎng)絡(luò)是為識(shí)別二維形狀而特殊設(shè)計(jì)的一個(gè)多層感知器,這種網(wǎng)絡(luò)結(jié)構(gòu)對(duì)平移、比例縮放、傾斜或者共他形式的變形具有高度不變性。
3.2.1 網(wǎng)絡(luò)結(jié)構(gòu)
卷積神經(jīng)網(wǎng)絡(luò)是一個(gè)多層的神經(jīng)網(wǎng)絡(luò),其基本運(yùn)算單元包括:卷積運(yùn)算、池化運(yùn)算、全連接運(yùn)算和識(shí)別運(yùn)算。
- 卷積運(yùn)算:前一層的特征圖與一個(gè)可學(xué)習(xí)的卷積核進(jìn)行卷積運(yùn)算,卷積的結(jié)果經(jīng)過激活函數(shù)后的輸出形成這一層的神經(jīng)元,從而構(gòu)成該層特征圖,也稱特征提取層,每個(gè)神經(jīng)元的輸入與前一層的局部感受野相連接,并提取該局部的特征,一旦該局部特征被提取,它與其它特征之間的位置關(guān)系就被確定。l
- 池化運(yùn)算:能很好的聚合特征、降維來減少運(yùn)算量。它把輸入信號(hào)分割成不重疊的區(qū)域,對(duì)于每個(gè)區(qū)域通過池化(下采樣)運(yùn)算來降低網(wǎng)絡(luò)的空間分辨率,比如最大值池化是選擇區(qū)域內(nèi)的最大值,均值池化是計(jì)算區(qū)域內(nèi)的平均值。通過該運(yùn)算來消除信號(hào)的偏移和扭曲。
- 全連接運(yùn)算:輸入信號(hào)經(jīng)過多次卷積核池化運(yùn)算后,輸出為多組信號(hào),經(jīng)過全連接運(yùn)算,將多組信號(hào)依次組合為一組信號(hào)。
識(shí)別運(yùn)算:上述運(yùn)算過程為特征學(xué)習(xí)運(yùn)算,需在上述運(yùn)算基礎(chǔ)上根據(jù)業(yè)務(wù)需求(分類或回歸問題)增加一層網(wǎng)絡(luò)用于分類或回歸計(jì)算。
3.2.2 訓(xùn)練過程和優(yōu)缺點(diǎn)
卷積網(wǎng)絡(luò)在本質(zhì)上是一種輸入到輸出的映射,它能夠?qū)W習(xí)大量的輸入與輸出之間的映射關(guān)系,而不需要任何輸入和輸出之間的精確的數(shù)學(xué)表達(dá)式,只要用已知的模式對(duì)卷積網(wǎng)絡(luò)加以訓(xùn)練,網(wǎng)絡(luò)就具有輸入輸出對(duì)之間的映射能力。卷積網(wǎng)絡(luò)執(zhí)行的是有監(jiān)督訓(xùn)練,所以其樣本集是由形如:(輸入信號(hào),標(biāo)簽值)的向量對(duì)構(gòu)成的。
1、優(yōu)點(diǎn):
- 權(quán)重共享策略減少了需要訓(xùn)練的參數(shù),相同的權(quán)重可以讓濾波器不受信號(hào)位置的影響來檢測(cè)信號(hào)的特性,使得訓(xùn)練出來的模型的泛化能力更強(qiáng);
- 池化運(yùn)算可以降低網(wǎng)絡(luò)的空間分辨率,從而消除信號(hào)的微小偏移和扭曲,從而對(duì)輸入數(shù)據(jù)的平移不變性要求不高。
2、缺點(diǎn):
- 深度模型容易出現(xiàn)梯度消散問題。
3.2.3 改進(jìn)模型
卷積神經(jīng)網(wǎng)絡(luò)因?yàn)槠湓诟鱾€(gè)領(lǐng)域中取得了好的效果,是近幾年來研究和應(yīng)用最為廣泛的深度神經(jīng)網(wǎng)絡(luò)。比較有名的卷積神經(jīng)網(wǎng)絡(luò)模型主要包括1986年Lenet,2012年的Alexnet,2014年的GoogleNet,2014年的VGG,2015年的Deep Residual Learning。這些卷積神經(jīng)網(wǎng)絡(luò)的改進(jìn)版本或者模型的深度,或者模型的組織結(jié)構(gòu)有一定的差異,但是組成模型的機(jī)構(gòu)構(gòu)建是相同的,基本都包含了卷積運(yùn)算、池化運(yùn)算、全連接運(yùn)算和識(shí)別運(yùn)算。
3.3 RNN(Recurrent neural network) 遞歸神經(jīng)網(wǎng)絡(luò)
全連接的DNN除了以上問題以外還存在著另一個(gè)問題------無法對(duì)時(shí)間序列上的變化進(jìn)行建模。然而,樣本出現(xiàn)的時(shí)間順序?qū)τ谧匀徽Z言處理、語音識(shí)別、手寫體識(shí)別等應(yīng)用非常重要。對(duì)了適應(yīng)這種需求,就出現(xiàn)了題主所說的另一種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)------循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(不知道為什么很多叫循環(huán)的。計(jì)算機(jī)術(shù)語里循環(huán)一般是同一層次的,Recurrent 其實(shí)是時(shí)間遞歸,所以本文叫他遞歸神經(jīng)網(wǎng)絡(luò))。
在普通的全連接網(wǎng)絡(luò)或CNN中,每層神經(jīng)元的信號(hào)只能向上一層傳播,樣本的處理在各個(gè)時(shí)刻獨(dú)立,因此又被成為前向神經(jīng)網(wǎng)絡(luò)(Feed-forward Neural Networks)。而在RNN中,神經(jīng)元的輸出可以在下一個(gè)時(shí)間戳直接作用到自身。
即:(t+1)時(shí)刻網(wǎng)絡(luò)的最終結(jié)果O(t+1)是該時(shí)刻輸入和所有歷史共同作用的結(jié)果。RNN可以看成一個(gè)在時(shí)間上傳遞的神經(jīng)網(wǎng)絡(luò),它的深度是時(shí)間的長(zhǎng)度!正如我們上面所說,"梯度消失"現(xiàn)象又要出現(xiàn)了,只不過這次發(fā)生在時(shí)間軸上
為了解決時(shí)間上的梯度消失,機(jī)器學(xué)習(xí)領(lǐng)域發(fā)展出了長(zhǎng)短時(shí)記憶單元(LSTM),通過門的開關(guān)實(shí)現(xiàn)時(shí)間上記憶功能,并防止梯度消失。
3.3.1 網(wǎng)絡(luò)結(jié)構(gòu)
左側(cè)是遞歸神經(jīng)網(wǎng)絡(luò)的原始結(jié)構(gòu),如果先拋棄中間那個(gè)令人生畏的閉環(huán),那其實(shí)就是簡(jiǎn)單"輸入層=>隱藏層=>輸出層"的三層結(jié)構(gòu),但是圖中多了一個(gè)非常陌生的閉環(huán),也就是說輸入到隱藏層之后,隱藏層還會(huì)輸入給自己,使得該網(wǎng)絡(luò)可以擁有記憶能力。我們說遞歸神經(jīng)網(wǎng)絡(luò)擁有記憶能力,而這種能力就是通過W將以往的輸入狀態(tài)進(jìn)行總結(jié),而作為下次輸入的輔助。可以這樣理解隱藏狀態(tài):h=f(現(xiàn)有的輸入+過去記憶總結(jié))
3.3.2 訓(xùn)練過程和優(yōu)缺點(diǎn)
遞歸神經(jīng)網(wǎng)絡(luò)中由于輸入時(shí)疊加了之前的信號(hào),所以反向傳導(dǎo)時(shí)不同于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),因?yàn)閷?duì)于時(shí)刻t的輸入層,其殘差不僅來自于輸出,還來自于之后的隱層。通過反向傳遞算法,利用輸出層的誤差,求解各個(gè)權(quán)重的梯度,然后利用梯度下降法更新各個(gè)權(quán)重。
1、優(yōu)點(diǎn):
- 模型是時(shí)間維度上的深度模型,可以對(duì)序列內(nèi)容建模。
2、缺點(diǎn):
- 需要訓(xùn)練的參數(shù)較多,容易出現(xiàn)梯度消散或梯度爆炸問題;
- 不具有特征學(xué)習(xí)能力。
3.3.3 改進(jìn)模型
遞歸神經(jīng)網(wǎng)絡(luò)模型可以用來處理序列數(shù)據(jù),遞歸神經(jīng)網(wǎng)絡(luò)包含了大量參數(shù),且難于訓(xùn)練(時(shí)間維度的梯度消散或梯度爆炸),所以出現(xiàn)一系列對(duì)RNN優(yōu)化,比如網(wǎng)絡(luò)結(jié)構(gòu)、求解算法與并行化。
近年來bidirectional RNN (BRNN)與 LSTM在image captioning, language translation, and handwriting recognition這幾個(gè)方向上有了突破性進(jìn)展 。
3.4 混合結(jié)構(gòu)
除了以上三種網(wǎng)絡(luò),和我之前提到的深度殘差學(xué)習(xí)、LSTM外,深度學(xué)習(xí)還有許多其他的結(jié)構(gòu)。舉個(gè)例子,RNN既然能繼承歷史信息,是不是也能吸收點(diǎn)未來的信息呢?因?yàn)樵谛蛄行盘?hào)分析中,如果我能預(yù)知未來,對(duì)識(shí)別一定也是有所幫助的。因此就有了雙向RNN、雙向LSTM,同時(shí)利用歷史和未來的信息。雙向RNN、雙向LSTM,同時(shí)利用歷史和未來的信息。
事實(shí)上,不論是那種網(wǎng)絡(luò),他們?cè)趯?shí)際應(yīng)用中常常都混合著使用,比如CNN和RNN在上層輸出之前往往會(huì)接上全連接層,很難說某個(gè)網(wǎng)絡(luò)到底屬于哪個(gè)類別。
不難想象隨著深度學(xué)習(xí)熱度的延續(xù),更靈活的組合方式、更多的網(wǎng)絡(luò)結(jié)構(gòu)將被發(fā)展出來。盡管看起來千變?nèi)f化,但研究者們的出發(fā)點(diǎn)肯定都是為了解決特定的問題。如果想進(jìn)行這方面的研究,不妨仔細(xì)分析一下這些結(jié)構(gòu)各自的特點(diǎn)以及它們達(dá)成目標(biāo)的手段。
3.5 CNN和RNN的比較
RNN的重要特性是可以處理不定長(zhǎng)的輸入,得到一定的輸出。當(dāng)你的輸入可長(zhǎng)可短, 比如訓(xùn)練翻譯模型的時(shí)候, 你的句子長(zhǎng)度都不固定,你是無法像一個(gè)訓(xùn)練固定像素的圖像那樣用CNN搞定的。而利用RNN的循環(huán)特性可以輕松搞定。
在序列信號(hào)的應(yīng)用上,CNN是只響應(yīng)預(yù)先設(shè)定的信號(hào)長(zhǎng)度(輸入向量的長(zhǎng)度),RNN的響應(yīng)長(zhǎng)度是學(xué)習(xí)出來的。
CNN對(duì)特征的響應(yīng)是線性的,RNN在這個(gè)遞進(jìn)方向上是非線性響應(yīng)的。這也帶來了很大的差別。
CNN 專門解決圖像問題的,可用把它看作特征提取層,放在輸入層上,最后用MLP 做分類。
RNN 專門解決時(shí)間序列問題的,用來提取時(shí)間序列信息,放在特征提取層(如CNN)之后。
RNN,遞歸型網(wǎng)絡(luò),用于序列數(shù)據(jù),并且有了一定的記憶效應(yīng),輔之以lstm。
CNN應(yīng)該側(cè)重空間映射,圖像數(shù)據(jù)尤為貼合此場(chǎng)景。
CNN 卷積擅長(zhǎng)從局部特征逼近整體特征,
RNN 擅長(zhǎng)對(duì)付時(shí)間序列。
四、一些基本概念和知識(shí)
4.1 線性回歸、線性神經(jīng)網(wǎng)絡(luò)、Logistic/Softmax回歸
這個(gè)參考http://blog.csdn.net/erlib/article/details/53585134
或者其他資料。
4.2 關(guān)于卷積、池化、激活函數(shù)等
入門參考:http://blog.csdn.net/u010859498/article/details/78794405
詳細(xì)了解可自己谷歌百度
4.3 推薦一個(gè)比較好的入門資料
臺(tái)大電機(jī)系李宏毅教授的講義《一天搞懂深度學(xué)習(xí)》
有人做簡(jiǎn)略的翻譯過
https://www.jianshu.com/p/c30f7c944b66
參考資料:
http://blog.csdn.net/erlib/article/details/53585134
https://www.zhihu.com/question/34681168/answer/156552873
http://blog.csdn.net/u010859498/article/details/78794405
總結(jié)
以上是生活随笔為你收集整理的深度学习常见算法的介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众平台无法使用支付宝收付款的解决方
- 下一篇: 深度学习入门(一)——深度学习如何入门?