版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
人工自能機(jī)器算法深度學(xué)習(xí)PAGEPAGE1147目錄TOC\o"1-1"\h\u237671.1簡(jiǎn)單前饋網(wǎng)絡(luò) 4218551.2深度學(xué)習(xí)的計(jì)算圖 1319641.3卷積網(wǎng)絡(luò) 1855151.4學(xué)習(xí)算法 26215791.5泛化 3168821.6循環(huán)神經(jīng)網(wǎng)絡(luò) 38191471.7無(wú)監(jiān)督學(xué)習(xí)與遷移學(xué)習(xí) 43193111.8應(yīng)用 52深度學(xué)習(xí)通過(guò)梯度下降算法學(xué)習(xí)多層迭代的網(wǎng)絡(luò)架構(gòu),它在人工智能的主要子領(lǐng)域中具有重要影響力。深度學(xué)習(xí)(deep learning)是機(jī)器學(xué)習(xí)中一系列技術(shù)的組合,它假設(shè)具有復(fù)雜代數(shù)電路的形式,且其中的連接強(qiáng)度是可調(diào)整的?!吧疃取钡暮x是指電路通常被設(shè)計(jì)成多層(layer),這意味著從輸入到輸出的計(jì)算路徑包含較多計(jì)算步驟。深度學(xué)習(xí)是目前應(yīng)用最廣泛的方法,例如它在視覺對(duì)象識(shí)別、機(jī)器翻譯、語(yǔ)音識(shí)別、語(yǔ)音合成和圖像合成中的應(yīng)用,它在強(qiáng)化學(xué)習(xí)應(yīng)用中也起著重要的作用(見第22章)。深度學(xué)習(xí)起源于早期的用計(jì)算電路模擬大腦神經(jīng)元網(wǎng)絡(luò)的工作(McCullochandPitts,1943)。因此,通過(guò)深度學(xué)習(xí)方法訓(xùn)練的網(wǎng)絡(luò)通常被稱為神經(jīng)網(wǎng)絡(luò)(neuralnetwork),盡管它與真實(shí)的神經(jīng)細(xì)胞和結(jié)構(gòu)之間的相似性僅僅停留于表面。雖然深度學(xué)習(xí)取得成功的真正原因尚未完全明晰,但與第19章所述的一些方法相比,它具有不言而喻的優(yōu)勢(shì),在處理圖像等高維數(shù)據(jù)時(shí)尤為明顯。舉例來(lái)說(shuō),雖然線性回歸和邏輯斯諦回歸等方法可以處理大量的輸入變量,但每個(gè)樣本從輸入到輸出的計(jì)算路徑都非常短——只是乘以某個(gè)權(quán)重后加到總輸出中。此外,不同的輸入變量各自獨(dú)立地影響輸出而不相互影響(圖21-1a)。這大大限制了這些模型的表達(dá)能力。它們只能表示輸入空間中的線性函數(shù)與邊界,而真實(shí)世界中的大多數(shù)概念要比這復(fù)雜得多。依賴于較多的輸入變量,但只是對(duì)很小的一部分輸入向量而言(圖21-1b)它的輸入變量的數(shù)量必將是指數(shù)級(jí)的。深度學(xué)習(xí)的基本思想是訓(xùn)練電相互作用(圖21-1c)。事實(shí)證明,這些電路模型具有足夠的表達(dá)能力,它們?cè)谠S多重要類型的學(xué)習(xí)問(wèn)題中都能夠擬合復(fù)雜的真實(shí)數(shù)據(jù)。圖21-1 (a)淺層模型,例如線性回歸,其輸入到輸出之間的計(jì)算路徑很短。(b)決策列表網(wǎng)絡(luò)(19.5節(jié))中可能存在某些具有長(zhǎng)計(jì)算路徑的輸入,但大多數(shù)計(jì)算路徑都較短。(c)深學(xué)習(xí)網(wǎng)絡(luò)具有更長(zhǎng)的計(jì)算路徑,且每個(gè)變量都能與所有其他變量相互作用簡(jiǎn)單前饋網(wǎng)絡(luò)顧名思義,前饋網(wǎng)絡(luò)(feedforward network)是只在一個(gè)方向上連接的網(wǎng)絡(luò),也就是說(shuō),它是一個(gè)有向無(wú)環(huán)圖且有指定的輸入和輸出節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)計(jì)算一個(gè)關(guān)于輸入的函數(shù),并將結(jié)果傳遞給網(wǎng)絡(luò)中的后續(xù)節(jié)點(diǎn)。信息從輸入節(jié)點(diǎn)流向輸出節(jié)點(diǎn)從而通過(guò)網(wǎng)絡(luò),且沒有環(huán)路。另外,循環(huán)網(wǎng)絡(luò)(recurrent network)將其中間輸出或最終輸出反饋到自己的輸入中。這意味著網(wǎng)絡(luò)中的信號(hào)值將形成一個(gè)具有內(nèi)部狀態(tài)或記憶的動(dòng)態(tài)系統(tǒng)。我們將在21.6節(jié)探討循環(huán)網(wǎng)絡(luò)。布爾電路是前饋網(wǎng)絡(luò)的一個(gè)例子,它實(shí)現(xiàn)了布爾函數(shù)。在布爾電路中,輸入被限制為0或1,每個(gè)節(jié)點(diǎn)是關(guān)于輸入的簡(jiǎn)單布爾函數(shù),節(jié)點(diǎn)的輸出也為0或1。在神經(jīng)網(wǎng)絡(luò)中,輸入值通常是連續(xù)的,節(jié)點(diǎn)接受連續(xù)的輸入并產(chǎn)生連續(xù)的輸出。節(jié)點(diǎn)的一部分輸入也可能是網(wǎng)絡(luò)的參數(shù),網(wǎng)絡(luò)通過(guò)調(diào)整這些參數(shù)值,使網(wǎng)絡(luò)整體擬合訓(xùn)練數(shù)據(jù),以此來(lái)進(jìn)行學(xué)習(xí)。網(wǎng)絡(luò)作為復(fù)雜函數(shù)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)稱為一個(gè)單元(unit)。傳統(tǒng)上,根據(jù)麥卡洛克和皮茨(McCulloch and Pitts,1943)所提出的設(shè)計(jì),一個(gè)單元將計(jì)來(lái)自前驅(qū)節(jié)點(diǎn)的輸入的加權(quán)和,并使用一個(gè)非線性的函數(shù)產(chǎn)生該節(jié)點(diǎn)的輸出。令aj為單元j的輸出,并令wi,j為從單元i到單元j的連接的權(quán)重,有其中g(shù)j為用于單元j的非線性激活函數(shù)(activationfunction),inj是單元j的輸入的加權(quán)和。如19.6.3節(jié)所述,我們規(guī)定每個(gè)單元都有一個(gè)來(lái)自虛擬單元0的額外輸入,這個(gè)來(lái)自虛擬單元0的輸入固定為+1,并且該輸入有權(quán)重w0,j。這樣一來(lái),即使前一層的輸出均為0,單元j的輸入的加權(quán)和inj也是非0的。根據(jù)這樣的規(guī)則,我們可以將上述式子表述為向量的形式:(21-1)其中,w是關(guān)于單元j的輸入的權(quán)重向量(包括w0,j),x是單元j的輸入向量(包括+1)。激活函數(shù)是非線性的這一事實(shí)非常重要,因?yàn)槿绻皇欠蔷€性非線性使得由足夠多的單元組成的網(wǎng)絡(luò)能夠表示任意函數(shù)。萬(wàn)能近似(universalapproximation)定理表明,一個(gè)網(wǎng)絡(luò)只要有兩層計(jì)算單元,且其中第一層是非線性的,第二層是線性的,那么它就可以以任意精度逼近任何連續(xù)函數(shù)。定理的證明思路大致如下:由于單元個(gè)數(shù)為指數(shù)級(jí)別的網(wǎng)絡(luò)可以表示指數(shù)多個(gè)輸入空間中的不同位置不同高度的“凸起”,因此可以逼近所需的函數(shù)。換句話說(shuō),足夠大的網(wǎng)絡(luò)可以實(shí)現(xiàn)連續(xù)函數(shù)的查找表,就像足夠大的決策樹可以實(shí)現(xiàn)布爾函數(shù)的查找表一樣。有許多不同種類的激活函數(shù),其中最常見的有以下幾類。邏輯斯諦函數(shù)或sigmoid函數(shù),我們?cè)谶壿嬎怪B回歸中也曾用到它(見第19章):ReLU函數(shù),ReLU是修正線性單元(rectified linear unit)的寫:softplus函數(shù),它是ReLU函數(shù)的光滑版本:softplus函數(shù)的導(dǎo)數(shù)為sigmoid函數(shù)。tanh函數(shù):發(fā)現(xiàn)tanh函數(shù)的值域。tanh函數(shù)是sigmoid經(jīng)過(guò)伸縮與平移后的版本,即。這些函數(shù)如圖21-2所示。不難發(fā)現(xiàn)它們都是單調(diào)不減的,這意味著它們的導(dǎo)數(shù)g′是非負(fù)的。在后面的章節(jié)中,我們將對(duì)激活函數(shù)的選擇做更多的解釋。圖21-2 學(xué)習(xí)系統(tǒng)中常用的激活函數(shù):(a)邏輯斯諦函數(shù)或sigmoid函數(shù)。(b)ReLU函數(shù)和softplus函數(shù)。(c)tanh函數(shù)將多個(gè)單元組合到一個(gè)網(wǎng)絡(luò)中會(huì)產(chǎn)生一個(gè)復(fù)雜的函數(shù),它是由單個(gè)單元表示的代數(shù)表達(dá)式的組合。例如,圖21-3a所示的網(wǎng)絡(luò)表示了一個(gè)參數(shù)化的函數(shù)hw(x),它將二元的輸入向量x映射為標(biāo)量輸出值。函數(shù)的內(nèi)部結(jié)構(gòu)與網(wǎng)絡(luò)的結(jié)構(gòu)相對(duì)應(yīng)。例如,我們可以將某個(gè)輸出的表達(dá)式寫成(21-2)如此一來(lái),我們可以將輸出表示為關(guān)于輸入和權(quán)重的函數(shù)hw(x)圖21-3a給出了神經(jīng)網(wǎng)絡(luò)相關(guān)書籍中描述網(wǎng)絡(luò)的傳統(tǒng)方式。一個(gè)更一般的方法是把網(wǎng)絡(luò)看作一個(gè)計(jì)算圖(computation graph)或數(shù)據(jù)流圖(dataflowgraph)——本質(zhì)上它是一個(gè)電路,其中每個(gè)節(jié)點(diǎn)代表一個(gè)基本運(yùn)算。圖21-3b給出了與圖21-3a中網(wǎng)絡(luò)相對(duì)應(yīng)的計(jì)算圖,該圖顯式地表達(dá)了整個(gè)計(jì)算過(guò)程的每個(gè)元素。它還將輸入(藍(lán)色)和權(quán)重(淡紫色)進(jìn)行了區(qū)分,我們可以調(diào)整權(quán)重,使輸出與訓(xùn)練數(shù)據(jù)中的真實(shí)值從特定前驅(qū)節(jié)點(diǎn)中聽到了多少聲音。圖21-3 (a)具有兩個(gè)輸入、一個(gè)包含兩個(gè)單元的隱藏層和一個(gè)輸出單元的神經(jīng)網(wǎng)絡(luò),其中擬輸入及其權(quán)重沒有在圖中給出。(b)將(a)中的網(wǎng)絡(luò)分解為完整的計(jì)算圖與式(21-1)中以向量形式描述單元的方式類似,我們可以對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行類似的操作。我們通常以W表示權(quán)重矩陣;對(duì)于該網(wǎng)絡(luò),W(1)表示第一層的權(quán)重(w1,3、w1,4等),W(2)表示第二層的權(quán)重(w3,5等)。最后,記第一層和第二層中的激活函數(shù)為g(1)和g(2)。那么整個(gè)網(wǎng)絡(luò)可以寫為(21-3)與式(21-2)一樣,這個(gè)表達(dá)式也對(duì)應(yīng)于一個(gè)計(jì)算圖,盡管它比圖21-3b中的計(jì)算圖簡(jiǎn)單得多:在該圖中只有一條“鏈”,其中每一層都附帶權(quán)重矩陣。圖21-3b中的計(jì)算圖相對(duì)來(lái)說(shuō)規(guī)模較小且層數(shù)較淺,但其中的思想適用于所有形式的深度學(xué)習(xí):我們通過(guò)構(gòu)造計(jì)算圖并調(diào)整其權(quán)重以擬合數(shù)據(jù)。圖21-3b中的圖同時(shí)也稱作全連接的(fully connected),即每層中的每個(gè)節(jié)點(diǎn)都與下一層中的每個(gè)節(jié)點(diǎn)存在連接。這在某種意義上是默認(rèn)的選擇,但我們將在21.3節(jié)中看到,合理選擇網(wǎng)絡(luò)的連接性對(duì)于實(shí)現(xiàn)高效學(xué)習(xí)十分重要。梯度與學(xué)習(xí)在19.6節(jié)中,我們介紹了一種基于梯度下降的監(jiān)督學(xué)習(xí)方法:計(jì)算損失函數(shù)關(guān)于權(quán)重的梯度,并沿梯度方向調(diào)整權(quán)重以降低損失函數(shù)。(如果讀者尚未閱讀19.6節(jié),我們強(qiáng)烈建議在繼續(xù)閱讀接下來(lái)的內(nèi)容之前閱讀19.6節(jié)。)我們可以用完全相同的方法學(xué)習(xí)計(jì)算圖中的權(quán)重。對(duì)于輸出層(outputlayer),即產(chǎn)生網(wǎng)絡(luò)輸出的層,其單元對(duì)應(yīng)的權(quán)重的梯度計(jì)算過(guò)程與19.6節(jié)中的計(jì)算方式基本相同。對(duì)于隱藏層(hiddenlayer),它們與輸出沒有直接聯(lián)系,其單元對(duì)應(yīng)的權(quán)重的梯度計(jì)算過(guò)程會(huì)稍微復(fù)雜一點(diǎn)。現(xiàn)在我們考慮使用平方損失函數(shù)L2,我們將計(jì)算圖21-3中的網(wǎng)絡(luò)關(guān)于單個(gè)訓(xùn)練樣例(x,y)的梯度。(的梯度之和。)設(shè)網(wǎng)絡(luò)輸出的預(yù)測(cè)為,其真實(shí)值為y,那么我們有為了計(jì)算損失函數(shù)關(guān)于權(quán)重的梯度,我們需要使用與第19的分析工具——主要是鏈?zhǔn)椒▌t,。我們將從簡(jiǎn)單的例子入手:一個(gè)連接到輸出單元的權(quán)重,如w3,5。我們直接在定義網(wǎng)絡(luò)的表達(dá)式,即式(21-2)中進(jìn)行運(yùn)算:(21-4)最后一行得以簡(jiǎn)化是因?yàn)閣0,5和w4,5a4不依賴于w3,5,也不依賴于w3,5的系數(shù)a3。比這稍微復(fù)雜一點(diǎn)的情況是考慮與輸出單元沒有直接聯(lián)系的一個(gè)權(quán)重,如w1,3。在這種情形下,我們必須多應(yīng)用一次鏈?zhǔn)椒▌t。其中前幾個(gè)步驟是相同的,因此我們略去它們:(21-5)由此,對(duì)于損失函數(shù)關(guān)于權(quán)重w3,5和w1,3的梯度,我們有了相當(dāng)簡(jiǎn)單的表達(dá)式。如果我們定義為第5單元接收到輸入產(chǎn)生的某種“感知誤差”,那么損失函數(shù)關(guān)于w3,5的梯度為 。這是很有道理的如果是正的,這意味著過(guò)大(g′總是非負(fù)的);如果a3也是正的,那么增大w3,5只會(huì)讓結(jié)果變得更糟,而如果a3是負(fù)的,那么增大w3,5會(huì)減少誤差。a3的大小也很重要:如果在這個(gè)訓(xùn)練樣例中a3很小,那么w3,5在產(chǎn)生誤差方面并不是主要的,也不需要做太大改變。如果我們定義 ,那么關(guān)于w1,3的梯度則為 。因此,單元3關(guān)于輸入的感知誤差為單元5關(guān)于輸入的感知誤差乘以從單元5返回到單元3的路徑的信息。這種現(xiàn)象是十分普遍的,并由此引出了反向傳播(back-propagation)一詞,它表示輸出的誤差通過(guò)網(wǎng)絡(luò)進(jìn)行回傳的方式。這些梯度表達(dá)式的另一個(gè)重要特征是它們以局部導(dǎo)數(shù)為因好將單元j放置在平坦的區(qū)域,它們可能會(huì)非常接近于0(在sigmoid、softplus和tanh函數(shù)的情況下)或正好為0(在ReLU的情況下)。如果導(dǎo)數(shù)很小或?yàn)?,這意味著修改與單位j相關(guān)的權(quán)重對(duì)其輸出的影響可以忽略不計(jì)。這樣的結(jié)果是,層數(shù)較多的深度網(wǎng)絡(luò)可能會(huì)遭遇梯度消失(vanishing gradient)——失。21.3.3節(jié)為此問(wèn)題提供了一種解決方案。我們已經(jīng)展示了,在我們給出的簡(jiǎn)單網(wǎng)絡(luò)示例中,梯度的表達(dá)式十分簡(jiǎn)單,它可以通過(guò)將信息從輸出單元傳回網(wǎng)絡(luò)來(lái)計(jì)算。事實(shí)證明,這個(gè)特點(diǎn)是一般性的。事實(shí)上,正如我們將在21.4.1節(jié)中所述,任何前饋計(jì)算圖的梯度計(jì)算與基本的計(jì)算圖具有相同的結(jié)構(gòu)。這個(gè)性質(zhì)由微分法則直接保證。我們已經(jīng)介紹了梯度計(jì)算的煩瑣細(xì)節(jié),但不用擔(dān)心:對(duì)于每一個(gè)新的網(wǎng)絡(luò)結(jié)構(gòu),我們不需要重新推導(dǎo)式(21-4)和式(21-5)!所有這些梯度都可以通過(guò)自動(dòng)微分(automaticdifferentiation)的方法進(jìn)行計(jì)算,這一方法系統(tǒng)地應(yīng)用微積分法則來(lái)計(jì)算任何數(shù)值程序的梯度。[1]事實(shí)上,深度學(xué)習(xí)中的反向傳播方法只是反向模式(reverse mode)微分一種應(yīng)用,它在網(wǎng)絡(luò)輸入多、輸出相對(duì)較少的情況下應(yīng)用由外而內(nèi)的鏈?zhǔn)椒▌t,并利用了動(dòng)態(tài)規(guī)劃的效率優(yōu)勢(shì)。自動(dòng)微分方法最初是在20世紀(jì)60年代和70年代發(fā)展起來(lái)的,用于優(yōu)化由大型復(fù)雜的Fortran程序定義的系統(tǒng)的參數(shù)。所有深度學(xué)習(xí)的主流軟件包都提供了自動(dòng)微分的功能,因此用戶可以自由地試驗(yàn)不同的網(wǎng)絡(luò)結(jié)構(gòu)、激活函數(shù)、損失函數(shù)及其組合,而無(wú)須進(jìn)行大量的微積分來(lái)推導(dǎo)每個(gè)實(shí)驗(yàn)的新學(xué)習(xí)算法。這引導(dǎo)了一種稱為端到端學(xué)習(xí)(end-to-endlearning)的方法,在這種方法中,機(jī)器翻譯等任務(wù)的復(fù)雜計(jì)算系統(tǒng)可以由幾個(gè)可訓(xùn)練的子系統(tǒng)組成;整個(gè)系統(tǒng)將以端到端的方式根據(jù)輸入/輸出對(duì)進(jìn)行訓(xùn)練。使用這種方法,設(shè)計(jì)者只需對(duì)整個(gè)系統(tǒng)的結(jié)構(gòu)有一個(gè)模糊的概念,無(wú)須預(yù)先確切地知道每個(gè)子系統(tǒng)應(yīng)該做什么,或者如何對(duì)輸入和輸出進(jìn)行標(biāo)記。深度學(xué)習(xí)的計(jì)算圖訓(xùn)練樣例或測(cè)試樣例x被編碼為輸入節(jié)點(diǎn)的值。然后我們考慮輸出層,它將輸出與真值y進(jìn)行比較,得到用于調(diào)整權(quán)重的學(xué)習(xí)信號(hào)。最后,們考慮網(wǎng)絡(luò)中的隱藏層。輸入編碼計(jì)算圖的輸入和輸出節(jié)點(diǎn)是指與輸入數(shù)據(jù)x和輸出數(shù)據(jù)y直接連接的節(jié)點(diǎn)。輸入數(shù)據(jù)的編碼通常是直接的,至少對(duì)每個(gè)訓(xùn)練樣本包含n個(gè)輸入屬性值的因子化數(shù)據(jù)來(lái)說(shuō)是這樣的。如果屬性是布爾值,那么我們將有n個(gè)輸入節(jié)點(diǎn);通常,false映射為輸入0,true映射為輸入1,盡管有時(shí)也會(huì)使用?1和+1常都按原樣使用,盡管它們可能會(huì)被縮放到某個(gè)固定范圍內(nèi);如果不同樣例之間的數(shù)量級(jí)存在較大差別,那么可以將這些值映射到對(duì)數(shù)尺度下。圖像不太符合因子化數(shù)據(jù)的范疇。盡管包含X像素×Y像素的RGB圖像可以看作3XY個(gè)整數(shù)值屬性(通常取值范圍為{0,…,255}),忽略RGB三元組屬于圖像中同一像素的事實(shí),也忽略了像素之間的鄰接關(guān)系十分重要這一事實(shí)。當(dāng)然,我們可以將相鄰的像素映射到網(wǎng)絡(luò)中相鄰的輸入節(jié)點(diǎn)上,但是如果網(wǎng)絡(luò)的內(nèi)部各層完全連通,那么鄰接關(guān)系將完全失去意義。實(shí)際上,用于圖像數(shù)據(jù)的網(wǎng)絡(luò)具有類似數(shù)組的內(nèi)部結(jié)構(gòu),其目的是反映“鄰接”這一含義。我們將在21.3節(jié)中更詳細(xì)地看到這一點(diǎn)。對(duì)于具有兩個(gè)以上取值范圍的類別屬性(如第19章中餐廳等待問(wèn)題中的Type屬性,其值為French、Italian、Thai或Burger),我們通常采用所謂的獨(dú)熱編碼(one-hotencoding)對(duì)其進(jìn)行編碼。具有d個(gè)可能值的屬性由d個(gè)獨(dú)立的輸入位表示。對(duì)任意給定的值,相應(yīng)的輸入位被設(shè)置為1,剩下的其他位將被設(shè)置為0。這通常比將其值映射到整數(shù)的效果更好。如果我們將Type這一屬性表示為整數(shù),那么Thai將為3,Burger將為4。由于網(wǎng)絡(luò)是連續(xù)函數(shù)的組合,因此它必然要注意數(shù)值的鄰接關(guān)系,但在這種情況下,Thai和Burger之間的數(shù)值鄰接的實(shí)際意義微乎其微。輸出層與損失函數(shù)在網(wǎng)絡(luò)的輸出端,將原始數(shù)據(jù)值編碼為圖輸出節(jié)點(diǎn)的實(shí)際值y問(wèn)題與輸入編碼問(wèn)題大致相同。例如,如果網(wǎng)絡(luò)試圖預(yù)測(cè)第12章中的變量,它的取值范圍為,那么我們將使用一個(gè)4位的獨(dú)熱編碼。我們已經(jīng)花了一定篇幅考慮數(shù)據(jù)的標(biāo)簽y,那么對(duì)于預(yù)測(cè)值,我們希望它表現(xiàn)得如何呢?在理想情況下,我們希望預(yù)測(cè)值與我們希望的y值完全匹配,此時(shí)損失將為0——我們就完成了學(xué)習(xí)任務(wù)。實(shí)際中這種情況很少發(fā)生,尤其是在我們開始調(diào)整權(quán)重之前!因此,我們需要思考不正確的輸出值意味著什么,以及如何衡量損失。在推導(dǎo)式(21-4)和式(21-5)中的梯度時(shí),我們采用了平方誤差損失函數(shù),這使得代數(shù)運(yùn)算較為簡(jiǎn)潔,但這不是唯一的選擇。事實(shí)上,在大多數(shù)深度學(xué)習(xí)實(shí)際應(yīng)用中,更常見的做法是將輸出值表述為概率,并使用負(fù)對(duì)數(shù)似然失函數(shù),就像我們?cè)诘?0章中對(duì)最大似然學(xué)習(xí)所做的那樣。最大似然學(xué)習(xí)的目標(biāo)是尋找使觀測(cè)數(shù)據(jù)的概率最大化的w。由于對(duì)數(shù)函數(shù)是單調(diào)函數(shù),這等價(jià)于最大化數(shù)據(jù)的對(duì)數(shù)似然,因此也等價(jià)于最小化負(fù)對(duì)數(shù)似然,即損失函數(shù)。(回想在第20章中,取對(duì)數(shù)的做法使得概率的乘積變成求和,這更便于導(dǎo)數(shù)計(jì)算。)換句話說(shuō),我們希望找到使得N個(gè)樣例的負(fù)對(duì)數(shù)似然之和最小化的w*:(21-6)在深度學(xué)習(xí)的相關(guān)文獻(xiàn)中,最小化交叉熵(cross-entropy)損失是一種常見的方法。交叉熵,記為H(P,Q),是兩個(gè)分布P和Q之間差異性的一種度量。[2]它的一般性定義如下:交叉熵不是一般意義下的距離,因?yàn)镠(P,P)不為零;相反,它等于熵H(P)。我們?nèi)菀鬃C明,其中DKL為庫(kù)爾貝克-萊布勒散度(Kullback-Leiblerdivergence),它滿足 。因此,對(duì)于固定的P,改變Q使得交叉熵達(dá)到最小等價(jià)于最小化KL散度。在機(jī)器學(xué)習(xí)中,我們通常取定義中的P為訓(xùn)練樣例的真實(shí)分布并令Q為假設(shè)的預(yù)。通過(guò)調(diào)整w使交叉熵最小化,從而使得假設(shè)預(yù)測(cè)的分布與真實(shí)分布盡可能接近。實(shí)際上,我們并不能成功地最小化該交叉熵,因?yàn)槲覀儫o(wú)法獲得數(shù)據(jù)的真實(shí)分布;但我們可以從中采樣以獲得樣本,此式(21-6)中對(duì)實(shí)際數(shù)據(jù)的求和將近似于式(21-7)中的期望值。為了最小化負(fù)對(duì)數(shù)似然(或交叉熵),我們需要將網(wǎng)絡(luò)的輸出表述為概率。例如,如果網(wǎng)絡(luò)有一個(gè)激活函數(shù)為sigmoid的輸出單元,并且它正在學(xué)習(xí)布爾分類,我們可以將輸出值直接解釋為樣例屬于正類的概率(事實(shí)上,這正是邏輯斯諦回歸的做法,見19.4節(jié))因此,對(duì)于布爾分類問(wèn)題,我們通常在輸出層使用sigmoid激活函數(shù)。多分類問(wèn)題在機(jī)器學(xué)習(xí)中非常常見。例如,用于對(duì)象識(shí)別的分類器通常需要識(shí)別成千上萬(wàn)個(gè)不同類別的對(duì)象。試圖預(yù)測(cè)句子中下一個(gè)單詞的自然語(yǔ)言模型可能需要在成千上萬(wàn)個(gè)可能的單詞中進(jìn)行選擇。對(duì)于這種預(yù)測(cè),我們需要網(wǎng)絡(luò)輸出一個(gè)關(guān)于分類的分布,也就是說(shuō),如果有d個(gè)可能的答案,那么我們需要d個(gè)表示概率且總和為1的輸出節(jié)點(diǎn)。為了實(shí)現(xiàn)這一點(diǎn),我們將使用一個(gè)softmax層,對(duì)于一個(gè)給定的輸入向量,它將輸出一個(gè)d維向量。其中輸出向量的第k元素由下式給出:根據(jù)其函數(shù)構(gòu)造方式可知,softmax函數(shù)輸出一個(gè)元素和為1的非負(fù)向量。通常,每個(gè)輸出節(jié)點(diǎn)的輸入ink是前一層輸出的加權(quán)線性和。由于采用了指數(shù)函數(shù),softmax層將放大輸入之間的差異:例如,如果一個(gè)輸入向量為,那么其輸出將為〈0.946, 0.047, 0.001〉。盡管如此,softmax與max函數(shù)不同,它是光滑可微的(習(xí)題21.SOFG)。容易證明sigmoid是d = 2情形下的softmax(習(xí)題21.SMSG)。換句話說(shuō),正如sigmoid單元通過(guò)網(wǎng)絡(luò)傳播二進(jìn)制類(binaryclass)信息一樣,softmax單元將傳播多類(multiclass)信息。對(duì)于回歸問(wèn)題,即目標(biāo)值y是連續(xù)值的問(wèn)題,我們通常使用線性輸出層(換句話說(shuō),,即沒有任何激活函數(shù)g),并將其解釋為具有固定方差的高斯預(yù)測(cè)的平均值。正如我們?cè)?0.2.4節(jié)中指出的,最大化固定方差高斯分布的似然(即最小化負(fù)對(duì)數(shù)似然)線性變換得到的結(jié)果。還有許多可供選擇的輸出層。例如,混合密度(mixture 層表示使用混合高斯分布的輸出層(見20.3.1節(jié)以了解混合高斯的更多細(xì)節(jié))。這樣的輸出層將預(yù)測(cè)每個(gè)混合成分的相對(duì)頻率、每個(gè)成分的平均值和每個(gè)成分的方差。只要這些輸出值被損失函數(shù)恰當(dāng)?shù)亟忉尀檎鎸?shí)輸出值y的概率,那么在訓(xùn)練之后,網(wǎng)絡(luò)將在由前一層給出的特征空間中擬合混合高斯模型。隱藏層在訓(xùn)練過(guò)程中,神經(jīng)網(wǎng)絡(luò)將被提供大量的輸入值x和與輸入相應(yīng)的輸出值y。在處理輸入向量x時(shí),神經(jīng)網(wǎng)絡(luò)將執(zhí)行若干次中間計(jì)算,最終輸出y。我們可以把網(wǎng)絡(luò)每一層計(jì)算得到的值看作輸入x的不同表示,那利進(jìn)行,那么所有這些轉(zhuǎn)換的組合將成功把輸入轉(zhuǎn)換為我們想要的輸出的復(fù)雜的端到端轉(zhuǎn)換(例如,從圖像輸入到輸出類別“長(zhǎng)頸鹿”),它學(xué)習(xí)。在形成這些內(nèi)部轉(zhuǎn)換的過(guò)程中,深層網(wǎng)絡(luò)經(jīng)常可以發(fā)現(xiàn)一些有意義的數(shù)據(jù)的中間表示。例如,學(xué)習(xí)目標(biāo)為識(shí)別圖像中復(fù)雜對(duì)象的網(wǎng)絡(luò)可能會(huì)形成一個(gè)用于檢測(cè)有用子單元(如圖像中的邊、角、橢圓、眼睛、臉)的內(nèi)部層。當(dāng)然這種結(jié)果也不一定會(huì)發(fā)生——確的。神經(jīng)網(wǎng)絡(luò)的隱藏層通常不如輸出層那么多樣化。在對(duì)多層網(wǎng)絡(luò)研究的前25年中(約1985—2010年),人們幾乎只使用sigmoid和tanh作為內(nèi)部節(jié)點(diǎn)的激活函數(shù)。2010年前后,ReLU和softplus逐漸變得流行,其中部分原因是人們認(rèn)為它們可以避免21.1.2節(jié)中提到的梯度消失問(wèn)題。一些在越來(lái)越深的網(wǎng)絡(luò)中進(jìn)行的實(shí)驗(yàn)表明,在許多情況下,如果權(quán)重總數(shù)固定,使用較深且相對(duì)較窄的網(wǎng)絡(luò)通常比使用較淺且較寬的網(wǎng)絡(luò)有更好的學(xué)習(xí)效果。21.5節(jié)中的圖21-7給出了反映該現(xiàn)象的一個(gè)經(jīng)典示例。當(dāng)然,除了考慮寬度和深度之外,計(jì)算圖還需要考慮許多其他結(jié)同結(jié)構(gòu)的工具對(duì)解決實(shí)際問(wèn)題至關(guān)重要。卷積網(wǎng)絡(luò)我們?cè)?1.2.1節(jié)中提到,不能把圖像簡(jiǎn)單看作輸入為像素值的向會(huì)得到相同的結(jié)果。此外,假設(shè)圖像有n個(gè)像素輸入且第一個(gè)隱藏層有個(gè)單元。如果輸入和第一個(gè)隱藏層完全連接,則意味著網(wǎng)絡(luò)有n2個(gè)權(quán)重;對(duì)于一個(gè)典型的百萬(wàn)像素RGB圖像,它的權(quán)重將有9萬(wàn)億個(gè)。如此練算法。這些層面的考慮提示我們應(yīng)該這樣構(gòu)造第一個(gè)隱藏層:每個(gè)隱藏單元只接收來(lái)自圖像的一個(gè)小局部區(qū)域的輸入。這樣的做法將一舉兩得。首先,它至少在局部上注重了鄰接關(guān)系。(我們稍后將看到,如果后續(xù)層也具有相同的局部性,那么網(wǎng)絡(luò)將在全局意義下注重鄰接性。)其次,它減少了權(quán)重的數(shù)量:如果每個(gè)局部區(qū)域有個(gè)像素,那么權(quán)的總數(shù)量將為。到目前為止我們對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的構(gòu)思還不錯(cuò),但是我們忽略了圖像的另一個(gè)重要性質(zhì):簡(jiǎn)單來(lái)說(shuō),任何在圖像的一個(gè)小局部區(qū)域中可以檢測(cè)到的物體(如眼睛或者一片草坪),如果它們出現(xiàn)在圖像的另一個(gè)小局部區(qū)域內(nèi),那么從視覺上看它們將是一樣的。換言之,我們希望網(wǎng)絡(luò)在處理圖像數(shù)據(jù)時(shí),能在小尺度到中等尺度上表現(xiàn)出近似空間不變性(spatialinvariance)[3]。我們不一定期望圖像的上半部分與下半部分相似,因此存在一個(gè)尺度,一旦超過(guò)這個(gè)尺度,空間不變性就不再成立。類似的想法可以用于處理時(shí)序數(shù)據(jù),例如音頻波形。它們通常表現(xiàn)出時(shí)間不變性——(21.6節(jié))本身帶有時(shí)間不變性。局部空間不變性可以通過(guò)將隱藏單元與一個(gè)局部區(qū)域的連接的l個(gè)權(quán)重限制為對(duì)于每個(gè)隱藏單元都相等來(lái)實(shí)現(xiàn)。(權(quán)重重相等)。這使得隱藏單元能成為圖像的每個(gè)局部區(qū)域,我們可能有d個(gè)具有不同權(quán)重集合的隱藏單元。dl個(gè),這個(gè)數(shù)字不僅遠(yuǎn)小于n2圖像大小n無(wú)關(guān)。因此,利用一些先驗(yàn)知識(shí)(即鄰接關(guān)系和空間不變性),我們可以設(shè)計(jì)出參數(shù)少得多、學(xué)習(xí)速度更快的模型。卷積神經(jīng)網(wǎng)絡(luò)(convolutionalneuralnetwork,CNN)是一種至少在較淺的層中包含空間局部連接的網(wǎng)絡(luò),并且在每一層中,單元之間權(quán)重是相同的。將多個(gè)局部區(qū)域內(nèi)權(quán)重置為相同的權(quán)重模式稱為核(kernel),將核應(yīng)用于圖像像素(或后續(xù)層中的空間上有序的單元)的過(guò)程稱為卷積[4]?!熬矸e”一詞。核與卷積最簡(jiǎn)單的表達(dá)方式是用一維表示,而不是二維或更高維的表示,因此我們將假設(shè)輸入向量x的大小為n,它對(duì)應(yīng)于一維圖像中的n個(gè)像素,核向量k的大小為l。(為了簡(jiǎn)單起見,我們令l為一個(gè)奇數(shù)。)所有的思想都容易直接推廣到更高維的情況。我們用符號(hào)?表示卷積運(yùn)算,例如z=x?k。其運(yùn)算定義如下:(21-8)換句話說(shuō),第i個(gè)位置的輸出為核k與x中以xi為中心、寬度為l的片段的內(nèi)積。我們?cè)趫D21-4中以核向量[+1,?1,+1]為例對(duì)該過(guò)程作出說(shuō)明,它檢測(cè)目標(biāo)是一維圖像中較暗的點(diǎn)(在二維情況中可能是較暗的線)。注意,在這個(gè)例子中,核的中心之間隔著2像素的距離;我們稱核所用的步長(zhǎng)(stride)s = 2。注意,輸出層的像素相對(duì)較少:由于步長(zhǎng)的存在,像素的數(shù)量從n減少到大約n/s(在二維情況下,像素的數(shù)量大約為n/sxsy,其中,sx和sy分別代表圖像在x方向和y方向上的步長(zhǎng))。我們之所以說(shuō)“大約”,是因?yàn)閳D像在邊緣處需要特別考慮:在圖21-4中,卷(可以是0,也可以等于外部像素),這樣一來(lái),核就可以精確地被應(yīng)用?n/s?次。對(duì)于較小的核,我們通常采用s = 1,因此輸出將與圖像有相同的大?。ㄒ妶D21-5)。圖21-4 一維卷積運(yùn)算的例子,其中核大小l=3,步長(zhǎng)s=2。其中響應(yīng)的峰值集中在較暗(光強(qiáng)較低)的輸入像素上。在將結(jié)果輸入下一個(gè)隱藏層之前,它們通常會(huì)經(jīng)過(guò)一個(gè)非線性激活數(shù)(未在圖中給出)圖21-5 一個(gè)處理一維圖像數(shù)據(jù)的卷積神經(jīng)網(wǎng)絡(luò)的前兩層,其核大小l=3,步長(zhǎng)s=1。最左側(cè)與最右側(cè)作了填充,以使隱藏層與輸入有相同的大小。紅色所標(biāo)記的區(qū)域是第二層隱藏層中個(gè)單元的感受野。一般來(lái)說(shuō),越深的單元其感受野的范圍越大利用一個(gè)具有合適的嵌套循環(huán)結(jié)構(gòu)的程序,我們可以簡(jiǎn)單地實(shí)現(xiàn)核應(yīng)用于圖像的運(yùn)算;同時(shí),它也可以表述為單步矩陣運(yùn)算,就像式(21-1)中權(quán)重矩陣的應(yīng)用一樣。例如,圖21-4中所示的卷積操作可以看作如下的矩陣乘法:(21-9)在這個(gè)權(quán)重矩陣中,核出現(xiàn)在每一行,并按照步長(zhǎng)相對(duì)于前一行進(jìn)行移動(dòng),我們不必顯式地構(gòu)造權(quán)重矩陣(因?yàn)樗蟛糠值奈恢脼?),但是卷積可以看作一個(gè)線性矩陣運(yùn)算這一事實(shí)暗示我們,梯度下降可以簡(jiǎn)單且高效地應(yīng)用于CNN,就像它可以應(yīng)用于普通的神經(jīng)網(wǎng)絡(luò)一樣。如前所述,我們將會(huì)有d個(gè)核,而不是只有一個(gè);因此,當(dāng)步長(zhǎng)為1時(shí),輸出的大小將增大d倍。這意味著一個(gè)二維的輸入數(shù)組將輸出三維的隱藏單元數(shù)組,其中第三維的大小為d。以這種方式對(duì)隱藏層進(jìn)行組織是很重要的,這使得來(lái)自圖像的某個(gè)特定位置的所有核輸出都將與該位置相聯(lián)系。但與表示圖像的維度不同,這個(gè)額外的“核維度”沒有任何鄰接性質(zhì),因此對(duì)該維度應(yīng)用卷積運(yùn)算是沒有意義的。CNN靈感最初來(lái)自于神經(jīng)科學(xué)中提出的視覺皮層模型。在這些模型中,神經(jīng)元的感受野(receptivefield)是指感覺輸入中能夠影響神經(jīng)元激活狀態(tài)的部分。在一個(gè)卷積神經(jīng)網(wǎng)絡(luò)中,第一個(gè)隱藏層中一個(gè)單元的感受野會(huì)很小——恰好為核的大小,即l個(gè)像素。在網(wǎng)絡(luò)的更深層中,一個(gè)單元的感受野會(huì)大得多。圖21-5說(shuō)明了第二個(gè)隱藏層中的一個(gè)單元的感受野,該單元的感受野包含5個(gè)像素。如圖21-5所示,當(dāng)步長(zhǎng)為1,第m個(gè)隱藏層中的節(jié)點(diǎn)的感受野大小將;因此,其增長(zhǎng)速度關(guān)于m是線性的。(在二維圖像中,每個(gè)維度的感受野都隨m線性增長(zhǎng),因此,感受野面積的增長(zhǎng)將是二次的。)當(dāng)步長(zhǎng)大于1時(shí),第m層中的每個(gè)像素將表示第m?1層中的s個(gè)像素;因此,感受野將的速度增長(zhǎng),即與網(wǎng)絡(luò)深度呈指數(shù)關(guān)系。池化層也會(huì)產(chǎn)生同樣的效果,我們將在下面進(jìn)行討論。池化與下采樣神經(jīng)網(wǎng)絡(luò)中的池化(pooling)鄰單元的信息。與卷積層類似,池化層也有一個(gè)大小為l,步長(zhǎng)為s的核,但是它的運(yùn)算方式是固定的,而不是學(xué)習(xí)得到的。通常來(lái)說(shuō),池化層不與激活函數(shù)相連接。它有兩種常見的形式。平均池化計(jì)算l進(jìn)行卷積。如果我們令l=s分辨率——以s尺度進(jìn)行下采樣(downsample)。在池化之后,一個(gè)占用10s個(gè)像素的對(duì)象將只占用10個(gè)像素。對(duì)于同一個(gè)學(xué)習(xí)得到的分類器,如果它能識(shí)別出原始圖像中大小為10低了后續(xù)層中所需的權(quán)重?cái)?shù)量,從而降低了計(jì)算成本并加快了學(xué)習(xí)速度。最大池化計(jì)算l它在語(yǔ)義上與平均池化有一些不同。現(xiàn)在假設(shè)我們將最大池化用于圖21-4中的隱藏層[5,9,4]:其結(jié)果將為9所檢測(cè)的區(qū)域內(nèi)存在一個(gè)較暗的點(diǎn)。換句話說(shuō),最大池化實(shí)現(xiàn)的是邏輯析取的運(yùn)算,表明該單元的感受野內(nèi)存在某個(gè)特征。如果我們的目標(biāo)是將圖像歸類為c類中的一類,那么網(wǎng)絡(luò)的最后一層將是具有c個(gè)輸出單元的softmax。卷積神經(jīng)網(wǎng)絡(luò)的淺層的大小通常與圖像大小相近,所以在淺層與輸出層之間必然存在某些層,這些層使得層的大小顯著下降。步長(zhǎng)大于1的卷積層和池化層都能實(shí)現(xiàn)減小層的大小的效果。我們也可以通過(guò)使用一個(gè)輸出單元比輸入單元少的全連接層來(lái)實(shí)現(xiàn)層的大小的縮減。通常,在卷積神經(jīng)網(wǎng)絡(luò)最后的softmax層之前都會(huì)有一個(gè)到兩個(gè)這樣的層。卷積神經(jīng)網(wǎng)絡(luò)的張量運(yùn)算我們已經(jīng)在式(21-1)與式(21-3)中注意到,矩陣與向量的表示有助于保持?jǐn)?shù)學(xué)推導(dǎo)的簡(jiǎn)潔與優(yōu)雅,而且能提供關(guān)于計(jì)算圖的簡(jiǎn)明描述。向量和矩陣是張量(tensor)在一維和二維情況下的特例,在深度學(xué)習(xí)術(shù)語(yǔ)中,張量可以是任意多維的數(shù)組。[5]要給張量一個(gè)合適的數(shù)學(xué)定義,要求張量在基變換下有一定的不變性。對(duì)于卷積神經(jīng)網(wǎng)絡(luò),張量是一種跟蹤數(shù)據(jù)在網(wǎng)絡(luò)各層傳輸過(guò)程中的“形狀”的表示方法。這一點(diǎn)很重要,因?yàn)榫矸e的概念依賴于鄰接的概以將神經(jīng)網(wǎng)絡(luò)的每一層簡(jiǎn)潔地描述為張量輸入到張量輸出的映射。將卷積神經(jīng)網(wǎng)絡(luò)描述為張量運(yùn)算的最后一個(gè)原因是出于對(duì)計(jì)算效率的考慮:如果將一個(gè)網(wǎng)絡(luò)表述為張量運(yùn)算的序列,那么深度學(xué)習(xí)軟件包能生成底層計(jì)算結(jié)構(gòu)高度優(yōu)化的編譯代碼。深度學(xué)習(xí)的程序通常在GPU(圖形處理器)或TPU(張量處理器)上運(yùn)行,這使得高度并行運(yùn)算成為可能。例如,谷歌研發(fā)的第三代TPUpods的計(jì)算能力相當(dāng)于一千萬(wàn)臺(tái)筆記本計(jì)算機(jī)。如果你要使用一個(gè)較大的數(shù)據(jù)集訓(xùn)練一個(gè)較大的卷積神經(jīng)網(wǎng)絡(luò),那么利用這些能力至關(guān)重要。因此,我們每次運(yùn)算通常會(huì)同時(shí)處理一批圖像,而不是每次處理一個(gè)圖像;這也與隨機(jī)梯度下降算法每次計(jì)算關(guān)于小批量訓(xùn)練樣例的梯度的方式相吻合,正如我們將在21.4節(jié)中看到的那樣。讓我們用一個(gè)示例來(lái)說(shuō)明這些特點(diǎn)。假設(shè)我們將使用256像素×256像素的RGB圖像進(jìn)行訓(xùn)練,每個(gè)批量的大小為64。在這種情況下,輸入將是一個(gè)四維張量,其大小為256×256×3×64。接著我們使用96個(gè)大小為5×5×3的核對(duì)其進(jìn)行處理,其中x方向和y方向上的步長(zhǎng)均為2。這使得輸出張量的大小為128×128×96×64。我們通常稱這樣的張量為特征映射(feature map),該例中,它由96個(gè)通道組成,其中每個(gè)通道攜帶一個(gè)特征的信息。注意,和輸入張量不同,該特征映射不再擁有專門的顏色通道;盡管如此,如果學(xué)習(xí)算法發(fā)現(xiàn)顏色對(duì)于網(wǎng)絡(luò)最終的預(yù)測(cè)有幫助,它仍可能出現(xiàn)在各個(gè)特征通道中。殘差網(wǎng)絡(luò)殘差網(wǎng)絡(luò)(residualnetwork)是用來(lái)構(gòu)造深層網(wǎng)絡(luò)且同時(shí)避免梯度消失問(wèn)題的一種流行且成功的方法。典型的深層模型采用的層使用第i–1層的全部特征表示來(lái)學(xué)習(xí)第i的新的表示。利用我們?cè)谑剑?1-3)記為第i層的單元的值,那么我們有由于網(wǎng)絡(luò)的每一層將前一層的表示完全取代,所以每一層所做的操作必須有意義。每一層必須至少保留前一層中所包含的與任務(wù)相關(guān)的信息。如果我們將任意某一層i的權(quán)重置為零,即,那么整個(gè)網(wǎng)絡(luò)將無(wú)法工作。如果我們同時(shí)令,網(wǎng)絡(luò)甚至無(wú)法學(xué)習(xí):第i層無(wú)法學(xué)習(xí)是因?yàn)樗邮盏降膩?lái)自第i–1層的輸入沒有任何差異性,第i–1無(wú)法學(xué)習(xí)是因?yàn)樵谔荻鹊姆聪騻鞑ミ^(guò)程中,來(lái)自第i層的梯度始終為零。當(dāng)然,這些是比較極端的例子,但是它們說(shuō)明了隱藏層作為網(wǎng)絡(luò)信號(hào)傳輸?shù)闹虚g過(guò)程,應(yīng)當(dāng)滿足一定要求。殘差網(wǎng)絡(luò)的核心思想在于,它認(rèn)為每一層應(yīng)當(dāng)對(duì)前一層的表示進(jìn)行擾動(dòng),而不是完全替換它。如果學(xué)習(xí)到的擾動(dòng)較小,那么后一層的輸出將接近于前一層的輸出。這樣的想法可以由如下的第i層關(guān)于第i?1層的式子表述:(21-10)其中g(shù)r表示殘差層的激活函數(shù)。這里我們把f看作殘差,它對(duì)從第i?1層傳遞到第i層的默認(rèn)信息進(jìn)行擾動(dòng)。我們通常選擇帶有一個(gè)非線性層與一個(gè)線性層的神經(jīng)網(wǎng)絡(luò)作為計(jì)算殘差的函數(shù):其中W和V為學(xué)習(xí)到的帶一般偏差權(quán)重的權(quán)重矩陣。殘差網(wǎng)絡(luò)使得有效地學(xué)習(xí)一個(gè)極度深層的網(wǎng)絡(luò)成為可能。考慮一下,如果我們將某一層置為V= 0以使該層失效會(huì)發(fā)生什么。那么殘差將會(huì)消失,式(21-10)將被化簡(jiǎn)為現(xiàn)在我們假設(shè)gr由ReLU激活函數(shù)構(gòu)成, 同樣也為關(guān)于其輸入的函數(shù):。在這種情況下,我們有其中倒數(shù)第二步成立是因?yàn)镽eLU(ReLU(x)) = ReLU(x)。換句說(shuō),在以ReLU為激活函數(shù)的殘差網(wǎng)絡(luò)中,一個(gè)權(quán)重為零的層將僅僅把它的輸入原封不動(dòng)地輸出。網(wǎng)絡(luò)的其他部分可以認(rèn)為這一層不存在。對(duì)于殘差網(wǎng)絡(luò),傳遞信息是其固有的特征,然而傳統(tǒng)的網(wǎng)絡(luò)必須學(xué)習(xí)如何傳遞信息,并且可能會(huì)因?yàn)閰?shù)選取不當(dāng)從而導(dǎo)致災(zāi)難性的失敗。殘差網(wǎng)絡(luò)通常與卷積層一起用于視覺應(yīng)用,但事實(shí)上,殘差網(wǎng)絡(luò)是一種通用的網(wǎng)絡(luò)結(jié)構(gòu),它使深度網(wǎng)絡(luò)更加健壯,并使研究人員能夠更自由地設(shè)計(jì)復(fù)雜和異構(gòu)的網(wǎng)絡(luò)并進(jìn)行實(shí)驗(yàn)。在撰寫本書時(shí),層數(shù)達(dá)數(shù)百層的殘差網(wǎng)絡(luò)已經(jīng)不罕見了。這類網(wǎng)絡(luò)的設(shè)計(jì)正在迅速發(fā)展,因此即使我們可以對(duì)其提供某些額外的細(xì)節(jié)描述,它們?cè)诒緯霭嬗∷⒅翱赡芫鸵呀?jīng)過(guò)時(shí)了。如果讀者希望了解特定應(yīng)用場(chǎng)景下的最佳網(wǎng)絡(luò)架構(gòu),建議查閱最近的研究出版物。學(xué)習(xí)算法神經(jīng)網(wǎng)絡(luò)的訓(xùn)練意味著調(diào)整網(wǎng)絡(luò)的參數(shù)以使訓(xùn)練集上的損失函數(shù)達(dá)到最小。原則上,任何優(yōu)化算法都可以應(yīng)用其中。但在實(shí)際應(yīng)用中,現(xiàn)代神經(jīng)網(wǎng)絡(luò)幾乎都采用隨機(jī)梯度下降(SGD)或其一些變種進(jìn)行訓(xùn)練。我們?cè)?9.6.2節(jié)中介紹了標(biāo)準(zhǔn)梯度下降及其隨機(jī)版本。在此,我們的目標(biāo)是最小化損失函數(shù)L(w),其中w表示網(wǎng)絡(luò)的所有參數(shù)。梯度下降的每一步更新有如下形式:其中為學(xué)習(xí)率。對(duì)于標(biāo)準(zhǔn)梯度下降,損失函數(shù)L的定義是關(guān)于整個(gè)訓(xùn)練集的。對(duì)于SGD,它在每次更新中只考慮隨機(jī)選取m個(gè)樣例的小批量。正如我們?cè)?.2節(jié)中所述,關(guān)于高維連續(xù)空間優(yōu)化方法的文獻(xiàn)有很多,其中包括大量對(duì)標(biāo)準(zhǔn)梯度下降算法的改進(jìn)。我們?cè)诖瞬灰灰惶接?,但其中有一些與訓(xùn)練神經(jīng)網(wǎng)絡(luò)高度相關(guān)的想法是值得一提的。大多數(shù)用于解決實(shí)際問(wèn)題的神經(jīng)網(wǎng)絡(luò),其權(quán)重w訓(xùn)練集也非常巨大。這些難點(diǎn)迫使我們使用批量大小m相對(duì)較小的SGD:隨機(jī)性有助于算法擺脫高維權(quán)重空間中的局部極小值(就像模擬退火那樣,見4.1節(jié));而且小批量保證了每一步權(quán)重更新的計(jì)算成本都是一個(gè)較小的常數(shù),且它與訓(xùn)練集的大小無(wú)關(guān)。由于SGD此批量大小通常選取能最大限度地利用GPU或TPU硬件的并行能力的大小。小的學(xué)習(xí)率。選擇一個(gè)合適的學(xué)習(xí)率時(shí)間表通常需要經(jīng)過(guò)實(shí)驗(yàn)與試錯(cuò)。消失,但通常伴隨著較大的方差,這導(dǎo)致梯度指向完全錯(cuò)誤的方向,致使收斂變得困難。這個(gè)問(wèn)題的一個(gè)解決方法是在訓(xùn)練的過(guò)程中增大批量大小,另一個(gè)解決方法則是利用動(dòng)量(momentum)的思想,它保留之前批量的平均梯度以彌補(bǔ)批量較小的不足。softmax、sigmoid和tanh激活函數(shù)的指數(shù)運(yùn)算中,以及在使用非常深的網(wǎng)絡(luò)和循環(huán)網(wǎng)絡(luò)(21.6節(jié))進(jìn)行迭代計(jì)算時(shí)(導(dǎo)致激活或梯度的消失或爆炸),這些問(wèn)題尤其嚴(yán)重。將一直運(yùn)行算法,直到測(cè)試誤差不再隨著時(shí)間的增加而減少。一般來(lái)說(shuō),這并不意味著我們已經(jīng)達(dá)到了損失函數(shù)的全局極小值或局部極小梯度的估計(jì)太不準(zhǔn)確以至于無(wú)法取得進(jìn)一步的進(jìn)展。計(jì)算圖中的梯度計(jì)算在21.1.2節(jié)中,我們推導(dǎo)了某個(gè)特定(非常簡(jiǎn)單的)網(wǎng)絡(luò)中損失函數(shù)關(guān)于權(quán)重的梯度。我們觀察到,梯度可以通過(guò)將誤差信息從網(wǎng)絡(luò)的輸出層反向傳播到隱藏層來(lái)計(jì)算。我們還認(rèn)為,這個(gè)結(jié)果適用于任何一般的前饋計(jì)算圖。在本節(jié)中,我們將解釋它是如何運(yùn)作的。圖21-6給出了計(jì)算圖中的一個(gè)一般中間節(jié)點(diǎn)。(節(jié)點(diǎn)h的入度和出度均為2,這與分析過(guò)程無(wú)關(guān)。)點(diǎn)f和g的輸入計(jì)算某任意函數(shù)h。反過(guò)來(lái),節(jié)點(diǎn)h將其值傳遞給節(jié)點(diǎn)j和k。圖21-6 任意計(jì)算圖中梯度信息反向傳播的圖示。網(wǎng)絡(luò)輸出的前向計(jì)算從左到右進(jìn)行,梯度反向傳播從右到左進(jìn)行傳入的消息將被收集起來(lái),并在計(jì)算后將新消息傳遞給下一層。如圖21-6所示,這些消息均為損失函數(shù)L的偏導(dǎo)數(shù)。例如,后向消息為損失函數(shù)L關(guān)于j的第一個(gè)輸入(即從h到j(luò)的前向消息)的偏導(dǎo)數(shù)?,F(xiàn)在,節(jié)點(diǎn)h通過(guò)節(jié)點(diǎn)j和節(jié)點(diǎn)k對(duì)損失函數(shù)L產(chǎn)生影響,因此我們有(21-11)利用式(21-11),節(jié)點(diǎn)h可以收集來(lái)自節(jié)點(diǎn)j和節(jié)點(diǎn)k的傳入消息并失函數(shù)L關(guān)于h的導(dǎo)數(shù)?,F(xiàn)在,為計(jì)算傳出消息我們需要用到(21-12)在式(21-12)中, 已通過(guò)式(21-11)計(jì)算得到,且與恰好分別是h關(guān)于第一個(gè)與第二個(gè)參數(shù)的導(dǎo)數(shù)。舉例來(lái)說(shuō),果h是一個(gè)乘法節(jié)點(diǎn)(即),那么將有與。深度學(xué)習(xí)的軟件包通常都帶有節(jié)點(diǎn)類型(加法、乘法、sigmoid等)的庫(kù),對(duì)于每個(gè)類型的節(jié)點(diǎn),軟件都知道如何根據(jù)式(21-12)的要求計(jì)算自己的導(dǎo)數(shù)。反向傳播的過(guò)程從輸出節(jié)點(diǎn)出發(fā),其中每個(gè)初始消息是根據(jù)預(yù)測(cè)值和訓(xùn)練數(shù)據(jù)中的真實(shí)值y直接從L的表達(dá)式計(jì)算得到的。在每個(gè)內(nèi)部節(jié)點(diǎn),傳入的后向消息將根據(jù)式(21-11)進(jìn)行求和,傳出消息將根據(jù)式(21-12)得到。在該計(jì)算圖中的每個(gè)代表權(quán)重w的節(jié)點(diǎn)處,該程都將終止(例如,圖21-3b中的淡紫色橢圓)。此時(shí),關(guān)于w的傳入息的總和即為 ——恰好是我們更新w所需的梯度。習(xí)題21.BPRE要求將此過(guò)程應(yīng)用于圖21-3中的簡(jiǎn)單網(wǎng)絡(luò),以重新推導(dǎo)式(21-4)和式(21-5)中的梯度表達(dá)式。卷積網(wǎng)絡(luò)(21.3節(jié))和循環(huán)網(wǎng)絡(luò)(21.6節(jié))中所使用的權(quán)重共享通過(guò)將每個(gè)共享權(quán)重的節(jié)點(diǎn)視為計(jì)算圖中具有多重輸出的單個(gè)節(jié)點(diǎn)來(lái)實(shí)現(xiàn)。在反向傳播過(guò)程中,這將導(dǎo)致有多重的傳入梯度消息。根據(jù)式(21-11),這意味著關(guān)于被共享的權(quán)重的梯度是網(wǎng)絡(luò)中相關(guān)聯(lián)的每個(gè)位置的梯度貢獻(xiàn)的總和。與計(jì)算圖中的節(jié)點(diǎn)數(shù)呈線性關(guān)系,這與前向計(jì)算的代價(jià)是一樣的。此高效的代碼。注意,圖21-6中的消息不必是標(biāo)量,它們可以是向量、矩陣或更高維的張量,這樣梯度計(jì)算就可以被安排到GPU或TPU上,以利用其并行計(jì)算能力。反向傳播的一個(gè)缺點(diǎn)是,它需要存儲(chǔ)正向傳播期間所計(jì)算的大部分中間值,以便計(jì)算反向傳播中的梯度。這意味著訓(xùn)練網(wǎng)絡(luò)的總內(nèi)存開銷與整個(gè)網(wǎng)絡(luò)中的單元數(shù)成正比。因此,盡管網(wǎng)絡(luò)本身可以僅用具有大量循環(huán)的代碼隱式地表示,而不需要根據(jù)數(shù)據(jù)的結(jié)構(gòu)顯式地表示,但反向傳播的代碼仍要求顯式地存儲(chǔ)所有的中間結(jié)果。批量歸一化批量歸一化(batchnormalization)是一種常用的技巧,它通過(guò)對(duì)每個(gè)小批量樣例在網(wǎng)絡(luò)內(nèi)部層生成的值進(jìn)行重新縮放來(lái)提高SGD的收斂速本書中。在某種程度上,批量歸一化的效果似乎與殘差網(wǎng)絡(luò)的效果相似??紤]網(wǎng)絡(luò)中的某個(gè)節(jié)點(diǎn)z,節(jié)點(diǎn)z關(guān)于其中m個(gè)樣例的輸出值為z1,…,zm。批量歸一化將每一個(gè)zi替換為一個(gè)新的值:其中是小批量中的z的均值,是 的標(biāo)準(zhǔn)差,是一個(gè)用防止除法中分母為零的較小的常數(shù),以及是可學(xué)習(xí)的參數(shù)。批量歸一化根據(jù)和值,對(duì)中間量的均值和方差進(jìn)行歸一化。這得訓(xùn)練一個(gè)深層網(wǎng)絡(luò)變得簡(jiǎn)單得多。如果某一層的權(quán)重非常小,并且該層的標(biāo)準(zhǔn)差減小至接近0,那么如果沒有批量歸一化,該層的信息就會(huì)丟失。批量歸一化可以防止這種情況的發(fā)生,也使得人們不必對(duì)網(wǎng)絡(luò)中所有權(quán)重進(jìn)行仔細(xì)地初始化,就可以確保每一層中的節(jié)點(diǎn)處于使得信息能夠順利傳播的合適范圍。為了引入批量歸一化,我們通常在網(wǎng)絡(luò)參數(shù)中引入?yún)?shù)與,它可以關(guān)于每個(gè)節(jié)點(diǎn)是特定的,或者關(guān)于層是特定的,如此一來(lái)它們也將被包括在學(xué)習(xí)過(guò)程中。在訓(xùn)練完成后,與將被固定為它們所學(xué)習(xí)到值。泛化到目前為止,我們已經(jīng)描述了如何利用神經(jīng)網(wǎng)絡(luò)擬合某個(gè)訓(xùn)練集,但是在機(jī)器學(xué)習(xí)中,我們的目標(biāo)是將模型推廣到以前沒有見過(guò)的新數(shù)據(jù)上,這一能力可以通過(guò)模型在測(cè)試集上的性能進(jìn)行度量。在本節(jié)中,我們將重點(diǎn)介紹3種提高泛化性能的方法:選擇正確的網(wǎng)絡(luò)架構(gòu)、對(duì)較大的權(quán)重進(jìn)行懲罰以及在訓(xùn)練過(guò)程中對(duì)通過(guò)網(wǎng)絡(luò)的值進(jìn)行隨機(jī)擾動(dòng)。選擇正確的網(wǎng)絡(luò)架構(gòu)在深度學(xué)習(xí)的研究中,有大量工作的內(nèi)容是尋找一個(gè)泛化能力強(qiáng)的網(wǎng)絡(luò)架構(gòu)。事實(shí)上,對(duì)于每種特定類型的數(shù)據(jù)(圖像、語(yǔ)音、文本、視頻等),搜索不同的網(wǎng)絡(luò)架構(gòu),以及改變層數(shù)、連通性、每層中節(jié)點(diǎn)的類型等方法已經(jīng)使得網(wǎng)絡(luò)在這些數(shù)據(jù)上的表現(xiàn)取得了巨大的進(jìn)步。[6]注意,這類漸進(jìn)的、探索性的工作大部分是由研究生完成,因此一些人也將該過(guò)程稱為究生下降(graduatestudentdescent,GSD)。一些神經(jīng)網(wǎng)絡(luò)架構(gòu)被顯式設(shè)計(jì)成對(duì)特定類型數(shù)據(jù)具有較好的泛化性能:卷積網(wǎng)絡(luò)所編碼的思想為,相同的特征提取器在空間網(wǎng)格中的所有位置都適用;而循環(huán)網(wǎng)絡(luò)所編碼的思想為,相同的更新規(guī)則在時(shí)序數(shù)據(jù)流中的所有位置都適用。在這些假設(shè)成立的前提下,我們預(yù)期卷積架構(gòu)在圖像問(wèn)題上有更好的泛化性能,循環(huán)網(wǎng)絡(luò)在處理文本和音頻信號(hào)時(shí)有更好的泛化性能。深度學(xué)習(xí)領(lǐng)域中最重要的經(jīng)驗(yàn)性研究結(jié)果之一是,當(dāng)兩個(gè)網(wǎng)絡(luò)的權(quán)重?cái)?shù)量接近時(shí),更深的網(wǎng)絡(luò)通常具有更好的泛化性能。圖21-7在一個(gè)簡(jiǎn)單的實(shí)際應(yīng)用——門牌識(shí)別中驗(yàn)證了這個(gè)效應(yīng)。結(jié)果表明,對(duì)于任意的固定數(shù)量的參數(shù),11層網(wǎng)絡(luò)的測(cè)試集誤差總是比3層網(wǎng)絡(luò)的測(cè)試集誤差小得多。圖21-7 3層和11層卷積網(wǎng)絡(luò)的測(cè)試集誤差與層的寬度(權(quán)重的總數(shù))的關(guān)系。圖中使用的數(shù)來(lái)源于早期版本的谷歌系統(tǒng),該系統(tǒng)用于把街景車所拍攝的照片中的地址進(jìn)行轉(zhuǎn)錄(Goodfellowetal.,2014)深度學(xué)習(xí)系統(tǒng)在某些任務(wù)上表現(xiàn)良好,但并非對(duì)所有任務(wù)都如此。對(duì)于具有高維輸入的圖像、視頻、語(yǔ)音信號(hào)等任務(wù),它們的性能優(yōu)于任何其他純粹的機(jī)器學(xué)習(xí)方法。第19章中描述的大多數(shù)算法所能處理的高維輸入僅限于特征通過(guò)人工設(shè)計(jì)的預(yù)處理方法降低維數(shù)的情況。這種預(yù)處理方法在2010年之前盛行,但它的表現(xiàn)與深度學(xué)習(xí)系統(tǒng)的表現(xiàn)沒有可比性。顯然,深度學(xué)習(xí)模型捕捉到了關(guān)于這些任務(wù)的一些重要信息。特別地,深度學(xué)習(xí)方法的成功意味著這些任務(wù)可以通過(guò)步數(shù)相對(duì)較少(10~103步,而不是107步)的并行程序來(lái)解決。這也許并不奇怪,因?yàn)檫@些任務(wù)對(duì)大腦來(lái)說(shuō)通??梢栽诓坏?秒的時(shí)間內(nèi)完成,1秒對(duì)于幾十次連續(xù)的神經(jīng)元放電活動(dòng)是足夠的。此外,通過(guò)觀察深度卷積網(wǎng)絡(luò)在視覺任務(wù)中所學(xué)習(xí)到的中間層表示,我們發(fā)現(xiàn)網(wǎng)絡(luò)處理圖像的過(guò)程可以視為提取場(chǎng)景中的一系列越來(lái)越抽象的表示的過(guò)程,這一過(guò)程從細(xì)小的邊、點(diǎn)以及角的特征開始,到整個(gè)對(duì)象和多個(gè)對(duì)象的排列結(jié)束。另外,因?yàn)樯疃葘W(xué)習(xí)模型是簡(jiǎn)單的電路,它們?nèi)狈ξ覀冊(cè)谝浑A邏輯(第8章)和上下文無(wú)關(guān)語(yǔ)法(第23章)中看到的組合與量化表達(dá)能力。雖然深度學(xué)習(xí)模型在很多情況下都有很好的泛化能力,但也可能產(chǎn)生某些不直觀的錯(cuò)誤。它們傾向于產(chǎn)生不連續(xù)的輸入-輸出映射,因此對(duì)輸入的一個(gè)小幅度擾動(dòng)可能導(dǎo)致輸出產(chǎn)生一個(gè)較大的擾動(dòng)。例如,僅改變某個(gè)“狗”的圖像中的幾個(gè)像素,就使網(wǎng)絡(luò)將該“狗”分類為鴕鳥或校車是可能的,盡管改變后的圖像看起來(lái)仍很像一只狗。這種改變后得到的圖像被稱為對(duì)抗樣例(adversarialexample)。在低維空間尋找對(duì)抗樣例較為困難。但是對(duì)于具有百萬(wàn)像素值的圖像,通常情況下,即使大部分像素有助于將圖像分類在空間中屬于“狗”的區(qū)域,仍有一些維度的像素值的位置接近于“狗”與另一個(gè)類別的分類邊界。一個(gè)有能力對(duì)網(wǎng)絡(luò)進(jìn)行反向工程的對(duì)抗機(jī)制可以找到使圖像越過(guò)分類邊界的最小向量。對(duì)抗樣例的首次發(fā)現(xiàn)引出了兩個(gè)廣闊的研究方向:一個(gè)是尋找不易受到對(duì)抗性攻擊的學(xué)習(xí)算法和網(wǎng)絡(luò)架構(gòu),另一個(gè)是對(duì)各種學(xué)習(xí)系統(tǒng)進(jìn)行更有效的對(duì)抗性攻擊。到目前為止,攻擊者似乎占據(jù)優(yōu)勢(shì)。事實(shí)上,雖然我們最初假設(shè)人們需要訪問(wèn)經(jīng)過(guò)訓(xùn)練的網(wǎng)絡(luò)的內(nèi)部,以便專門為該網(wǎng)絡(luò)構(gòu)造一個(gè)對(duì)抗樣例,但事實(shí)證明,人們可以構(gòu)造出具有健壯性的對(duì)抗樣例,它能誤導(dǎo)擁有不同的架構(gòu)、超參數(shù)以及訓(xùn)練過(guò)程的網(wǎng)絡(luò)。這些現(xiàn)象表明,深度學(xué)習(xí)模型識(shí)別物體的方式與人類視覺系統(tǒng)的工作方式截然不同。神經(jīng)架構(gòu)搜索遺憾的是,我們還沒有一套明確的指導(dǎo)方針來(lái)幫助你為特定問(wèn)題選擇最佳的網(wǎng)絡(luò)架構(gòu)。成功部署深度學(xué)習(xí)解決方案需要經(jīng)驗(yàn)和良好的判斷力。從最早期的神經(jīng)網(wǎng)絡(luò)研究開始,人們就嘗試將架構(gòu)選擇的過(guò)程自動(dòng)化。我們可以將其視為超參數(shù)優(yōu)化(19.4.4節(jié)),其中超參數(shù)決定網(wǎng)絡(luò)的深度、寬度、連接性和其他特征。然而,要做的選擇太多了,像網(wǎng)格搜索這樣的簡(jiǎn)單方法不能在合理的時(shí)間內(nèi)考慮所有的可能性。因此,我們通常使用神經(jīng)架構(gòu)搜索(neuralarchitecturesearch)來(lái)探索可能的網(wǎng)絡(luò)架構(gòu)的狀態(tài)空間。本書前面介紹的許多搜索技術(shù)和學(xué)習(xí)技術(shù)也已經(jīng)應(yīng)用于神經(jīng)架構(gòu)搜索。進(jìn)化算法一直以來(lái)較為盛行,這是因?yàn)樗瓤梢詫?duì)網(wǎng)絡(luò)進(jìn)行重組(將兩個(gè)網(wǎng)絡(luò)的一部分連接在一起),也可以進(jìn)行變異(添加或移除一層或更改一個(gè)參數(shù)值)。爬山算法也可以與變異操作一起使用。一些研究者將這個(gè)問(wèn)題歸為強(qiáng)化學(xué)習(xí)問(wèn)題,一些研究者將其歸結(jié)為貝葉斯優(yōu)化問(wèn)題。另一種可能的做法是將架構(gòu)的概率視為連續(xù)可微空間,并使用梯度下降來(lái)尋找局部最優(yōu)解。對(duì)于所有這些搜索方法,一個(gè)主要的困難是估計(jì)候選網(wǎng)絡(luò)的價(jià)值。評(píng)估架構(gòu)的一種直接的方法是在多批量的測(cè)試集上對(duì)其進(jìn)行訓(xùn)練,并在驗(yàn)證集上評(píng)估其準(zhǔn)確性。但對(duì)于大型網(wǎng)絡(luò),這一過(guò)程可能需要在GPU上運(yùn)行很多天。因此,有許多方法試圖通過(guò)去除或至少減少昂貴的訓(xùn)練過(guò)程來(lái)加速該評(píng)估過(guò)程。我們可以在更小的數(shù)據(jù)集上訓(xùn)練。我們也可以針對(duì)少量批次進(jìn)行訓(xùn)練,并預(yù)測(cè)隨著更多批次訓(xùn)練,網(wǎng)絡(luò)表現(xiàn)將如何改進(jìn)。我們可以使用簡(jiǎn)化版的網(wǎng)絡(luò)架構(gòu),同時(shí)希望保留完整網(wǎng)絡(luò)的性質(zhì)。我們還可以訓(xùn)練一個(gè)大的網(wǎng)絡(luò),然后搜索網(wǎng)絡(luò)中性能更好的子圖,這種搜索可以很快進(jìn)行,因?yàn)樽訄D將共享參數(shù),且不必重新訓(xùn)練。另一種方法是學(xué)習(xí)一個(gè)啟發(fā)式評(píng)價(jià)函數(shù)(就像我們?cè)贏*搜索中所做的那樣)。也就是說(shuō),從選擇幾百種網(wǎng)絡(luò)架構(gòu)開始,并對(duì)它們進(jìn)行訓(xùn)練和評(píng)估。這給了我們一組(網(wǎng)絡(luò),分?jǐn)?shù))數(shù)據(jù)對(duì)。然后我們將學(xué)習(xí)從網(wǎng)絡(luò)特征到預(yù)測(cè)分?jǐn)?shù)的映射。這時(shí),我們可以生成大量的候選網(wǎng)絡(luò),并快速估計(jì)它們的價(jià)值。在搜索完整個(gè)網(wǎng)絡(luò)空間之后,我們可以用完整的訓(xùn)練過(guò)程對(duì)最佳網(wǎng)絡(luò)進(jìn)行全面的評(píng)估。權(quán)重衰減在19.4.3節(jié)中,我們看到正則化(限制模型的復(fù)雜性)有助于泛稱這種方法為權(quán)重衰減(weightdecay)。權(quán)重衰減的方式包括對(duì)用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的損失函數(shù)添加懲罰項(xiàng),其中,是控制懲罰強(qiáng)度的超參數(shù),求和是對(duì)網(wǎng)絡(luò)中的所有權(quán)重進(jìn)行的。使用相當(dāng)于不采用權(quán)重衰減,而使用更大的意味10?4。選擇一個(gè)特定的網(wǎng)絡(luò)架構(gòu)可以看作對(duì)假設(shè)空間的一個(gè)絕對(duì)約束:一個(gè)函數(shù)要么在該架構(gòu)中是可表示的,要么不是。損失函數(shù)懲罰項(xiàng)(如權(quán)重衰減)提供了一個(gè)更寬松的約束:用較大權(quán)重表示的函數(shù)也屬于函數(shù)族,但訓(xùn)練集必須提供更多傾向于選擇這些函數(shù)而不是選擇小權(quán)重函數(shù)的證據(jù)。要解釋神經(jīng)網(wǎng)絡(luò)中權(quán)重衰減的作用并不容易。在采用sigmoid作為激活函數(shù)的網(wǎng)絡(luò)中,我們通常假設(shè)權(quán)重衰減有助于使激活保持在sigmoid的線性部分附近,從而避免參數(shù)陷入可能導(dǎo)致梯度消失的平坦區(qū)域。對(duì)于ReLU激活函數(shù),權(quán)重衰減似乎也是有幫助的,但是權(quán)重衰減在sigmoid情境下有意義的解釋似乎不再適用該場(chǎng)景,因?yàn)镽eLU的輸出要么是線性的,要么是零。此外,對(duì)于殘差連接,權(quán)重衰減鼓勵(lì)網(wǎng)絡(luò)在相鄰層之間具有較小的差異,而不是較小的權(quán)重絕對(duì)值。盡管在許多架構(gòu)中,權(quán)重衰減的表現(xiàn)存在差異,但權(quán)重衰減仍然應(yīng)用廣泛且十分有效。對(duì)權(quán)重衰減的有利作用的一種解釋是,它實(shí)現(xiàn)了一種最大后驗(yàn)(MAP)學(xué)習(xí)(見20.1節(jié))。令X和y為代表整個(gè)訓(xùn)練集的輸入和輸出,最大后驗(yàn)假設(shè)hMAP滿足其中第一項(xiàng)是一般的交叉熵?fù)p失;第二項(xiàng)傾向于選擇先驗(yàn)分布下可能性較高的權(quán)重。如果我們令這意味著P(W)是一個(gè)零均值高斯先驗(yàn)。暫退法另一種通過(guò)干預(yù)網(wǎng)絡(luò)以減少測(cè)試集誤差的方法是暫退法(dropout),其代價(jià)是使得網(wǎng)絡(luò)更難擬合訓(xùn)練集。在訓(xùn)練的每一步中,暫退法都會(huì)隨機(jī)選擇單元的子集并令其停用,從而創(chuàng)建一個(gè)新網(wǎng)絡(luò),并在新網(wǎng)絡(luò)中應(yīng)用一步反向傳播學(xué)習(xí)。這是訓(xùn)練一個(gè)大規(guī)模集成網(wǎng)絡(luò)的粗略和低成本的近似方法(見19.8節(jié))。更具體地說(shuō),假設(shè)我們所使用的是批量大小為m的隨機(jī)梯度下降。對(duì)于每個(gè)批量,暫退算法將以下過(guò)程應(yīng)用于網(wǎng)絡(luò)的每個(gè)節(jié)點(diǎn):每個(gè)單元的輸出以概率p乘以因子1/p;否則,該單元的輸出將固定為零。暫退法通常應(yīng)用于隱藏層,且采用p=0.5;對(duì)于輸入單元,通常p=0.8效果最好。這個(gè)過(guò)程將產(chǎn)生一個(gè)單元數(shù)量接近原網(wǎng)絡(luò)一半的簡(jiǎn)化網(wǎng)絡(luò),并應(yīng)用批量大小為m的訓(xùn)練樣例在該網(wǎng)絡(luò)上進(jìn)行反向傳播。該過(guò)程將以這樣的方式不斷進(jìn)行,直到訓(xùn)練完成。在測(cè)試階段,模型將不采用暫退法。我們可以從以下幾個(gè)角度看待暫退法。通過(guò)在訓(xùn)練時(shí)引入噪聲,這將迫使模型對(duì)噪聲具有健壯性。型,這一說(shuō)法可以被嚴(yán)格解析驗(yàn)證,而對(duì)于深度學(xué)習(xí)模型,這一說(shuō)法在實(shí)驗(yàn)上是成立的。它們還必須學(xué)會(huì)與眾多其他可能的隱藏單元集合相兼容,這些隱藏單元集合可能包含在完整模型中,也可能不包含在完整模型中。這類似于自然選擇對(duì)基因進(jìn)化的指導(dǎo)過(guò)程:每個(gè)基因不僅本身能發(fā)揮有效功能,而且必須與其他基因協(xié)同工作,這些基因在未來(lái)生物體中的作用可能會(huì)有很大差異。更加健壯,這是因?yàn)榫W(wǎng)絡(luò)將更加關(guān)注樣例所有的抽象特征,而不是只關(guān)注其中一個(gè)而忽略其他特征。例如,用于分辨動(dòng)物圖像的分類器可能僅通過(guò)觀察動(dòng)物的鼻子就能夠在訓(xùn)練集上獲得高性能,但是在鼻子被遮擋或損壞的測(cè)試樣本上,該分類器可能會(huì)失效。在使用了暫退法的情況下,會(huì)出現(xiàn)內(nèi)層中代表“鼻子”的單元全部被置為零的訓(xùn)練情況,這會(huì)迫使學(xué)習(xí)過(guò)程找到另外的識(shí)別特征。注意,試圖通過(guò)向輸入數(shù)據(jù)添加噪聲來(lái)實(shí)現(xiàn)相同程度的健壯性將是困難的:沒有簡(jiǎn)單的方法可以提前知道網(wǎng)絡(luò)將關(guān)注“鼻子”,也沒有簡(jiǎn)單的方法可以自動(dòng)地從每個(gè)圖像中刪除“鼻子”??偟膩?lái)說(shuō),暫退法迫使模型為每一個(gè)輸入學(xué)習(xí)多個(gè)健壯的解釋。這使得模型具有很好的泛化能力,但也使其更難擬合訓(xùn)練集,因此通常需要使用更大的模型并對(duì)其進(jìn)行更多次的迭代訓(xùn)練。循環(huán)神經(jīng)網(wǎng)絡(luò)循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrentneuralnetwork,RNN)不同于前饋網(wǎng)絡(luò),因?yàn)樗试S計(jì)算圖中存在環(huán)。在我們接下來(lái)將考慮的所有情況中,每個(gè)環(huán)都將有一個(gè)延遲,使得單元可以把在較早的時(shí)間步中所得的輸出作為輸入。(在沒有延遲的情況下,循環(huán)電路可能會(huì)達(dá)到不一致的狀態(tài)。)這使得RNN具有內(nèi)部狀態(tài)或記憶(memory):在較早時(shí)間步中接收的輸入會(huì)影響RNN對(duì)當(dāng)前輸入的響應(yīng)。RNN也可用于執(zhí)行更一般的計(jì)算(畢竟,普通的計(jì)算機(jī)就是具有記憶的布爾電路),并用于對(duì)真實(shí)的神經(jīng)系統(tǒng)建模,其中許多系統(tǒng)都包含循環(huán)連接。在這里,我們將著重討論如何使用RNN來(lái)分析時(shí)序數(shù)據(jù),其中我們假設(shè)在每個(gè)時(shí)間步,有一個(gè)新的輸入向量xt到達(dá)。作為分析時(shí)序數(shù)據(jù)的工具,RNN可以與第14模型、動(dòng)態(tài)貝葉斯網(wǎng)絡(luò)和卡爾曼濾波器進(jìn)行比較(在繼續(xù)閱讀本文內(nèi)容之前,回顧這一章的內(nèi)容可能對(duì)讀者很有幫助)。與這些模型一樣,RNN中也存在馬爾可夫假設(shè)(見14.1節(jié)):網(wǎng)絡(luò)的隱藏狀態(tài)zt足以捕獲所有先前輸入的信息。此外,我們假設(shè)可以利用函數(shù)來(lái)描述RNN對(duì)隱藏狀態(tài)的更新過(guò)程,其中fw為某個(gè)參數(shù)化的函數(shù)。一旦經(jīng)過(guò)訓(xùn)練,這個(gè)函數(shù)將表示一個(gè)關(guān)于時(shí)間齊次的過(guò)程(14.1節(jié))——實(shí)際上是一個(gè)普適的量化表述,由fw表示的動(dòng)態(tài)過(guò)程將適用于所有時(shí)間步。因此,與前饋網(wǎng)絡(luò)相比,RNN也正如動(dòng)態(tài)貝葉斯網(wǎng)絡(luò)比常規(guī)的貝葉斯網(wǎng)絡(luò)有了更強(qiáng)的表達(dá)能力。事實(shí)上,如果你試圖使用前饋網(wǎng)絡(luò)來(lái)分析時(shí)序數(shù)據(jù),那么輸入層的固定大小將迫使網(wǎng)絡(luò)僅收集到有限長(zhǎng)度的窗口的數(shù)據(jù),在這種情況下,網(wǎng)絡(luò)將無(wú)法檢測(cè)到數(shù)據(jù)中的長(zhǎng)距離依賴關(guān)系。訓(xùn)練基本的循環(huán)神經(jīng)網(wǎng)絡(luò)我們將考慮一個(gè)基本的RNN模型,它有一個(gè)輸入層x、一個(gè)具有循環(huán)連接的隱藏層z和一個(gè)輸出層y,如圖21-8a所示。假設(shè)在每個(gè)時(shí)間步中,我們都觀測(cè)到訓(xùn)練數(shù)據(jù)x和y。以下等式定義的模型給出了時(shí)間步t的變量值:(21-13)其中g(shù)z和gy分別表示隱藏層和輸出層的激活函數(shù)。一般地,我們假設(shè)每個(gè)單元有一個(gè)固定為+1的額外的虛擬輸入,以及一個(gè)與該輸入相關(guān)聯(lián)的權(quán)重。給定一系列輸入向量x1,…,xT,以及觀測(cè)到的輸出y1,…,yT,以通過(guò)對(duì)網(wǎng)絡(luò)進(jìn)行T步“展開”來(lái)將模型轉(zhuǎn)換為前饋網(wǎng)絡(luò),如圖21-8b所Wx,z、Wz,z和Wz,y在所有的時(shí)間步中是共享的。容易看出,在展開的網(wǎng)絡(luò)中,我們可以用一般的方法計(jì)算梯度來(lái)訓(xùn)練權(quán)重;唯一的區(qū)別是,層與層之間權(quán)重共享使得梯度計(jì)算稍微復(fù)雜一些。圖21-8 (a)基本的RNN模型的示意圖,其中隱藏層z具有循環(huán)連接,符號(hào)表示延遲。同一網(wǎng)絡(luò)在3個(gè)時(shí)間步上展開以創(chuàng)建前饋網(wǎng)絡(luò)。注意,權(quán)重在所有時(shí)間步中是共享的為了使計(jì)算式簡(jiǎn)潔,我們將給出一個(gè)只有一個(gè)輸入單元、一個(gè)隱藏單元和一個(gè)輸出單元的RNN出偏差項(xiàng),則有與。如式(21-4)和式(21-5)所示,我們將假設(shè)損失函數(shù)為平方誤差損失L——如此一來(lái),我們只需對(duì)各個(gè)時(shí)間步求和。輸入層和輸出層權(quán)重wx,z和wz,y的推導(dǎo)與式(21-4)基本相同,我們將其留作習(xí)題。對(duì)于隱藏層權(quán)重wz,z,其前幾個(gè)步驟也與式(21-4)的推導(dǎo)模式相同:(21-14)隱藏單元zt的梯度可以從之前的時(shí)間步中獲得,具體過(guò)程如下:(21-15)其中,最后一行運(yùn)用了乘法的求導(dǎo)法則:。通過(guò)觀察式(21-15),我們可以注意到兩點(diǎn)。第一,梯度的表達(dá)式是循環(huán)的:計(jì)算時(shí)間步t對(duì)梯度的貢獻(xiàn)要用到時(shí)間步t–1的貢獻(xiàn)。如果我們以正確的方式對(duì)計(jì)算進(jìn)行排序,那么梯度計(jì)算的總運(yùn)行時(shí)間將與網(wǎng)絡(luò)的大小呈線性關(guān)系。這種算法被稱為基于時(shí)間的反向傳播(back-propagationthroughtime,BPTT),它通常由深度學(xué)習(xí)軟件系統(tǒng)自動(dòng)處理。第二,如果我們對(duì)該循環(huán)計(jì)算進(jìn)行迭代,可以注意到時(shí)間步T的梯度將包括與成正比的項(xiàng)。對(duì)于sigmoid、tanh和ReLU激活函數(shù),它們有導(dǎo)數(shù),因此,如果,簡(jiǎn)單RNN必然會(huì)面臨梯度消失的問(wèn)題(見21.2節(jié))。另外,如果,我們可能會(huì)面臨梯度爆炸(exploding gradient)的問(wèn)題。(一般來(lái)說(shuō),這些結(jié)果取決于重矩陣Wz,z的第一特征值。)在21.6.2節(jié)中,我們將介紹一個(gè)更復(fù)雜的RNN設(shè)計(jì),該設(shè)計(jì)旨在緩解這個(gè)問(wèn)題。長(zhǎng)短期記憶RNN為了使信息能夠在多個(gè)時(shí)間步中被保存,人們?cè)O(shè)計(jì)了一些特殊的RNN架構(gòu)。其中最常見的是長(zhǎng)短期記憶(long short-term LSTM)。LSTM的長(zhǎng)期記憶成分,稱為記憶單元(memory cell),字母c表示,基本上從一個(gè)時(shí)間步被復(fù)制到另一個(gè)時(shí)間步。[相比之下,基本的RNN在每個(gè)時(shí)間步將其記憶乘以權(quán)重矩陣,如式(21-13)所示。]新信息以直接加入記憶的方式進(jìn)行更新,這樣一來(lái),梯度表達(dá)式將不會(huì)隨著時(shí)間的推移進(jìn)行乘法累積。LSTM還使用了門單元(gatingunit),它是控制LSTM中信息流的一個(gè)向量,通過(guò)控制相應(yīng)信息向量的逐個(gè)元素相乘來(lái)實(shí)現(xiàn)。遺忘門f決定了記憶單元中的每個(gè)元素是被記住了(一個(gè)時(shí)間步)還是被遺忘了(重置為0)。輸入門i入向量的新信息進(jìn)行加法更新。輸出門o決定了記憶單元中的每個(gè)元素是否被轉(zhuǎn)移到短期記憶它在基本的RNN中起著與隱藏狀態(tài)類似的作用。盡管在電路設(shè)計(jì)中,“門”一詞通常意味著某個(gè)布爾函數(shù),但LSTM中的門是寬泛的。例如,如果遺忘門向量的相應(yīng)元素很小但不為零,則記憶單元向量的元素將被部分遺忘。門單元的值始終在[0,1]范圍內(nèi),并且它是當(dāng)前輸入和先前隱藏狀態(tài)經(jīng)過(guò)sigmoid函數(shù)而獲得的輸出。具體來(lái)說(shuō),LSTM的更新公式如下:其中,各個(gè)權(quán)重矩陣W表示逐個(gè)元素相乘。LSTM是RNN最早的實(shí)用形式之一。它們?cè)诎ㄕZ(yǔ)音識(shí)別和手寫識(shí)別在內(nèi)的各種任務(wù)中都表現(xiàn)出了極好的性能。第24語(yǔ)言處理中的應(yīng)用。無(wú)監(jiān)督學(xué)習(xí)與遷移學(xué)習(xí)到目前為止,我們所討論的深度學(xué)習(xí)系統(tǒng)都是基于監(jiān)督學(xué)習(xí)的,它要求每個(gè)訓(xùn)練樣例都帶有一個(gè)目標(biāo)函數(shù)值。盡管這樣的系統(tǒng)可以達(dá)到很高的測(cè)試集精度(ImageNet等競(jìng)賽結(jié)果已經(jīng)證實(shí)),但相比人類來(lái)說(shuō),它們?cè)谔幚硗粋€(gè)任務(wù)時(shí)通常需要更多帶標(biāo)簽的數(shù)據(jù)。例如,一個(gè)孩子要做到在各種各樣的環(huán)境和視野中穩(wěn)定地識(shí)別出長(zhǎng)頸鹿,他只需觀察一張長(zhǎng)頸鹿的圖片,而不用觀察幾千張。顯然,我們?cè)谏疃葘W(xué)習(xí)中忽略了某些東西。實(shí)際上可能確實(shí)如此,在目前的監(jiān)督深度學(xué)習(xí)方法下,一些任務(wù)是完全無(wú)法實(shí)現(xiàn)的,因?yàn)檫@些方法對(duì)帶標(biāo)簽數(shù)據(jù)的需求遠(yuǎn)遠(yuǎn)超過(guò)人類(甚至宇宙)所能提供的范圍。此外,即便在任務(wù)可行的情況下,標(biāo)記大型數(shù)據(jù)集通常也需要花費(fèi)稀缺而昂貴的人力。式產(chǎn)生了濃厚的興趣。正如我們?cè)诘?9章中看到的,這些模式包括督學(xué)習(xí)、遷移學(xué)習(xí)和半監(jiān)督學(xué)習(xí)。無(wú)監(jiān)督學(xué)習(xí)算法僅從無(wú)標(biāo)簽的輸入x通常會(huì)產(chǎn)生一個(gè)生成模型,它可以生成真實(shí)的文本、圖像、音頻或視討論它們。無(wú)監(jiān)督學(xué)習(xí)監(jiān)督學(xué)習(xí)算法的目標(biāo)基本相同:給定一個(gè)輸入x的訓(xùn)練集和相應(yīng)的輸出y=f(x),學(xué)習(xí)一個(gè)能夠很好地近似f的函數(shù)h學(xué)習(xí)算法將使用一組無(wú)標(biāo)簽樣例x的訓(xùn)練集。在本節(jié)中,我們將介紹這種算法可能嘗試做的兩件事。第一是學(xué)習(xí)新的表示法,例如圖像的新特征,這將使得識(shí)別圖像中的對(duì)象更容易。第二是學(xué)習(xí)一個(gè)生成模型,該模型通常采用概率分布的形式,并且可以從中生成新的樣本。(第20章介紹的貝葉斯網(wǎng)絡(luò)的學(xué)習(xí)算法屬于這一類。)許多算法同時(shí)具有表示學(xué)習(xí)和生成建模的能力。假設(shè)我們要學(xué)習(xí)一個(gè)聯(lián)合分布,其中z是一組隱變量,即以某種方式表達(dá)數(shù)據(jù)x內(nèi)容的未觀測(cè)變量。出于本文的連貫性考慮,我們沒有預(yù)先定義z變量的具體含義,無(wú)論它們?nèi)绾芜x取,模型都可以自由地學(xué)習(xí)z與x之間的聯(lián)系。例如,在手寫數(shù)字圖像上訓(xùn)練的模型可能會(huì)選擇使用z空間中的一個(gè)方向來(lái)表示筆劃的粗細(xì),一個(gè)方向表示墨水的顏選擇一個(gè)方向來(lái)表示性別,另一個(gè)方向來(lái)捕捉是否戴眼鏡,如圖21-9所示。一個(gè)學(xué)習(xí)到的概率模型將能同時(shí)實(shí)現(xiàn)表示學(xué)習(xí)(它從原始x向量中構(gòu)造出有意義的z向量)與生成模型:如果對(duì)中的z變量進(jìn)行積分,將得到PW(x)。圖21-9 生成模型如何使用z空間中的不同方向來(lái)表示人臉不同方面的信息。實(shí)際上我們可以在z空間中進(jìn)行運(yùn)算。這里的圖像都是從學(xué)習(xí)到的模型中生成的,并且圖像解釋了當(dāng)我們解碼空間中的不同點(diǎn)時(shí)會(huì)發(fā)生什么。我們從“戴眼鏡的男人”這個(gè)對(duì)象的坐標(biāo)出發(fā),減去“男人”的標(biāo),再加上“女人”的坐標(biāo),得到“戴眼鏡的女人”的坐標(biāo)。圖像經(jīng)許可摘自(Radfordetal.,2015)概率主成分分析:一個(gè)簡(jiǎn)單的生成模型PW(x, z)有許多可能的形式。概率主成分分析(probabilisticprincipalcomponentsanalysis,PPCA)模型是最簡(jiǎn)單的模型之一。[7]在一個(gè)PPCA模型中,z取自一個(gè)零均值的球形高斯分布,x通過(guò)z乘以權(quán)重矩陣W并添加球形高斯噪聲來(lái)生成:分布的主成分。權(quán)重W(以及可選的噪聲參數(shù))可以通過(guò)最大化數(shù)據(jù)的似然學(xué)得到,具體描述如下:(21-16)關(guān)于W的最大化問(wèn)題可以通過(guò)梯度方法或者高效的EM迭代算法(見20.3節(jié))進(jìn)行求解。在我們學(xué)習(xí)得到W后,新的數(shù)據(jù)樣本可以由式(21-16)所給出的PW (x)直接生成。此外,若某個(gè)新觀測(cè)數(shù)據(jù)x在式(21-16)中有非常低的概率,它可以被標(biāo)記為潛在的異常數(shù)據(jù)。對(duì)于PPCA,我們通常假設(shè)z的維數(shù)遠(yuǎn)小于x的維數(shù),這樣模型就可以盡可能地用少量的特征來(lái)解釋數(shù)據(jù)。通過(guò)計(jì)算的期望值,些特征可以被提取出來(lái)用于標(biāo)準(zhǔn)分類器。從概率主成分分析模型中生成數(shù)據(jù)非常簡(jiǎn)單:首先從固定的高斯先驗(yàn)中采樣z,然后從均值為Wz的高斯分布中采樣x。我們很快會(huì)看到,許多其他生成模型的做法都與這個(gè)過(guò)程類似,但是它們將采用由深度模型定義的復(fù)雜映射,而不是從z空間到x空間的線性映射。自編碼器許多無(wú)監(jiān)督深度學(xué)習(xí)算法的思想都基于自編碼器(autoencoder,AE)。自編碼器是一個(gè)由兩部分組成的模型:一個(gè)從x映射到表示的編碼器和一個(gè)從表示映射到觀測(cè)數(shù)據(jù)x的解碼器。一般來(lái)說(shuō),編碼器一個(gè)參數(shù)化函數(shù)f,解碼器是一個(gè)參數(shù)化函數(shù)g練,使得,使得編碼過(guò)程大致為解碼過(guò)程的逆過(guò)程。函數(shù)fg可以是由單個(gè)矩陣參數(shù)化的簡(jiǎn)單線性模型,也可以是一個(gè)深度神經(jīng)網(wǎng)絡(luò)。一個(gè)非常簡(jiǎn)單的編碼器是線性編碼器,其中f和g均為線性函數(shù)且共享一個(gè)權(quán)重矩陣W:訓(xùn)練該模型的一種方法是通過(guò)最小化平方誤差使得。其中的思想是通過(guò)訓(xùn)練W,使得一個(gè)低維的將保留盡可多的信息以重建高維數(shù)據(jù)x。這種線性自編碼器與經(jīng)典的主成分分析(PCA)密切相關(guān)。當(dāng)z的維度為m時(shí),矩陣W應(yīng)學(xué)習(xí)到由數(shù)據(jù)的m個(gè)主成分張成的矩陣(換句話說(shuō),即數(shù)據(jù)中具有最大方差的m個(gè)正交方向的集合,或者等價(jià)地說(shuō),是數(shù)據(jù)協(xié)方差矩陣特征值最大的m個(gè)特征向量),這與PCA的做法完全相同。PCA模型是一個(gè)簡(jiǎn)單的生成模型,它對(duì)應(yīng)于一個(gè)簡(jiǎn)單的線性自編碼器。這種對(duì)應(yīng)關(guān)系表明,我們可能可以通過(guò)更復(fù)雜的自編碼器來(lái)獲得更復(fù)雜的生成模型。變分自編碼器(variationalautoencoder,VAE)為這個(gè)思想提供了一種方法。我們?cè)?3.5節(jié)中簡(jiǎn)要介紹過(guò)變分法,它是一種在復(fù)雜概率模型中常困難的。變分法的思想是使用一個(gè)變分后驗(yàn)(variationalposterior)Q(z)作為真實(shí)后驗(yàn)分布的近似值,它來(lái)自某個(gè)在計(jì)算上易處擇Q。在所選擇的易處理的分布族中,Q將按盡可能接近真實(shí)的后驗(yàn)分布的方式進(jìn)行優(yōu)化。在我們的目標(biāo)里,“盡可能”的含義是由KL散度定義的,我們已經(jīng)在21.2節(jié)中介紹過(guò)它。它由下式給出:它是Q與P的對(duì)數(shù)比率(關(guān)于Q)的均值。容易證明,其中等號(hào)成立當(dāng)且僅當(dāng)Q與P完全相同。我們可以進(jìn)一步定義變分下界(variational lower bound)L,有時(shí)也稱證據(jù)界(evidencelowerbound,ELBO),它的定義基于數(shù)據(jù)的對(duì)數(shù)似然:(21-17)我們可以發(fā)現(xiàn)L是logP的一個(gè)下界,這是因?yàn)镵L散度是非負(fù)的。變分學(xué)習(xí)的目標(biāo)是最大化關(guān)于參數(shù)w的L(而不是最大化logP(x)),同時(shí)希望得到的解w*也能最大化logP(x)。如前所述,最大化L似乎看起來(lái)并不比最大化logP容易。幸運(yùn)的是,我們可以將式(21-17)重新寫成下述的便于計(jì)算的形式:其中H(Q)為分布Q的熵。對(duì)于一些變分族Q (例如高斯分可以通過(guò)分析精確地給出。此外,期望可以通過(guò)從分布Q采樣z來(lái)進(jìn)行高效的無(wú)偏估計(jì)。對(duì)于每個(gè)樣本,P(z,x)通可以有效地被估計(jì)。舉例來(lái)說(shuō),假設(shè)P是一個(gè)貝葉斯網(wǎng)絡(luò),那么將是一系列條件概率的乘積,因?yàn)閦和x包含所有的變量。變分自編碼器提供了一種在深度學(xué)習(xí)場(chǎng)景中使用變分學(xué)習(xí)的方法。變分學(xué)習(xí)涉及最大化L關(guān)于P和Q的參數(shù)的過(guò)程。對(duì)于一個(gè)變分自編碼g(z)可以解釋為。例如,解碼器的輸出可以定義為條件高斯分布的平均值。類似的,編碼器f(x)的輸出被解釋為Q例如,Q可以是均值為f(x)意味著優(yōu)化編碼器f和解碼器g的參數(shù)以最大化L的過(guò)程,這兩個(gè)函數(shù)本身可以是任意復(fù)雜的深度網(wǎng)絡(luò)。深度自回歸模型自回歸模型(autoregressive model,或AR model)意味著向量x每個(gè)元素xi是基于向量其他元素進(jìn)行預(yù)測(cè)得到的。這種模型不含有隱變量。如果x的大小是固定的,那么AR模型可以看作一個(gè)完全可觀測(cè)且可能完全連通的貝葉斯網(wǎng)絡(luò)。這意味著根據(jù)AR模型計(jì)算給定數(shù)據(jù)向量的似然將是很簡(jiǎn)單的。同樣的,預(yù)測(cè)一個(gè)缺失變量的值(在給定所有其他變量情況下),以及從模型中采樣一個(gè)數(shù)據(jù)向量也將十分方便。自回歸模型最常見的一個(gè)應(yīng)用是時(shí)序數(shù)據(jù)分析,其中k階的AR模型將根據(jù)預(yù)測(cè)xt。用第14章中的術(shù)語(yǔ)來(lái)說(shuō),AR模型是一個(gè)沒有隱變量的馬爾可夫模型。用第23章的術(shù)語(yǔ)來(lái)說(shuō),一個(gè)字母或單詞序列的n元語(yǔ)法模型是一個(gè)n?1階AR模型。在經(jīng)典AR模型中,變量是實(shí)值的,條件分布是一個(gè)具有固定方差的線性高斯模型,其均值是的線性組合——一個(gè)標(biāo)準(zhǔn)的線性回歸模型。經(jīng)典AR模型的最大似然解由尤爾-沃克方程(Yule-Walker equations)給出,該方程與19.6節(jié)中的正規(guī)方程密切相關(guān)。深度自回歸模型(deepautoregressivemodel)是一種將線性高斯模型替換為具有適當(dāng)輸出層的任意深度網(wǎng)絡(luò)的模型,其具體形式取決于xt是離散的還是連續(xù)的。這種自回歸方法有一些最新的應(yīng)用,其中包括由DeepMind開發(fā)的用于語(yǔ)音生成的WaveNet模型(van den Oord et 2016a)。WaveNet利用原始聲音信號(hào)進(jìn)行訓(xùn)練,每秒采樣16000次,采用多層卷積結(jié)構(gòu)實(shí)現(xiàn)4 800階非線性AR模型。在實(shí)際測(cè)試過(guò)程中,它證實(shí)比之前最先進(jìn)的語(yǔ)音生成系統(tǒng)更加真實(shí)。生成對(duì)抗網(wǎng)絡(luò)生成對(duì)抗網(wǎng)絡(luò)(generativeadversarialnetwork,GAN)實(shí)際上是一對(duì)結(jié)合在一起形成生成系統(tǒng)的網(wǎng)絡(luò)。其中一個(gè)稱為生成器(generator)的網(wǎng)絡(luò)將z值映射到x,以從分布Pw(x)中生成樣本。一個(gè)典型的做法是從一個(gè)中等維度的標(biāo)準(zhǔn)高斯中采樣z,然后令其通過(guò)一個(gè)深層網(wǎng)絡(luò)hw得到x。另一個(gè)稱為判別器(discriminator)的網(wǎng)絡(luò)是一個(gè)經(jīng)過(guò)訓(xùn)練的分類器,它用于判斷輸入的x為真(從訓(xùn)練集中獲取的)或假(由生成器生成的)。GAN是一種隱式模型(implicitmodel),即樣本可以被生成,但其概率不易獲得,而在貝葉斯網(wǎng)絡(luò)中,樣本的概率是樣本生成路徑上條件概率的乘積。生成器與變分自編碼器框架下的解碼器有密切的聯(lián)系。隱式建模的難點(diǎn)在于需要設(shè)計(jì)一個(gè)損失函數(shù),使得使用來(lái)自分布的樣本來(lái)訓(xùn)練模型成為可能,而不是最大化源自數(shù)據(jù)集的訓(xùn)練樣例的似然。生成器和判別器的訓(xùn)練是同時(shí)進(jìn)行的,生成器將學(xué)習(xí)如何欺騙判別器,而判別器將學(xué)習(xí)如何準(zhǔn)確區(qū)分真假數(shù)據(jù)。生成器和判別器之間的競(jìng)爭(zhēng)可以用博弈論的語(yǔ)言來(lái)描述(見第18章),其核心觀點(diǎn)是,在博弈的均衡狀態(tài)下,生成器應(yīng)完美地復(fù)現(xiàn)出訓(xùn)練樣本的分布,如此一來(lái)判別器就不可能表現(xiàn)得比隨機(jī)猜測(cè)更好。GAN在圖像生成任務(wù)中已經(jīng)取得了很大成功。例如,GAN可以創(chuàng)造一幅關(guān)于某個(gè)不存在的人的十分逼真的、高分辨率的圖像(Karrasetal.,2017)。無(wú)監(jiān)督翻譯廣義地說(shuō),翻譯任務(wù)的內(nèi)容是將具有豐富結(jié)構(gòu)的輸入x轉(zhuǎn)換成同樣具有豐富結(jié)構(gòu)的輸出y。這里的“豐富結(jié)構(gòu)”意味著數(shù)據(jù)是多維的,并且在各個(gè)維度之間具有有趣的統(tǒng)計(jì)依賴性。圖像和自然語(yǔ)言句子有豐富的結(jié)構(gòu),但單一的數(shù)字(如類別的標(biāo)號(hào))沒有豐富的結(jié)構(gòu)。將一個(gè)句子從英語(yǔ)翻譯成法語(yǔ)或?qū)⒁粡堃咕罢掌D(zhuǎn)換成一張白天拍攝的等效照片都是翻譯任務(wù)的例子。監(jiān)督翻譯的過(guò)程包括收集多個(gè)(x,y)每個(gè)x映射到相應(yīng)的y。例如,機(jī)器翻譯系統(tǒng)通常使用由專業(yè)翻譯人員翻譯的成對(duì)句子進(jìn)行訓(xùn)練。對(duì)于其他類型的翻譯,監(jiān)督學(xué)習(xí)的訓(xùn)練數(shù)據(jù)可能不適用。例如,考慮一張包含許多正在移動(dòng)的汽車和行人的夜景照片。為了能在白天環(huán)境下重新拍攝一張相同的照片,我們需要找到在夜間照片中的所有汽車和行人,并將它們恢復(fù)到原來(lái)的位置,這基本上是不切實(shí)際的。為了克服這一困難,可以考慮采用無(wú)監(jiān)督翻譯(unsu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年電氣傳動(dòng)系統(tǒng)中的反饋控制策略
- 2026年綠色建筑技術(shù)的國(guó)際經(jīng)驗(yàn)
- 2026年智能監(jiān)控在路基建設(shè)中的應(yīng)用實(shí)例
- 賀家李課件教學(xué)課件
- 醫(yī)院醫(yī)療廢物焚燒設(shè)備維護(hù)規(guī)范培訓(xùn)
- 貨物安全操作培訓(xùn)課件
- 個(gè)性化疫苗設(shè)計(jì)與制備
- 醫(yī)院管理與運(yùn)營(yíng)優(yōu)化
- 醫(yī)療信息安全管理與隱私保護(hù)策略
- 2026年衡水職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)帶答案解析
- 心理治療效果評(píng)估-洞察分析
- 危重患者的早期識(shí)別及處理原則
- 華師 八下 數(shù)學(xué) 第18章 平行四邊形《平行四邊形的判定(2)》課件
- GB/T 18457-2024制造醫(yī)療器械用不銹鋼針管要求和試驗(yàn)方法
- 電信營(yíng)業(yè)廳運(yùn)營(yíng)方案策劃書(2篇)
- 手機(jī)維修單完整版本
- 流感防治知識(shí)培訓(xùn)
- 呼吸內(nèi)科進(jìn)修匯報(bào)課件
- 康復(fù)治療進(jìn)修匯報(bào)
- 離婚協(xié)議書模板(模板)(通用)
評(píng)論
0/150
提交評(píng)論