關(guān)于神經(jīng)網(wǎng)絡(luò)技術(shù)演化史
神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)技術(shù)是當(dāng)今大多數(shù)高級(jí)智能應(yīng)用的基礎(chǔ)。在本文中,來(lái)自阿里巴巴搜索部門的高級(jí)算法專家孫飛博士將簡(jiǎn)要介紹神經(jīng)網(wǎng)絡(luò)的發(fā)展,并討論該領(lǐng)域的最新方法。
文章主要圍繞以下五個(gè)方面展開:
- 神經(jīng)網(wǎng)絡(luò)的演變
- 傳感器模型
- 前饋神經(jīng)網(wǎng)絡(luò)
- 反向傳播
- 深度學(xué)習(xí)基礎(chǔ)知識(shí)
1、神經(jīng)網(wǎng)絡(luò)的演變
在我們深入研究神經(jīng)網(wǎng)絡(luò)的歷史發(fā)展之前,讓我們先介紹一下神經(jīng)網(wǎng)絡(luò)的概念。神經(jīng)網(wǎng)絡(luò)主要從信息處理角度對(duì)人腦神經(jīng)元網(wǎng)絡(luò)進(jìn)行抽象, 建立某種簡(jiǎn)單模型,這種模型使用大量的計(jì)算神經(jīng)元,這些神經(jīng)元通過加權(quán)連接層連接。每一層神經(jīng)元都能夠進(jìn)行大規(guī)模的并行計(jì)算并在它們之間傳遞信息。
下面的時(shí)間軸顯示了神經(jīng)網(wǎng)絡(luò)的演變:
神經(jīng)網(wǎng)絡(luò)的起源甚至可以追溯到計(jì)算機(jī)本身的發(fā)展,第一個(gè)神經(jīng)網(wǎng)絡(luò)出現(xiàn)在20世紀(jì)40年代。我們將回顧一下歷史,幫助大家更好地理解神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)。
第一代神經(jīng)網(wǎng)絡(luò)神經(jīng)元起著驗(yàn)證作用。這些神經(jīng)元的設(shè)計(jì)者只是想確認(rèn)他們可以構(gòu)建用于計(jì)算的神經(jīng)網(wǎng)絡(luò)。這些網(wǎng)絡(luò)不能用于培訓(xùn)或?qū)W習(xí);它們只是作為邏輯門電路。它們的輸入和輸出是二進(jìn)制的,權(quán)重是預(yù)定義的。
第二階段的神經(jīng)網(wǎng)絡(luò)發(fā)展出現(xiàn)在20世紀(jì)50年代和60年代。這涉及到羅斯布拉特在傳感器模型和赫伯特學(xué)習(xí)原理方面的開創(chuàng)性工作。
2、傳感器模型
我們上面提到的傳感器模型和神經(jīng)元模型是相似的,但是有一些關(guān)鍵的區(qū)別。傳感器模型中的激活算法可以是中斷算法,也可以是sigmoid算法,其輸入可以是實(shí)數(shù)向量,而不是神經(jīng)元模型使用的二進(jìn)制向量。與神經(jīng)元模型不同,傳感器模型具有學(xué)習(xí)能力。
接下來(lái),我們將討論傳感器模型的一些特殊特性。
我們可以考慮輸入值 (x1..., xn) 為N維空間中的坐標(biāo),wTx-w0 = 0為N維空間中的超平面。顯然,如果wTx-w0 < 0,那么點(diǎn)落在超平面以下,而如果wTx-w0 > 0,則點(diǎn)落在超平面上。
傳感器模型對(duì)應(yīng)于分類器的超平面,能夠在N維空間中分離不同類型的點(diǎn)。看下圖,我們可以看到傳感器模型是一個(gè)線性分類器。
傳感器模型能夠方便地對(duì)基本的邏輯操作進(jìn)行分類,如AND、OR和NOT。
我們可以通過傳感器模型對(duì)所有的邏輯操作進(jìn)行分類嗎?答案當(dāng)然是否定的。例如,通過單一的線性傳感器模型很難對(duì)Exclusive OR ( 異或)操作進(jìn)行分類,這是神經(jīng)網(wǎng)絡(luò)在第一個(gè)峰值之后很快進(jìn)入發(fā)展的低點(diǎn)的主要原因之一。包括Minsky在內(nèi)的幾位作者討論了傳感器模型的問題。然而,在這個(gè)問題上許多人誤解了他們的意思。
事實(shí)上,像Minsky這樣的作者指出,一個(gè)人可以通過多層傳感器模型實(shí)現(xiàn)異或操作;然而,由于學(xué)術(shù)界當(dāng)時(shí)缺乏研究多層傳感器模型的有效方法,神經(jīng)網(wǎng)絡(luò)的發(fā)展陷入了第一個(gè)低谷。
下圖直觀地展示了多層傳感器模型如何實(shí)現(xiàn)異或操作:
3、前饋神經(jīng)網(wǎng)絡(luò)
進(jìn)入20世紀(jì)80年代,由于傳感器模型神經(jīng)網(wǎng)絡(luò)的表達(dá)能力局限于線性分類任務(wù),神經(jīng)網(wǎng)絡(luò)的發(fā)展開始進(jìn)入多層傳感器階段。經(jīng)典的多層神經(jīng)網(wǎng)絡(luò)是前饋神經(jīng)網(wǎng)絡(luò)。
從下圖中我們可以看到,它涉及一個(gè)輸入層、一個(gè)包含未定義節(jié)點(diǎn)數(shù)量的隱藏層和一個(gè)輸出層。
我們可以用多層傳感器模型來(lái)表示任何邏輯運(yùn)算,但這就引入了三層之間的加權(quán)學(xué)習(xí)問題。當(dāng)xk從輸入層傳輸?shù)诫[藏層上的加權(quán)vkj,然后通過sigmoid這樣的激活算法,我們可以從隱藏層中檢索相應(yīng)的值hj。同樣,我們可以使用類似的操作,使用hj值從輸出層派生yi節(jié)點(diǎn)值。為了學(xué)習(xí),我們需要w和v矩陣的加權(quán)信息,這樣我們才能最終得到估計(jì)值y和實(shí)際值d。
如果你對(duì)機(jī)器學(xué)習(xí)有基本的了解,你就會(huì)明白為什么我們要用梯度下降法來(lái)學(xué)習(xí)一個(gè)模型。對(duì)傳感器模型應(yīng)用梯度下降的原理是相當(dāng)簡(jiǎn)單的,我們可以從下圖中看到。首先,我們要確定模型的損失。
示例使用一個(gè)平方根損失和試圖關(guān)閉之間的差距模擬值y和實(shí)際價(jià)值d。為了計(jì)算方便,在大多數(shù)情況下,我們使用根關(guān)系E = 1/2(dy)^ 2 = 1/2(d-f(x))^ 2。
根據(jù)梯度下降法原則,權(quán)重更新周期:wj←wi +α(d?f(x))f′(x),α是我們可以手動(dòng)調(diào)整學(xué)習(xí)的速度。
4、反向傳播(Back-Propagation)
如何在多層前饋神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí)所有參數(shù)?頂層的參數(shù)很容易獲得。通過比較計(jì)算模型輸出的估計(jì)值與實(shí)測(cè)值的差值,利用梯度下降原理得到參數(shù)結(jié)果,可以得到參數(shù)。當(dāng)我們?cè)噲D從隱藏層獲取參數(shù)時(shí),問題就出現(xiàn)了。即使我們可以計(jì)算模型的輸出,我們也無(wú)法知道期望值是多少,因此我們也無(wú)法有效地訓(xùn)練多層神經(jīng)網(wǎng)絡(luò)。這個(gè)問題困擾了研究人員很長(zhǎng)一段時(shí)間,導(dǎo)致神經(jīng)網(wǎng)絡(luò)在20世紀(jì)60年代之后發(fā)展停滯不前。
后來(lái),在70年代,一些科學(xué)家獨(dú)立地提出了反向傳播算法的想法。這種類型的算法背后的基本思想其實(shí)很簡(jiǎn)單。雖然當(dāng)時(shí)沒有辦法根據(jù)隱藏層的期望值來(lái)更新,但是可以通過隱藏層傳遞的錯(cuò)誤來(lái)更新隱藏層和其他層之間的權(quán)重。當(dāng)計(jì)算梯度時(shí),由于隱藏層中的所有節(jié)點(diǎn)都與輸出層中的多個(gè)節(jié)點(diǎn)相關(guān),所以前一層中的所有層都被聚集并一起處理。
反向傳播的另一個(gè)優(yōu)點(diǎn)是我們可以同時(shí)在同一層上執(zhí)行節(jié)點(diǎn)的梯度和加權(quán),因?yàn)樗鼈兪遣幌嚓P(guān)的。我們可以用偽代碼表示整個(gè)反向傳播過程如下:
接下來(lái),我們來(lái)討論一下反向傳播神經(jīng)網(wǎng)絡(luò)的其他特征。反向傳播實(shí)際上是一個(gè)鏈?zhǔn)椒▌t。它可以很容易地推廣任何具有映射的計(jì)算。根據(jù)梯度函數(shù),我們可以使用反向傳播神經(jīng)網(wǎng)絡(luò)生成局部?jī)?yōu)化解,而不是全局優(yōu)化解。然而,從一般的角度來(lái)看,反向傳播算法產(chǎn)生的結(jié)果通常是一個(gè)令人滿意的優(yōu)化解決方案。
下圖是反向傳播算法的直觀表示:
在大多數(shù)情況下,反向傳播神經(jīng)網(wǎng)絡(luò)會(huì)找到范圍內(nèi)最小的可能值;但是,如果我們離開這個(gè)范圍,我們可能會(huì)發(fā)現(xiàn)更好的價(jià)值。在實(shí)際應(yīng)用中,有許多簡(jiǎn)單有效的方法來(lái)解決這類問題,例如,我們可以嘗試不同的隨機(jī)初始化方法。此外,在實(shí)踐中,在現(xiàn)代深度學(xué)習(xí)領(lǐng)域中經(jīng)常使用的模型中,初始化方法對(duì)最終結(jié)果有重要的影響。強(qiáng)迫模型離開優(yōu)化范圍的另一種方法是在訓(xùn)練過程中引入隨機(jī)噪聲,或者使用遺傳算法防止訓(xùn)練模型在非理想優(yōu)化位置停止。
反向傳播神經(jīng)網(wǎng)絡(luò)是機(jī)器學(xué)習(xí)的一個(gè)很好的模型,當(dāng)談到機(jī)器學(xué)習(xí)時(shí),我們不得不注意到在機(jī)器學(xué)習(xí)過程中經(jīng)常遇到的一個(gè)基本問題,那就是過擬合問題。過度擬合的一個(gè)常見表現(xiàn)是在訓(xùn)練過程中,即使模型的損失不斷下降,測(cè)試組的損失和誤差也會(huì)增加。有兩種典型的避免過度擬合的方法:
早期停止:我們可以提前分離一個(gè)驗(yàn)證組,并在培訓(xùn)期間對(duì)這個(gè)已經(jīng)驗(yàn)證過的組運(yùn)行它。我們可以觀察模型的損失,如果驗(yàn)證組的損失已經(jīng)停止下降,而培訓(xùn)組的損失仍在下降,那么我們可以提前停止培訓(xùn),防止過度擬合。
正則化:我們可以在神經(jīng)網(wǎng)絡(luò)中增加規(guī)則。現(xiàn)在流行的drop方法是隨機(jī)刪除一些節(jié)點(diǎn)或邊。這種方法可以作為正則化的一種形式,在防止過擬合方面非常有效。
盡管神經(jīng)網(wǎng)絡(luò)在20世紀(jì)80年代非常流行,但不幸的是,它們?cè)?0世紀(jì)90年代進(jìn)入了發(fā)展的另一個(gè)低谷。許多因素促成了這一低點(diǎn)。例如,Support Vector Machines,在20世紀(jì)90年代是一個(gè)流行的模型,在各種大型會(huì)議上登臺(tái),并在各種領(lǐng)域得到應(yīng)用。Support Vector Machines具有優(yōu)秀的統(tǒng)計(jì)學(xué)習(xí)理論,易于直觀理解。它們也非常有效,并產(chǎn)生接近理想的結(jié)果。
在這種轉(zhuǎn)變中,Support Vector Machines背后的統(tǒng)計(jì)學(xué)習(xí)理論的興起給神經(jīng)網(wǎng)絡(luò)的發(fā)展帶來(lái)了不小的壓力。另一方面,從神經(jīng)網(wǎng)絡(luò)本身的角度來(lái)看,即使你可以在理論上使用反向傳播網(wǎng)絡(luò)來(lái)訓(xùn)練任何神經(jīng)網(wǎng)絡(luò),在實(shí)際應(yīng)用中,我們注意到,隨著神經(jīng)網(wǎng)絡(luò)中層數(shù)的增加,訓(xùn)練神經(jīng)網(wǎng)絡(luò)的難度也會(huì)成倍增加。例如,在20世紀(jì)90年代初,人們注意到在一個(gè)神經(jīng)網(wǎng)絡(luò)中,有相當(dāng)多的層,通常會(huì)出現(xiàn)梯度損失或梯度爆炸。
例如,一個(gè)簡(jiǎn)單的梯度損失的例子是,神經(jīng)網(wǎng)絡(luò)中的每一層都是一個(gè)乙基結(jié)構(gòu)層,因此,它在反向傳播過程中的損失被鏈接到一個(gè)乙基結(jié)構(gòu)梯度中。當(dāng)一系列元素串在一起時(shí),如果其中一個(gè)梯度非常小,那么梯度就會(huì)變得越來(lái)越小。實(shí)際上,在傳播了一層或兩層之后,這個(gè)梯度就消失了。梯度損失導(dǎo)致深層參數(shù)停止變化,很難得到有意義的結(jié)果。這就是為什么多層神經(jīng)網(wǎng)絡(luò)很難訓(xùn)練的原因之一。
學(xué)術(shù)界對(duì)這一問題進(jìn)行了深入的研究,得出的結(jié)論是,最簡(jiǎn)單的處理方法是改變激活算法。一開始我們嘗試使用修正的激活算法,因?yàn)閟igmoid算法是一種很容易導(dǎo)致梯度損失的索引方法。另一方面,修正了sigmoid函數(shù)并替換了max (0,x)從下圖我們可以看到,在0以上的估計(jì)值的梯度是1,這就避免了梯度消失的問題。但是,當(dāng)估計(jì)值小于0時(shí),我們可以看到梯度又為0,所以ReLU算法必須是不完美的。后來(lái),一些改進(jìn)的算法出現(xiàn)了,包括Leaky ReLU和參數(shù)整流器(PReLU)。估計(jì)x小于0時(shí),我們可以將它轉(zhuǎn)換成一個(gè)像0.01或α系數(shù),以防止它實(shí)際上是0。
隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,我們后來(lái)提出了許多方法來(lái)解決在結(jié)構(gòu)層面上通過梯度的問題。例如,元模型、LSTM模型和現(xiàn)代圖像分析使用了許多跨層鏈接方法來(lái)更容易地傳播梯度。
接下來(lái),我們將進(jìn)一步深入學(xué)習(xí),特別是卷積神經(jīng)網(wǎng)絡(luò)(CNN)和遞歸神經(jīng)網(wǎng)絡(luò)(RNN)。
5、深度學(xué)習(xí)基礎(chǔ)知識(shí)
從20世紀(jì)90年代的第二個(gè)發(fā)展低點(diǎn)到2006年,神經(jīng)網(wǎng)絡(luò)再一次引起了大眾的關(guān)注,這一次比以往更加有力。在神經(jīng)網(wǎng)絡(luò)興起的過程中,有一件大事發(fā)生了,那就是Hinton在包括Salahundinov在內(nèi)的許多地方提交的兩篇關(guān)于多層神經(jīng)網(wǎng)絡(luò)(現(xiàn)在被稱為“深度學(xué)習(xí)”)的論文。
其中一篇論文解決了神經(jīng)網(wǎng)絡(luò)初始化值的設(shè)置問題。簡(jiǎn)單地說(shuō),解決方案是將輸入值考慮為x,輸出值考慮為解碼后的x,然后通過這種方法找到更好的初始化點(diǎn)。另一篇論文提出了一種快速訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)的方法。實(shí)際上,神經(jīng)網(wǎng)絡(luò)的流行有很多因素,例如,計(jì)算資源的巨大增長(zhǎng)和數(shù)據(jù)的可用性。在20世紀(jì)80年代,由于缺乏數(shù)據(jù)和計(jì)算資源,很難訓(xùn)練出大規(guī)模的神經(jīng)網(wǎng)絡(luò)。
神經(jīng)網(wǎng)絡(luò)的早期興起是由三個(gè)不朽人物推動(dòng)的,即 Hinton, Bengio, 和LeCun。Hinton的主要成就是在Restricted Boltzmann Machine和Deep Autoencoder(深自動(dòng)編碼器)。Bengio的主要貢獻(xiàn)是在使用元模型進(jìn)行深度學(xué)習(xí)方面取得了一系列突破。這也是深度學(xué)習(xí)經(jīng)歷重大突破的第一個(gè)領(lǐng)域。
2013年,基于元模型的語(yǔ)言建模已經(jīng)能夠超越當(dāng)時(shí)最有效的方法——概率模型。LeCun的主要成就是與CNN相關(guān)的研究。深度學(xué)習(xí)的主要表現(xiàn)形式是在許多主要的高峰,如NIPS、ICML、CVPR、ACL,在那里它吸引了大量的關(guān)注。這包括谷歌大腦的出現(xiàn)、Deep Mind和Facebook AI,這些都是他們?cè)谏疃葘W(xué)習(xí)領(lǐng)域的研究中心。
深度學(xué)習(xí)吸引大眾關(guān)注后的第一個(gè)突破是語(yǔ)音識(shí)別領(lǐng)域。在我們開始使用深度學(xué)習(xí)之前,模型都是在之前定義的統(tǒng)計(jì)數(shù)據(jù)庫(kù)上訓(xùn)練的。2010年,微軟使用了一個(gè)深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)進(jìn)行語(yǔ)音識(shí)別。從下圖可以看出,兩個(gè)誤差指標(biāo)都下降了2/3,有了明顯的改善。基于最新的ResNet技術(shù),微軟已經(jīng)將該指標(biāo)降低到6.9%,并將逐年改進(jìn)。
在圖像分類領(lǐng)域,CNN模型在2012年以ImageNet的形式取得了重大突破。在ImageNet中,使用大量的數(shù)據(jù)收集對(duì)圖像分類進(jìn)行測(cè)試,然后將其分類為1000種類型。在深度學(xué)習(xí)應(yīng)用之前,圖像分類系統(tǒng)的最佳錯(cuò)誤率為25.8%(2011年),由于Hinton和他的學(xué)生在2012年使用CNN所做的工作,其錯(cuò)誤率僅為10%。
從圖中可以看出,自2012年以來(lái),該指標(biāo)每年都有重大突破,都是利用CNN模型實(shí)現(xiàn)的。
這些巨大的成就在很大程度上歸功于現(xiàn)代系統(tǒng)的多層結(jié)構(gòu),因?yàn)樗鼈冊(cè)试S獨(dú)立的學(xué)習(xí)和通過分層抽象結(jié)構(gòu)表達(dá)數(shù)據(jù)的能力。抽象的特性可以應(yīng)用到各種任務(wù)中,這對(duì)當(dāng)前深度學(xué)習(xí)的流行有很大的幫助。
接下來(lái),我們將介紹兩種經(jīng)典的和常見的深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)類型:一種是卷積神經(jīng)網(wǎng)絡(luò)(tional neural Network, CNN),另一種是遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)。
卷積神經(jīng)網(wǎng)絡(luò) Convolutional Neural Networks
卷積神經(jīng)網(wǎng)絡(luò)有兩個(gè)核心概念。一個(gè)是卷積,另一個(gè)是pooling。在這一點(diǎn)上,有些人可能會(huì)問為什么我們不簡(jiǎn)單地使用前饋神經(jīng)網(wǎng)絡(luò)而不是CNN。以1000x1000的圖像為例,一個(gè)神經(jīng)網(wǎng)絡(luò)將在隱藏層上有100萬(wàn)個(gè)節(jié)點(diǎn)。前饋神經(jīng)網(wǎng)絡(luò),將10 ^ 12個(gè)參數(shù)。此時(shí),系統(tǒng)幾乎不可能學(xué)習(xí),因?yàn)樗枰罅康墓烙?jì)。
然而,很多圖片都有這樣的特點(diǎn)。如果我們使用CNN對(duì)圖像進(jìn)行分類,那么由于卷積的概念,隱藏層上的每個(gè)節(jié)點(diǎn)只需要連接和掃描圖像的一個(gè)位置的特征。如果隱藏層上的每個(gè)節(jié)點(diǎn)連接到10*10的估計(jì),則最終參數(shù)的數(shù)量為1億,如果可以共享多個(gè)隱藏層訪問的局部參數(shù),則參數(shù)的數(shù)量顯著減少。
從下面的圖片來(lái)看,前饋神經(jīng)網(wǎng)絡(luò)和CNN之間的差異是巨大的。圖像中的模型從左到右是完全連接的、正常的、前饋的、完全連接的前饋,CNN建模神經(jīng)網(wǎng)絡(luò)。我們可以看到,CNN神經(jīng)網(wǎng)絡(luò)的隱層節(jié)點(diǎn)的連接權(quán)值參數(shù)可以共享。
pooling是另一個(gè)操作。CNN將在卷積原理的基礎(chǔ)上,在中間形成一個(gè)隱藏層,即 pooling層。最常用的 pooling化方法是Max Pooling(最大化),其中隱藏層上的節(jié)點(diǎn)選擇最大的輸出值。由于多個(gè)內(nèi)核是pooling的,所以在中間有多個(gè)隱藏層節(jié)點(diǎn)。
好處是什么?首先,匯聚進(jìn)一步減少了參數(shù)的數(shù)量,其次,它提供了一定數(shù)量的平移不變性。如圖所示,如果圖像中顯示的九個(gè)節(jié)點(diǎn)中有一個(gè)是經(jīng)過翻譯的,那么在pooling中生成的節(jié)點(diǎn)將保持不變。
CNN的這兩個(gè)特點(diǎn)使得它在圖像處理領(lǐng)域非常流行,成為圖像處理領(lǐng)域的標(biāo)準(zhǔn)。下面的可視化汽車示例是CNN在圖像分類領(lǐng)域的應(yīng)用的一個(gè)很好的例子。在將汽車的原始圖像輸入到CNN模型后,我們可以通過卷積和ReLU激活層傳遞一些簡(jiǎn)單粗糙的特征,如邊緣和點(diǎn)。我們可以直觀地看到,它們?cè)浇咏钌厦孑敵鰧拥妮敵鰣D像,它們就越接近汽車的輪廓。這個(gè)過程最終將檢索一個(gè)隱藏層表示,并將其連接到分類層,然后它將接收?qǐng)D像的分類,如圖像中顯示的汽車、卡車、飛機(jī)、輪船和馬。
下面的圖片是萊昆和其他筆跡識(shí)別領(lǐng)域的研究人員早期使用的神經(jīng)網(wǎng)絡(luò)。這個(gè)網(wǎng)絡(luò)在20世紀(jì)90年代被應(yīng)用于美國(guó)郵政系統(tǒng)。有興趣的讀者可以登錄LeCun的網(wǎng)站查看手寫識(shí)別的動(dòng)態(tài)過程。
雖然CNN在圖像識(shí)別領(lǐng)域非常受歡迎,但在過去的兩年里,它也在文本識(shí)別方面發(fā)揮了重要作用。例如,CNN是目前文本分類最優(yōu)解的基礎(chǔ)。在確定文本的類別時(shí),我們真正需要做的是尋找文本中關(guān)鍵字的指示,這是一個(gè)非常適合CNN模型的任務(wù)。
CNN擁有廣泛的現(xiàn)實(shí)應(yīng)用,例如在調(diào)查、自動(dòng)駕駛汽車、分割和神經(jīng)系統(tǒng)。神經(jīng)類型是一個(gè)迷人的應(yīng)用。例如,在應(yīng)用商店里有一個(gè)很受歡迎的應(yīng)用程序叫Prisma,它允許用戶上傳一張圖片并將其轉(zhuǎn)換成另一種風(fēng)格。例如,它可以轉(zhuǎn)換成Van Goh的星空風(fēng)格。這個(gè)過程很大程度上依賴于CNN。
遞歸神經(jīng)網(wǎng)絡(luò) Recursive Neural Networks
至于遞歸神經(jīng)網(wǎng)絡(luò)背后的基本原則,從下面的圖片我們可以看出這樣一個(gè)網(wǎng)絡(luò)的輸出不僅依賴于輸出x但隱層的狀態(tài),這是更新根據(jù)先前輸入x。擴(kuò)大圖像顯示整個(gè)過程。第一個(gè)輸入的隱藏層是S(t-1),它影響下一個(gè)輸入X(t)。遞歸神經(jīng)網(wǎng)絡(luò)模型的主要優(yōu)點(diǎn)是,我們可以在文本、語(yǔ)言和語(yǔ)音等序列數(shù)據(jù)操作中使用它,在這些操作中,當(dāng)前數(shù)據(jù)的狀態(tài)受以前的數(shù)據(jù)狀態(tài)的影響。使用前饋神經(jīng)網(wǎng)絡(luò)處理這類數(shù)據(jù)非常困難。
說(shuō)到遞歸神經(jīng)網(wǎng)絡(luò),我們不應(yīng)該提及我們前面提到的LSTM模型。LSTM實(shí)際上不是一個(gè)完整的神經(jīng)網(wǎng)絡(luò)。簡(jiǎn)單地說(shuō),它是經(jīng)過復(fù)雜處理的RNN節(jié)點(diǎn)的結(jié)果。LSTM有三個(gè)門,即輸入門、遺忘門和輸出門。
每個(gè)這些門用于處理單元中的數(shù)據(jù),并確定是否應(yīng)該輸入、遺忘或輸出單元中的數(shù)據(jù)
最后,讓我們談一談神經(jīng)網(wǎng)絡(luò)的跨學(xué)科應(yīng)用,它正在得到廣泛的接受。此應(yīng)用程序涉及將圖像轉(zhuǎn)換為圖像的文本描述或描述圖像的標(biāo)題。我們可以先使用CNN模型來(lái)描述具體的實(shí)現(xiàn)過程,提取圖像的相關(guān)信息并生成矢量表示。稍后,我們可以將該向量作為輸入傳遞給已經(jīng)訓(xùn)練好的遞歸神經(jīng)網(wǎng)絡(luò),以生成圖像的描述。
總結(jié)
在本文中,我們討論了神經(jīng)網(wǎng)絡(luò)的發(fā)展,并介紹了神經(jīng)網(wǎng)絡(luò)的幾個(gè)基本概念和方法。以上文章是基于孫飛博士在一年一度的阿里巴巴云計(jì)算大會(huì)上的演講。他目前正在研究推薦系統(tǒng)和文本生成方法