姓名:周雪寧
學(xué)號(hào):1702110196
轉(zhuǎn)載:https://mp.weixin.qq.com/s/Si2jtA3jrKJVCXJ1B3fZQw
【嵌牛導(dǎo)讀】:在深度學(xué)習(xí)十分火熱的今天,不時(shí)會(huì)涌現(xiàn)出各種新型的人工神經(jīng)網(wǎng)絡(luò),想要實(shí)時(shí)了解這些新型神經(jīng)網(wǎng)絡(luò)的架構(gòu)還真是不容易。光是知道各式各樣的神經(jīng)網(wǎng)絡(luò)模型縮寫(xiě)(如:DCIGN、BiLSTM、DCGAN……還有哪些?),就已經(jīng)讓人招架不住了。因此,這里整理出一份清單來(lái)梳理所有這些架構(gòu)。其中大部分是人工神經(jīng)網(wǎng)絡(luò),也有一些完全不同的怪物。盡管所有這些架構(gòu)都各不相同、功能獨(dú)特,當(dāng)我在畫(huà)它們的節(jié)點(diǎn)圖時(shí)……其中潛在的關(guān)系開(kāi)始逐漸清晰起來(lái)。
【嵌牛鼻子】:RBM,CNN,RNN,GAN
【嵌牛提問(wèn)】:這么多經(jīng)典神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)分別側(cè)重于哪些工作?具體原理是什么?它們之間有什么聯(lián)系與區(qū)別?
【嵌牛正文】:
把這些架構(gòu)做成節(jié)點(diǎn)圖,會(huì)存在一個(gè)問(wèn)題:它無(wú)法展示神經(jīng)網(wǎng)絡(luò)架構(gòu)內(nèi)部的工作原理。舉例來(lái)說(shuō),變分自編碼機(jī)(VAE:variational autoencoders )看起來(lái)跟自編碼機(jī)(AE:autoencoders)差不多,但它們的訓(xùn)練過(guò)程卻大不相同。訓(xùn)練后的模型在使用場(chǎng)景上差別更大:VAE是生成器,通過(guò)插入噪音數(shù)據(jù)來(lái)獲取新樣本;而AE僅僅是把他們所收到的任何信息作為輸入,映射到“記憶中”最相似的訓(xùn)練樣本上。
在介紹不同模型的神經(jīng)元和神經(jīng)細(xì)胞層之間的連接方式前,我們一步一步來(lái),先來(lái)了解不同的神經(jīng)元節(jié)點(diǎn)內(nèi)部是如何工作的。
神經(jīng)元
對(duì)不同類(lèi)型的神經(jīng)元標(biāo)記不同的顏色,可以更好地在各種網(wǎng)絡(luò)架構(gòu)之間進(jìn)行區(qū)分。但是,這些神經(jīng)元的工作方式卻是大同小異。在下圖的基本神經(jīng)元結(jié)構(gòu)后面,你會(huì)看到詳細(xì)的講解:
基本的人工神經(jīng)網(wǎng)絡(luò)神經(jīng)元(basic neural network cell)相當(dāng)簡(jiǎn)單,這種簡(jiǎn)單的類(lèi)型可以在常規(guī)的前饋人工神經(jīng)網(wǎng)絡(luò)架構(gòu)里面找到。這種神經(jīng)元與其它神經(jīng)元之間的連接具有權(quán)重,也就是說(shuō),它可以和前一層神經(jīng)網(wǎng)絡(luò)層中的所有神經(jīng)元有連接。
每一個(gè)連接都有各自的權(quán)重,通常情況下是一些隨機(jī)值(關(guān)于如何對(duì)人工神經(jīng)網(wǎng)絡(luò)的權(quán)重進(jìn)行初始化是一個(gè)非常重要的話(huà)題,這將會(huì)直接影響到之后的訓(xùn)練過(guò)程,以及最終整個(gè)模型的性能)。這個(gè)權(quán)重可以是負(fù)值,正值,非常小,或者非常大,也可以是零。和這個(gè)神經(jīng)元連接的所有神經(jīng)元的值都會(huì)乘以各自對(duì)應(yīng)的權(quán)重。然后,把這些值都求和。
在這個(gè)基礎(chǔ)上,會(huì)額外加上一個(gè)bias,它可以用來(lái)避免輸出為零的情況,并且能夠加速某些操作,這讓解決某個(gè)問(wèn)題所需要的神經(jīng)元數(shù)量也有所減少。這個(gè)bias也是一個(gè)數(shù)字,有些時(shí)候是一個(gè)常量(經(jīng)常是-1或者1),有些時(shí)候會(huì)有所變化。這個(gè)總和最終被輸入到一個(gè)激活函數(shù),這個(gè)激活函數(shù)的輸出最終就成為這個(gè)神經(jīng)元的輸出。
卷積神經(jīng)元(Convolutional cells)和前饋神經(jīng)元非常相似,除了它們只跟前一神經(jīng)細(xì)胞層的部分神經(jīng)元有連接。因?yàn)樗鼈儾皇呛湍承┥窠?jīng)元隨機(jī)連接的,而是與特定范圍內(nèi)的神經(jīng)元相連接,通常用來(lái)保存空間信息。這讓它們對(duì)于那些擁有大量局部信息,比如圖像數(shù)據(jù)、語(yǔ)音數(shù)據(jù)(但多數(shù)情況下是圖像數(shù)據(jù)),會(huì)非常實(shí)用。
解卷積神經(jīng)元恰好相反:它們是通過(guò)跟下一神經(jīng)細(xì)胞層的連接來(lái)解碼空間信息。這兩種神經(jīng)元都有很多副本,它們都是獨(dú)立訓(xùn)練的;每個(gè)副本都有自己的權(quán)重,但連接方式卻完全相同。可以認(rèn)為,這些副本是被放在了具備相同結(jié)構(gòu)的不同的神經(jīng)網(wǎng)絡(luò)中。這兩種神經(jīng)元本質(zhì)上都是一般意義上的神經(jīng)元,但是,它們的使用方式卻不同。
池化神經(jīng)元和插值神經(jīng)元(Pooling and interpolating cells)經(jīng)常和卷積神經(jīng)元結(jié)合起來(lái)使用。它們不是真正意義上的神經(jīng)元,只能進(jìn)行一些簡(jiǎn)單的操作。
池化神經(jīng)元接受到來(lái)自其它神經(jīng)元的輸出過(guò)后,決定哪些值可以通過(guò),哪些值不能通過(guò)。在圖像領(lǐng)域,可以理解成是把一個(gè)圖像縮小了(在查看圖片的時(shí)候,一般軟件都有一個(gè)放大、縮小的功能;這里的圖像縮小,就相當(dāng)于軟件上的縮小圖像;也就是說(shuō)我們能看到圖像的內(nèi)容更加少了;在這個(gè)池化的過(guò)程當(dāng)中,圖像的大小也會(huì)相應(yīng)地減少)。這樣,你就再也不能看到所有的像素了,池化函數(shù)會(huì)知道什么像素該保留,什么像素該舍棄。
插值神經(jīng)元恰好是相反的操作:它們獲取一些信息,然后映射出更多的信息。額外的信息都是按照某種方式制造出來(lái)的,這就好像在一張小分辨率的圖片上面進(jìn)行放大。插值神經(jīng)元不僅僅是池化神經(jīng)元的反向操作,而且,它們也是很常見(jiàn),因?yàn)樗鼈冞\(yùn)行非常快,同時(shí),實(shí)現(xiàn)起來(lái)也很簡(jiǎn)單。池化神經(jīng)元和插值神經(jīng)元之間的關(guān)系,就像卷積神經(jīng)元和解卷積神經(jīng)元之間的關(guān)系。
均值神經(jīng)元和標(biāo)準(zhǔn)方差神經(jīng)元(Mean and standard deviation cells)(作為概率神經(jīng)元它們總是成對(duì)地出現(xiàn))是一類(lèi)用來(lái)描述數(shù)據(jù)概率分布的神經(jīng)元。均值就是所有值的平均值,而標(biāo)準(zhǔn)方差描述的是這些數(shù)據(jù)偏離(兩個(gè)方向)均值有多遠(yuǎn)。比如:一個(gè)用于圖像處理的概率神經(jīng)元可以包含一些信息,比如:在某個(gè)特定的像素里面有多少紅色。舉個(gè)例來(lái)說(shuō),均值可能是0.5,同時(shí)標(biāo)準(zhǔn)方差是0.2。當(dāng)要從這些概率神經(jīng)元取樣的時(shí)候,你可以把這些值輸入到一個(gè)高斯隨機(jī)數(shù)生成器,這樣就會(huì)生成一些分布在0.4和0.6之間的值;值離0.5越遠(yuǎn),對(duì)應(yīng)生成的概率也就越小。它們一般和前一神經(jīng)元層或者下一神經(jīng)元層是全連接,而且,它們沒(méi)有偏差(bias)。
循環(huán)神經(jīng)元(Recurrent cells?)不僅僅在神經(jīng)細(xì)胞層之間有連接,而且在時(shí)間軸上也有相應(yīng)的連接。每一個(gè)神經(jīng)元內(nèi)部都會(huì)保存它先前的值。它們跟一般的神經(jīng)元一樣更新,但是,具有額外的權(quán)重:與當(dāng)前神經(jīng)元之前值之間的權(quán)重,還有大多數(shù)情況下,與同一神經(jīng)細(xì)胞層各個(gè)神經(jīng)元之間的權(quán)重。當(dāng)前值和存儲(chǔ)的先前值之間權(quán)重的工作機(jī)制,與非永久性存儲(chǔ)器(比如RAM)的工作機(jī)制很相似,繼承了兩個(gè)性質(zhì):
第一,維持一個(gè)特定的狀態(tài);
第二:如果不對(duì)其持續(xù)進(jìn)行更新(輸入),這個(gè)狀態(tài)就會(huì)消失。
由于先前的值是通過(guò)激活函數(shù)得到的,而在每一次的更新時(shí),都會(huì)把這個(gè)值和其它權(quán)重一起輸入到激活函數(shù),因此,信息會(huì)不斷地流失。實(shí)際上,信息的保存率非常的低,以至于僅僅四次或者五次迭代更新過(guò)后,幾乎之前所有的信息都會(huì)流失掉。
長(zhǎng)短期記憶神經(jīng)元(Long short term memory cells)用于克服循環(huán)神經(jīng)元中信息快速流失的問(wèn)題。
LSTM是一個(gè)邏輯回路,其設(shè)計(jì)受到了計(jì)算機(jī)內(nèi)存單元設(shè)計(jì)的啟發(fā)。與只存儲(chǔ)兩個(gè)狀態(tài)的循環(huán)神經(jīng)元相比,LSTM可以存儲(chǔ)四個(gè)狀態(tài):輸出值的當(dāng)前和先前值,記憶神經(jīng)元狀態(tài)的當(dāng)前值和先前值。它們都有三個(gè)門(mén):輸入門(mén),輸出門(mén),遺忘門(mén),同時(shí),它們也還有常規(guī)的輸入。
這些門(mén)它們都有各自的權(quán)重,也就是說(shuō),與這種類(lèi)型的神經(jīng)元細(xì)胞連接需要設(shè)置四個(gè)權(quán)重(而不是一個(gè))。這些門(mén)的工作機(jī)制與流門(mén)(flow gates)很相似,而不是柵欄門(mén)(fence gates):它們可以讓所有的信息都通過(guò),或者只是通過(guò)部分,也可以什么都不讓通過(guò),或者通過(guò)某個(gè)區(qū)間的信息。
這種運(yùn)行機(jī)制的實(shí)現(xiàn)是通過(guò)把輸入信息和一個(gè)在0到1之間的系數(shù)相乘,這個(gè)系數(shù)存儲(chǔ)在當(dāng)前門(mén)中。這樣,輸入門(mén)決定輸入的信息有多少可以被疊加到當(dāng)前門(mén)值。輸出門(mén)決定有多少輸出信息是可以傳遞到后面的神經(jīng)網(wǎng)絡(luò)中。遺忘門(mén)并不是和輸出神經(jīng)元的先前值相連接,而是,和前一記憶神經(jīng)元相連接。它決定了保留多少記憶神經(jīng)元最新的狀態(tài)信息。因?yàn)闆](méi)有和輸出相連接,以及沒(méi)有激活函數(shù)在這個(gè)循環(huán)中,因此只會(huì)有更少的信息流失。
門(mén)控循環(huán)神經(jīng)元(Gated recurrent units (cells))是LSTM的變體。它們同樣使用門(mén)來(lái)抑制信息的流失,但是只用兩個(gè)門(mén):更新門(mén)和重置門(mén)。這使得構(gòu)建它們付出的代價(jià)沒(méi)有那么高,而且運(yùn)行速度更加快了,因?yàn)樗鼈冊(cè)谒械牡胤绞褂昧烁俚倪B接。
從本質(zhì)上來(lái)說(shuō)LSTM和GRU有兩個(gè)不同的地方:
第一:GRU神經(jīng)元沒(méi)有被輸出門(mén)保護(hù)的隱神經(jīng)元;
第二:GRU把輸出門(mén)和遺忘門(mén)整合在了一起,形成了更新門(mén)。核心的思想就是如果你想要一些新的信息,那么你就可以遺忘掉一些陳舊的信息(反過(guò)來(lái)也可以)。
神經(jīng)細(xì)胞層(Layers)
形成一個(gè)神經(jīng)網(wǎng)絡(luò),最簡(jiǎn)單的連接神經(jīng)元方式是——把所有的神經(jīng)元與其它所有的神經(jīng)元相連接。這就好像Hopfield神經(jīng)網(wǎng)絡(luò)和玻爾茲曼機(jī)(Boltzmann machines)的連接方式。當(dāng)然,這也就意味著連接數(shù)量會(huì)隨著神經(jīng)元個(gè)數(shù)的增加呈指數(shù)級(jí)地增加,但是,對(duì)應(yīng)的函數(shù)表達(dá)力也會(huì)越來(lái)越強(qiáng)。這就是所謂的全連接(completely (or fully) connected)。
經(jīng)歷了一段時(shí)間的發(fā)展,發(fā)現(xiàn)把神經(jīng)網(wǎng)絡(luò)分解成不同的神經(jīng)細(xì)胞層會(huì)非常有效。神經(jīng)細(xì)胞層的定義是一群彼此之間互不連接的神經(jīng)元,它們僅跟其它神經(jīng)細(xì)胞層有連接。這一概念在受限玻爾茲曼機(jī)(Restricted Boltzmann Machines)中有所體現(xiàn)。現(xiàn)在,使用神經(jīng)網(wǎng)絡(luò)就意味著使用神經(jīng)細(xì)胞層,并且是任意數(shù)量的神經(jīng)細(xì)胞層。其中一個(gè)比較令人困惑的概念是全連接(fully connected or completely connected),也就是某一層的每個(gè)神經(jīng)元跟另一層的所有神經(jīng)元都有連接,但真正的全連接神經(jīng)網(wǎng)絡(luò)相當(dāng)罕見(jiàn)。
卷積連接層(Convolutionally connected layers)相對(duì)于全連接層要有更多的限制:在卷積連接層中的每一個(gè)神經(jīng)元只與相鄰的神經(jīng)元層連接。圖像和聲音蘊(yùn)含了大量的信息,如果一對(duì)一地輸入到神經(jīng)網(wǎng)絡(luò)(比如,一個(gè)神經(jīng)元對(duì)應(yīng)一個(gè)像素)。卷積連接的形成,受益于保留空間信息更為重要的觀(guān)察。實(shí)踐證明這是一個(gè)非常好的猜測(cè),因?yàn)楝F(xiàn)在大多數(shù)基于人工神經(jīng)網(wǎng)絡(luò)的圖像和語(yǔ)音應(yīng)用都使用了這種連接方式。然而,這種連接方式所需的代價(jià)遠(yuǎn)遠(yuǎn)低于全連接層的形式。從本質(zhì)上來(lái)講,卷積連接方式起到重要性過(guò)濾的作用,決定哪些緊緊聯(lián)系在一起的信息包是重要的;卷積連接對(duì)于數(shù)據(jù)降維非常有用。
當(dāng)然了,還有另外一種選擇,就是隨機(jī)連接神經(jīng)元(randomly connected neurons)。這種形式的連接主要有兩種變體:
第一,允許部分神經(jīng)元進(jìn)行全連接。
第二,神經(jīng)元層之間只有部分連接。
隨機(jī)連接方式有助于線(xiàn)性地降低人工神經(jīng)網(wǎng)絡(luò)的性能;當(dāng)全連接層遇到性能問(wèn)題的時(shí)候,在大規(guī)模人工神經(jīng)網(wǎng)絡(luò)中,使用隨機(jī)連接方式非常有益。擁有更多神經(jīng)元且更加稀疏的神經(jīng)元層在某些情況下運(yùn)行效果更好,特別是很多的信息需要被存儲(chǔ)起來(lái),但是,需要交換的信息并不多(這與卷積連接層的運(yùn)行機(jī)制很相似,但是,它們是隨機(jī)的)。非常稀疏的連接網(wǎng)絡(luò)(1%或2%)也有被使用,比如ELMs,ESNs?和LSMs。這特別適用于脈沖網(wǎng)絡(luò)(spiking networks),因?yàn)橐粋€(gè)神經(jīng)元擁有更多的連接,它對(duì)應(yīng)的權(quán)重具有的能量也就更少,這也就意味著將會(huì)有更少的擴(kuò)展和重復(fù)模式。
時(shí)間滯后連接(Time delayed connections)是指相連的神經(jīng)元(通常是在同一個(gè)神經(jīng)元層,甚至于一個(gè)神經(jīng)元自己跟自己連接),它們不從前面的神經(jīng)元層獲取信息,而是從神經(jīng)元層先前的狀態(tài)獲取信息。這使得暫時(shí)(時(shí)間上或者序列上)聯(lián)系在一起的信息可以被存儲(chǔ)起來(lái)。這些形式的連接經(jīng)常被手工重新進(jìn)行設(shè)置,從而可以清除神經(jīng)網(wǎng)絡(luò)的狀態(tài)。和常規(guī)連接的主要區(qū)別是,這種連接會(huì)持續(xù)不斷地改變,即便這個(gè)神經(jīng)網(wǎng)絡(luò)當(dāng)前沒(méi)有處于訓(xùn)練狀態(tài)。
下圖展示了以上所介紹的神經(jīng)網(wǎng)絡(luò)及其連接方式。當(dāng)我卡在哪種神經(jīng)元與哪個(gè)神經(jīng)細(xì)胞層該連到一起的時(shí)候,就會(huì)拿這張圖出來(lái)作為參考(尤其是在處理和分析LSTM與GRU神經(jīng)元時(shí)):
顯而易見(jiàn),整理一份完整的清單是不切實(shí)際的,因?yàn)樾碌募軜?gòu)正被源源不斷地發(fā)明出來(lái)。所以,接下來(lái)這份清單的目的,只想帶你一窺人工智能領(lǐng)域的基礎(chǔ)設(shè)施。對(duì)于每一個(gè)畫(huà)成節(jié)點(diǎn)圖的架構(gòu),我都會(huì)寫(xiě)一個(gè)非常非常簡(jiǎn)短的描述。你會(huì)發(fā)現(xiàn)這些描述還是很有用的,畢竟,總還是有一些你并不是那么熟悉的架構(gòu)。
以下內(nèi)容將詳細(xì)介紹25個(gè)神經(jīng)網(wǎng)絡(luò)模型。
值得一提的是,雖說(shuō)大多數(shù)的簡(jiǎn)寫(xiě)都已被普遍接受,但總會(huì)出現(xiàn)一些沖突。RNNs有時(shí)表示遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural networks),但大多時(shí)候,它們指的是循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural networks)。這還沒(méi)完,它們?cè)谠S多地方還會(huì)泛指各種循環(huán)架構(gòu),這包括在LSTMs、GRU甚至是雙向變體。AEs也經(jīng)常會(huì)面臨同樣的問(wèn)題,VAEs、DAEs及其相似結(jié)構(gòu)有時(shí)都被簡(jiǎn)稱(chēng)為AEs。很多縮寫(xiě)后面的“N”也常常會(huì)有所變化,因?yàn)橥粋€(gè)架構(gòu)你既可稱(chēng)之為卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network),也可簡(jiǎn)稱(chēng)為卷積網(wǎng)絡(luò)(convolutional network),這樣就出現(xiàn)了CNN和CN兩種形式。
前饋神經(jīng)網(wǎng)絡(luò)(FFNN)
前饋神經(jīng)感知網(wǎng)絡(luò)與感知機(jī)(FF or FFNN:Feed forward neural networks and P:perceptrons)非常簡(jiǎn)單,信息從前往后流動(dòng)(分別對(duì)應(yīng)輸入和輸出)。
一般在描述神經(jīng)網(wǎng)絡(luò)的時(shí)候,都是從它的層說(shuō)起,即相互平行的輸入層、隱含層或者輸出層神經(jīng)結(jié)構(gòu)。單獨(dú)的神經(jīng)細(xì)胞層內(nèi)部,神經(jīng)元之間互不相連;而一般相鄰的兩個(gè)神經(jīng)細(xì)胞層則是全連接(一層的每個(gè)神經(jīng)元和另一層的每一個(gè)神經(jīng)元相連)。一個(gè)最簡(jiǎn)單卻最具有實(shí)用性的神經(jīng)網(wǎng)絡(luò)由兩個(gè)輸入神經(jīng)元和一個(gè)輸出神經(jīng)元構(gòu)成,也就是一個(gè)邏輯門(mén)模型。給神經(jīng)網(wǎng)絡(luò)一對(duì)數(shù)據(jù)集(分別是“輸入數(shù)據(jù)集”和“我們期望的輸出數(shù)據(jù)集”),一般通過(guò)反向傳播算法來(lái)訓(xùn)練前饋神經(jīng)網(wǎng)絡(luò)(FFNNs)。
這就是所謂的監(jiān)督式學(xué)習(xí)。與此相反的是無(wú)監(jiān)督學(xué)習(xí):我們只給輸入,然后讓神經(jīng)網(wǎng)絡(luò)去尋找數(shù)據(jù)當(dāng)中的規(guī)律。反向傳播的誤差往往是神經(jīng)網(wǎng)絡(luò)當(dāng)前輸出和給定輸出之間差值的某種變體(比如MSE或者僅僅是差值的線(xiàn)性變化)。如果神經(jīng)網(wǎng)絡(luò)具有足夠的隱層神經(jīng)元,那么理論上它總是能夠建立輸入數(shù)據(jù)和輸出數(shù)據(jù)之間的關(guān)系。在實(shí)踐中,F(xiàn)FNN的使用具有很大的局限性,但是,它們通常和其它神經(jīng)網(wǎng)絡(luò)一起組合成新的架構(gòu)
徑向基神經(jīng)網(wǎng)絡(luò)(RBF)
徑向神經(jīng)網(wǎng)絡(luò)(RBF:Radial basis function)是一種以徑向基核函數(shù)作為激活函數(shù)的前饋神經(jīng)網(wǎng)絡(luò)。沒(méi)有更多描述了。這不是說(shuō)沒(méi)有相關(guān)的應(yīng)用,但大多數(shù)以其它函數(shù)作為激活函數(shù)的FFNNs都沒(méi)有它們自己的名字。這或許跟它們的發(fā)明年代有關(guān)系
霍普菲爾網(wǎng)絡(luò)(HN)
霍普菲爾網(wǎng)絡(luò)(HN:Hopfield network)是一種每一個(gè)神經(jīng)元都跟其它神經(jīng)元相互連接的網(wǎng)絡(luò)。
這就像一盤(pán)完全攪在一起的意大利面,因?yàn)槊總€(gè)神經(jīng)元都在充當(dāng)所有角色:訓(xùn)練前的每一個(gè)節(jié)點(diǎn)都是輸入神經(jīng)元,訓(xùn)練階段是隱神經(jīng)元,輸出階段則是輸出神經(jīng)元。
該神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,是先把神經(jīng)元的值設(shè)置到期望模式,然后計(jì)算相應(yīng)的權(quán)重。在這以后,權(quán)重將不會(huì)再改變了。一旦網(wǎng)絡(luò)被訓(xùn)練包含一種或者多種模式,這個(gè)神經(jīng)網(wǎng)絡(luò)總是會(huì)收斂于其中的某一種學(xué)習(xí)到的模式,因?yàn)樗粫?huì)在某一個(gè)狀態(tài)才會(huì)穩(wěn)定。值得注意的是,它并不一定遵從那個(gè)期望的狀態(tài)(很遺憾,它并不是那個(gè)具有魔法的黑盒子)。它之所以會(huì)穩(wěn)定下來(lái),部分要?dú)w功于在訓(xùn)練期間整個(gè)網(wǎng)絡(luò)的“能量(Energy)”或“溫度(Temperature)”會(huì)逐漸地減少。每一個(gè)神經(jīng)元的激活函數(shù)閾值都會(huì)被設(shè)置成這個(gè)溫度的值,一旦神經(jīng)元輸入的總和超過(guò)了這個(gè)閾值,那么就會(huì)讓當(dāng)前神經(jīng)元選擇狀態(tài)(通常是-1或1,有時(shí)也是0或1)。
可以多個(gè)神經(jīng)元同步,也可以一個(gè)神經(jīng)元一個(gè)神經(jīng)元地對(duì)網(wǎng)絡(luò)進(jìn)行更新。一旦所有的神經(jīng)元都已經(jīng)被更新,并且它們?cè)僖矝](méi)有改變,整個(gè)網(wǎng)絡(luò)就算穩(wěn)定(退火)了,那你就可以說(shuō)這個(gè)網(wǎng)絡(luò)已經(jīng)收斂了。這種類(lèi)型的網(wǎng)絡(luò)被稱(chēng)為“聯(lián)想記憶(associative memory)”,因?yàn)樗鼈儠?huì)收斂到和輸入最相似的狀態(tài);比如,人類(lèi)看到桌子的一半就可以想象出另外一半;與之相似,如果輸入一半噪音+一半桌子,這個(gè)網(wǎng)絡(luò)就能收斂到整張桌子。
馬爾可夫鏈(MC)
馬爾可夫鏈(MC:Markov Chain)或離散時(shí)間馬爾可夫鏈(DTMC:MC or discrete time Markov Chain)在某種意義上是BMs和HNs的前身。可以這樣來(lái)理解:從從我當(dāng)前所處的節(jié)點(diǎn)開(kāi)始,走到任意相鄰節(jié)點(diǎn)的概率是多少呢?它們沒(méi)有記憶(所謂的馬爾可夫特性):你所得到的每一個(gè)狀態(tài)都完全依賴(lài)于前一個(gè)狀態(tài)。盡管算不上神經(jīng)網(wǎng)絡(luò),但它卻跟神經(jīng)網(wǎng)絡(luò)類(lèi)似,并且奠定了BM和HN的理論基礎(chǔ)。跟BM、RBM、HN一樣,MC并不總被認(rèn)為是神經(jīng)網(wǎng)絡(luò)。此外,它也并不總是全連接的。
玻爾茲曼機(jī)(BM)
玻爾茲曼機(jī)(BM:Boltzmann machines)和霍普菲爾網(wǎng)絡(luò)很接近,差別只是:一些神經(jīng)元作為輸入神經(jīng)元,剩余的則是作為隱神經(jīng)元。
在整個(gè)神經(jīng)網(wǎng)絡(luò)更新過(guò)后,輸入神經(jīng)元成為輸出神經(jīng)元。剛開(kāi)始神經(jīng)元的權(quán)重都是隨機(jī)的,通過(guò)反向傳播(back-propagation)算法進(jìn)行學(xué)習(xí),或是最近常用的對(duì)比散度(contrastive divergence)算法(馬爾可夫鏈用于計(jì)算兩個(gè)信息增益之間的梯度)。
相比HN,大多數(shù)BM的神經(jīng)元激活模式都是二元的。BM由MC訓(xùn)練獲得,因而是一個(gè)隨機(jī)網(wǎng)絡(luò)。BM的訓(xùn)練和運(yùn)行過(guò)程,跟HN大同小異:為輸入神經(jīng)元設(shè)好鉗位值,而后讓神經(jīng)網(wǎng)絡(luò)自行學(xué)習(xí)。因?yàn)檫@些神經(jīng)元可能會(huì)得到任意的值,我們反復(fù)地在輸入和輸出神經(jīng)元之間來(lái)回地進(jìn)行計(jì)算。激活函數(shù)的激活受全局溫度的控制,如果全局溫度降低了,那么神經(jīng)元的能量也會(huì)相應(yīng)地降低。這個(gè)能量上的降低導(dǎo)致了它們激活模式的穩(wěn)定。在正確的溫度下,這個(gè)網(wǎng)絡(luò)會(huì)抵達(dá)一個(gè)平衡狀態(tài)。
受限玻爾茲曼機(jī)(RBM)
受限玻爾茲曼機(jī)(RBM:Restricted Boltzmann machines)與BM出奇地相似,因而也同HN相似。
它們的最大區(qū)別在于:RBM更具實(shí)用價(jià)值,因?yàn)樗鼈兪艿搅烁嗟南拗啤K鼈儾粫?huì)隨意在所有神經(jīng)元間建立連接,而只在不同神經(jīng)元群之間建立連接,因此任何輸入神經(jīng)元都不會(huì)同其他輸入神經(jīng)元相連,任何隱神經(jīng)元也不會(huì)同其他隱神經(jīng)元相連。
RBM的訓(xùn)練方式就像稍微修改過(guò)的FFNN:前向通過(guò)數(shù)據(jù)之后再將這些數(shù)據(jù)反向傳回(回到第一層),而非前向通過(guò)數(shù)據(jù)然后反向傳播誤差。之后,再使用前向和反向傳播進(jìn)行訓(xùn)練。
自編碼機(jī)(AE)
自編碼機(jī)(AE:Autoencoders)和FFNN有些相近,因?yàn)樗袷荈FNN的另一種用法,而非本質(zhì)上完全不同的另一種架構(gòu)。
自編碼機(jī)的基本思想是自動(dòng)對(duì)信息進(jìn)行編碼(像壓縮一樣,而非加密),它也因此而得名。整個(gè)網(wǎng)絡(luò)的形狀酷似一個(gè)沙漏計(jì)時(shí)器,中間的隱含層較小,兩邊的輸入層、輸出層較大。自編碼機(jī)總是對(duì)稱(chēng)的,以中間層(一層還是兩層取決于神經(jīng)網(wǎng)絡(luò)層數(shù)的奇偶)為軸。最小的層(一層或者多層)總是在中間,在這里信息壓縮程度最大(整個(gè)網(wǎng)絡(luò)的關(guān)隘口)。在中間層之前為編碼部分,中間層之后為解碼部分,中間層則是編碼部分。
自編碼機(jī)可用反向傳播算法進(jìn)行訓(xùn)練,給定輸入,將誤差設(shè)為輸入和輸出之差。自編碼機(jī)的權(quán)重也是對(duì)稱(chēng)的,因此編碼部分權(quán)重與解碼部分權(quán)重完全一樣。
稀疏自編碼機(jī)(SAE)
稀疏自編碼機(jī)(SAE:Sparse autoencoders)某種程度上同自編碼機(jī)相反。稀疏自編碼機(jī)不是用更小的空間表征大量信息,而是把原本的信息編碼到更大的空間內(nèi)。因此,中間層不是收斂,而是擴(kuò)張,然后再還原到輸入大小。它可以用于提取數(shù)據(jù)集內(nèi)的小特征。
如果用訓(xùn)練自編碼機(jī)的方式來(lái)訓(xùn)練稀疏自編碼機(jī),幾乎所有的情況,都是得到毫無(wú)用處的恒等網(wǎng)絡(luò)(輸入=輸出,沒(méi)有任何形式的變換或分解)。為避免這種情況,需要在反饋輸入中加上稀疏驅(qū)動(dòng)數(shù)據(jù)。稀疏驅(qū)動(dòng)的形式可以是閾值過(guò)濾,這樣就只有特定的誤差才會(huì)反向傳播用于訓(xùn)練,而其它的誤差則被忽略為0,不會(huì)用于反向傳播。這很像脈沖神經(jīng)網(wǎng)絡(luò)(并不是所有的神經(jīng)元一直都會(huì)輸出)。
變分自編碼機(jī)(VAE)
變分自編碼機(jī)(VAE:Variational autoencoders)和AE有著相同的架構(gòu),卻被教會(huì)了不同的事情:輸入樣本的一個(gè)近似概率分布,這讓它跟BM、RBM更相近。
不過(guò),VAE卻依賴(lài)于貝葉斯理論來(lái)處理概率推斷和獨(dú)立(probabilistic inference and independence),以及重新參數(shù)化(re-parametrisation)來(lái)進(jìn)行不同的表征。推斷和獨(dú)立非常直觀(guān),但卻依賴(lài)于復(fù)雜的數(shù)學(xué)理論。基本原理是:把影響納入考慮。如果在一個(gè)地方發(fā)生了一件事情,另外一件事情在其它地方發(fā)生了,它們不一定就是關(guān)聯(lián)在一起的。如果它們不相關(guān),那么誤差傳播應(yīng)該考慮這個(gè)因素。這是一個(gè)有用的方法,因?yàn)樯窠?jīng)網(wǎng)絡(luò)是一個(gè)非常大的圖表,如果你能在某些節(jié)點(diǎn)排除一些來(lái)自于其它節(jié)點(diǎn)的影響,隨著網(wǎng)絡(luò)深度地增加,這將會(huì)非常有用。
去噪自編碼機(jī)(DAE)
去噪自編碼機(jī)(DAE:Denoising autoencoders)是一種自編碼機(jī),它的訓(xùn)練過(guò)程,不僅要輸入數(shù)據(jù),還有再加上噪音數(shù)據(jù)(就好像讓圖像變得更加模糊一樣)。
但在計(jì)算誤差的時(shí)候跟自動(dòng)編碼機(jī)一樣,降噪自動(dòng)編碼機(jī)的輸出也是和原始的輸入數(shù)據(jù)進(jìn)行對(duì)比。這種形式的訓(xùn)練旨在鼓勵(lì)降噪自編碼機(jī)不要去學(xué)習(xí)細(xì)節(jié),而是一些更加宏觀(guān)的特征,因?yàn)榧?xì)微特征受到噪音的影響,學(xué)習(xí)細(xì)微特征得到的模型最終表現(xiàn)出來(lái)的性能總是很差。
深度信念網(wǎng)絡(luò)(DBN)
深度信念網(wǎng)絡(luò)(DBN:Deep belief networks)之所以取這個(gè)名字,是由于它本身幾乎是由多個(gè)受限玻爾茲曼機(jī)或者變分自編碼機(jī)堆砌而成。
實(shí)踐表明一層一層地對(duì)這種類(lèi)型的神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練非常有效,這樣每一個(gè)自編碼機(jī)或者受限玻爾茲曼機(jī)只需要學(xué)習(xí)如何編碼前一神經(jīng)元層的輸出。這種訓(xùn)練技術(shù)也被稱(chēng)為貪婪訓(xùn)練,這里貪婪的意思是通過(guò)不斷地獲取局部最優(yōu)解,最終得到一個(gè)相當(dāng)不錯(cuò)解(但可能不是全局最優(yōu)的)。可以通過(guò)對(duì)比散度算法或者反向傳播算法進(jìn)行訓(xùn)練,它會(huì)慢慢學(xué)著以一種概率模型來(lái)表征數(shù)據(jù),就好像常規(guī)的自編碼機(jī)或者受限玻爾茲曼機(jī)。一旦經(jīng)過(guò)非監(jiān)督式學(xué)習(xí)方式,訓(xùn)練或者收斂到了一個(gè)穩(wěn)定的狀態(tài),那么這個(gè)模型就可以用來(lái)產(chǎn)生新的數(shù)據(jù)。如果以對(duì)比散度算法進(jìn)行訓(xùn)練,那么它甚至可以用于區(qū)分現(xiàn)有的數(shù)據(jù),因?yàn)槟切┥窠?jīng)元已經(jīng)被引導(dǎo)來(lái)獲取數(shù)據(jù)的不同特定。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)
卷積神經(jīng)網(wǎng)絡(luò)(CNN:Convolutional neural networks)或深度卷積神經(jīng)網(wǎng)絡(luò)(DCNN:deep convolutional neural networks)跟其它類(lèi)型的神經(jīng)網(wǎng)絡(luò)大有不同。它們主要用于處理圖像數(shù)據(jù),但可用于其它形式數(shù)據(jù)的處理,如語(yǔ)音數(shù)據(jù)。對(duì)于卷積神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),一個(gè)典型的應(yīng)用就是給它輸入一個(gè)圖像,而后它會(huì)給出一個(gè)分類(lèi)結(jié)果。也就是說(shuō),如果你給它一張貓的圖像,它就輸出“貓”;如果你給一張狗的圖像,它就輸出“狗”。
卷積神經(jīng)網(wǎng)絡(luò)是從一個(gè)數(shù)據(jù)掃描層開(kāi)始,這種形式的處理并沒(méi)有嘗試在一開(kāi)始就解析整個(gè)訓(xùn)練數(shù)據(jù)。比如:對(duì)于一個(gè)大小為200X200像素的圖像,你不會(huì)想構(gòu)建一個(gè)40000個(gè)節(jié)點(diǎn)的神經(jīng)元層。而是,構(gòu)建一個(gè)20X20像素的輸入掃描層,然后,把原始圖像第一部分的20X20像素圖像(通常是從圖像的左上方開(kāi)始)輸入到這個(gè)掃描層。當(dāng)這部分圖像(可能是用于進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練)處理完,你會(huì)接著處理下一部分的20X20像素圖像:逐漸(通常情況下是移動(dòng)一個(gè)像素,但是,移動(dòng)的步長(zhǎng)是可以設(shè)置的)移動(dòng)掃描層,來(lái)處理原始數(shù)據(jù)。
注意
你不是一次性移動(dòng)掃描層20個(gè)像素(或其它任何掃描層大小的尺度),也不是把原始圖像切分成20X20像素的圖像塊,而是用掃描層在原始圖像上滑過(guò)。這個(gè)輸入數(shù)據(jù)(20X20像素的圖像塊)緊接著被輸入到卷積層,而非常規(guī)的神經(jīng)細(xì)胞層——卷積層的節(jié)點(diǎn)不是全連接。每一個(gè)輸入節(jié)點(diǎn)只會(huì)和最近的那個(gè)神經(jīng)元節(jié)點(diǎn)連接(至于多近要取決于具體的實(shí)現(xiàn),但通常不會(huì)超過(guò)幾個(gè))。
這些卷積層會(huì)隨著深度的增加而逐漸變小:大多數(shù)情況下,會(huì)按照輸入層數(shù)量的某個(gè)因子縮小(比如:20個(gè)神經(jīng)元的卷積層,后面是10個(gè)神經(jīng)元的卷積層,再后面就是5個(gè)神經(jīng)元的卷積層)。2的n次方(32,16, 8, 4, 2, 1)也是一個(gè)非常常用的因子,因?yàn)樗鼈冊(cè)诙x上可以簡(jiǎn)潔且完整地除盡。除了卷積層,池化層(pooling layers)也非常重要。
池化是一種過(guò)濾掉細(xì)節(jié)的方式:一種常用的池化方式是最大池化,比如用2X2的像素,然后取四個(gè)像素中值最大的那個(gè)傳遞。為了讓卷積神經(jīng)網(wǎng)絡(luò)處理語(yǔ)音數(shù)據(jù),需要把語(yǔ)音數(shù)據(jù)切分,一段一段輸入。在實(shí)際應(yīng)用中,通常會(huì)在卷積神經(jīng)網(wǎng)絡(luò)后面加一個(gè)前饋神經(jīng)網(wǎng)絡(luò),以進(jìn)一步處理數(shù)據(jù),從而對(duì)數(shù)據(jù)進(jìn)行更高水平的非線(xiàn)性抽象。
解卷積網(wǎng)絡(luò)(DN)
解卷積網(wǎng)絡(luò)(DN:Deconvolutional networks),又稱(chēng)為逆圖形網(wǎng)絡(luò)(IGNs:inverse graphics networks),是逆向的卷積神經(jīng)網(wǎng)絡(luò)。
想象一下,給一個(gè)神經(jīng)網(wǎng)絡(luò)輸入一個(gè)“貓”的詞,就可以生成一個(gè)像貓一樣的圖像,通過(guò)比對(duì)它和真實(shí)的貓的圖片來(lái)進(jìn)行訓(xùn)練。跟常規(guī)CNN一樣,DN也可以結(jié)合FFNN使用,但沒(méi)必要為這個(gè)新的縮寫(xiě)重新做圖解釋。它們可被稱(chēng)為深度解卷積網(wǎng)絡(luò),但把FFNN放到DNN前面和后面是不同的,那是兩種架構(gòu)(也就需要兩個(gè)名字),對(duì)于是否需要兩個(gè)不同的名字你們可能會(huì)有爭(zhēng)論。需要注意的是,絕大多數(shù)應(yīng)用都不會(huì)把文本數(shù)據(jù)直接輸入到神經(jīng)網(wǎng)絡(luò),而是用二元輸入向量。比如<0,1>代表貓,<1,0>代表狗,<1,1>代表貓和狗。
CNN的池化層往往也是被對(duì)應(yīng)的逆向操作替換了,主要是插值和外推(基于一個(gè)基本的假設(shè):如果一個(gè)池化層使用了最大池化,你可以在逆操作的時(shí)候生成一些相對(duì)于最大值更小的數(shù)據(jù))。
深度卷積逆向圖網(wǎng)絡(luò)(DCIGN)
深度卷積逆向圖網(wǎng)絡(luò)(DCIGN:Deep convolutional inverse graphics networks),這個(gè)名字具有誤導(dǎo)性,因?yàn)樗鼈儗?shí)際上是VAE,但分別用CNN、DNN來(lái)作編碼和解碼的部分。
這些網(wǎng)絡(luò)嘗試在編碼過(guò)程中對(duì)“特征“進(jìn)行概率建模,這樣一來(lái),你只要用貓和狗的獨(dú)照,就能讓它們生成一張貓和狗的合照。同理,你可以輸入一張貓的照片,如果貓旁邊有一只惱人的鄰家狗,你可以讓它們把狗去掉。很多演示表明,這種類(lèi)型的網(wǎng)絡(luò)能學(xué)會(huì)基于圖像的復(fù)雜變換,比如燈光強(qiáng)弱的變化、3D物體的旋轉(zhuǎn)。一般也是用反向傳播算法來(lái)訓(xùn)練此類(lèi)網(wǎng)絡(luò)。
生成式對(duì)抗網(wǎng)絡(luò)(GAN)
生成式對(duì)抗網(wǎng)絡(luò)(GAN:Generative adversarial networks)是一類(lèi)不同的網(wǎng)絡(luò),它們有一對(duì)“雙胞胎”:兩個(gè)網(wǎng)絡(luò)協(xié)同工作。
GAN可由任意兩種網(wǎng)絡(luò)組成(但通常是FF和CNN),其中一個(gè)用于生成內(nèi)容,另一個(gè)則用于鑒別生成的內(nèi)容。
鑒別網(wǎng)絡(luò)(discriminating network)同時(shí)接收訓(xùn)練數(shù)據(jù)和生成網(wǎng)絡(luò)(generative network)生成的數(shù)據(jù)。鑒別網(wǎng)絡(luò)的準(zhǔn)確率,被用作生成網(wǎng)絡(luò)誤差的一部分。這就形成了一種競(jìng)爭(zhēng):鑒別網(wǎng)絡(luò)越來(lái)越擅長(zhǎng)于區(qū)分真實(shí)的數(shù)據(jù)和生成數(shù)據(jù),而生成網(wǎng)絡(luò)也越來(lái)越善于生成難以預(yù)測(cè)的數(shù)據(jù)。這種方式非常有效,部分是因?yàn)椋杭幢阆喈?dāng)復(fù)雜的類(lèi)噪音模式最終都是可預(yù)測(cè)的,但跟輸入數(shù)據(jù)有著極為相似特征的生成數(shù)據(jù),則很難區(qū)分。
訓(xùn)練GAN極具挑戰(zhàn)性,因?yàn)槟悴粌H要訓(xùn)練兩個(gè)神經(jīng)網(wǎng)絡(luò)(其中的任何一個(gè)都會(huì)出現(xiàn)它自己的問(wèn)題),同時(shí)還要平衡兩者的運(yùn)行機(jī)制。如果預(yù)測(cè)或生成相比對(duì)方表現(xiàn)得過(guò)好,這個(gè)GAN就不會(huì)收斂,因?yàn)樗鼤?huì)內(nèi)部發(fā)散。
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN:Recurrent neural networks)是具有時(shí)間聯(lián)結(jié)的前饋神經(jīng)網(wǎng)絡(luò):它們有了狀態(tài),通道與通道之間有了時(shí)間上的聯(lián)系。神經(jīng)元的輸入信息,不僅包括前一神經(jīng)細(xì)胞層的輸出,還包括它自身在先前通道的狀態(tài)。
這就意味著:你的輸入順序?qū)?huì)影響神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)果:相比先輸入“曲奇餅”再輸入“牛奶”,先輸入“牛奶”再輸入“曲奇餅”后,或許會(huì)產(chǎn)生不同的結(jié)果。RNN存在一大問(wèn)題:梯度消失(或梯度爆炸,這取決于所用的激活函數(shù)),信息會(huì)隨時(shí)間迅速消失,正如FFNN會(huì)隨著深度的增加而失去信息一樣。
直覺(jué)上,這不算什么大問(wèn)題,因?yàn)檫@些都只是權(quán)重,而非神經(jīng)元的狀態(tài),但隨時(shí)間變化的權(quán)重正是來(lái)自過(guò)去信息的存儲(chǔ);如果權(quán)重是0或1000000,那之前的狀態(tài)就不再有信息價(jià)值。
原則上,RNN可以在很多領(lǐng)域使用,因?yàn)榇蟛糠謹(jǐn)?shù)據(jù)在形式上不存在時(shí)間線(xiàn)的變化,(不像語(yǔ)音或視頻),它們能以某種序列的形式呈現(xiàn)出來(lái)。一張圖片或一段文字可以一個(gè)像素或者一個(gè)文字地進(jìn)行輸入,因此,與時(shí)間相關(guān)的權(quán)重描述了該序列前一步發(fā)生了什么,而不是多少秒之前發(fā)生了什么。一般來(lái)說(shuō),循環(huán)神經(jīng)網(wǎng)絡(luò)是推測(cè)或補(bǔ)全信息很好的選擇,比如自動(dòng)補(bǔ)全。
長(zhǎng)短期記憶(LSTM)
長(zhǎng)短期記憶(LSTM:Long / short term memory)網(wǎng)絡(luò)試圖通過(guò)引入門(mén)結(jié)構(gòu)與明確定義的記憶單元來(lái)解決梯度消失/爆炸的問(wèn)題。
這更多的是受電路圖設(shè)計(jì)的啟發(fā),而非生物學(xué)上某種和記憶相關(guān)機(jī)制。每個(gè)神經(jīng)元都有一個(gè)記憶單元和三個(gè)門(mén):輸入門(mén)、輸出門(mén)、遺忘門(mén)。這三個(gè)門(mén)的功能就是通過(guò)禁止或允許信息流動(dòng)來(lái)保護(hù)信息。
輸入門(mén)決定了有多少前一神經(jīng)細(xì)胞層的信息可留在當(dāng)前記憶單元,輸出層在另一端決定下一神經(jīng)細(xì)胞層能從當(dāng)前神經(jīng)元獲取多少信息。遺忘門(mén)乍看很奇怪,但有時(shí)候遺忘部分信息是很有用的:比如說(shuō)它在學(xué)習(xí)一本書(shū),并開(kāi)始學(xué)一個(gè)新的章節(jié),那遺忘前面章節(jié)的部分角色就很有必要了。
實(shí)踐證明,LSTM可用來(lái)學(xué)習(xí)復(fù)雜的序列,比如像莎士比亞一樣寫(xiě)作,或創(chuàng)作全新的音樂(lè)。值得注意的是,每一個(gè)門(mén)都對(duì)前一神經(jīng)元的記憶單元賦有一個(gè)權(quán)重,因此會(huì)需要更多的計(jì)算資源。
門(mén)循環(huán)單元(GRU)
門(mén)循環(huán)單元(GRU : Gated recurrent units)是LSTM的一種輕量級(jí)變體。它們少了一個(gè)門(mén),同時(shí)連接方式也稍有不同:它們采用了一個(gè)更新門(mén)(update gate),而非LSTM所用的輸入門(mén)、輸出門(mén)、遺忘門(mén)。
更新門(mén)決定了保留多少上一個(gè)狀態(tài)的信息,還決定了收取多少來(lái)自前一神經(jīng)細(xì)胞層的信息。重置門(mén)(reset gate)跟LSTM遺忘門(mén)的功能很相似,但它存在的位置卻稍有不同。它們總是輸出完整的狀態(tài),沒(méi)有輸出門(mén)。多數(shù)情況下,它們跟LSTM類(lèi)似,但最大的不同是:GRU速度更快、運(yùn)行更容易(但函數(shù)表達(dá)力稍弱)。
在實(shí)踐中,這里的優(yōu)勢(shì)和劣勢(shì)會(huì)相互抵消:當(dāng)你你需要更大的網(wǎng)絡(luò)來(lái)獲取函數(shù)表達(dá)力時(shí),這樣反過(guò)來(lái),性能優(yōu)勢(shì)就被抵消了。在不需要額外的函數(shù)表達(dá)力時(shí),GRU的綜合性能要好于LSTM。
神經(jīng)圖靈機(jī)(NTM)
神經(jīng)圖靈機(jī)(NTM: Neural Turing machines)可以理解為對(duì)LSTM的抽象,它試圖把神經(jīng)網(wǎng)絡(luò)去黑箱化(以窺探其內(nèi)部發(fā)生的細(xì)節(jié))。
NTM不是把記憶單元設(shè)計(jì)在神經(jīng)元內(nèi),而是分離出來(lái)。NTM試圖結(jié)合常規(guī)數(shù)字信息存儲(chǔ)的高效性、永久性與神經(jīng)網(wǎng)絡(luò)的效率及函數(shù)表達(dá)能力。它的想法是設(shè)計(jì)一個(gè)可作內(nèi)容尋址的記憶庫(kù),并讓神經(jīng)網(wǎng)絡(luò)對(duì)其進(jìn)行讀寫(xiě)操作。NTM名字中的“圖靈(Turing)”是表明,它是圖靈完備(Turing complete)的,即具備基于它所讀取的內(nèi)容來(lái)讀取、寫(xiě)入、修改狀態(tài)的能力,也就是能表達(dá)一個(gè)通用圖靈機(jī)所能表達(dá)的一切。
BiRNN、BiLSTM、BiGRU
雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(BiRNN:Bidirectional recurrent neural networks)、雙向長(zhǎng)短期記憶網(wǎng)絡(luò)(BiLSTM:bidirectional long / short term memory networks?)和雙向門(mén)控循環(huán)單元(BiGRU:bidirectional gated recurrent units)在圖表中并未呈現(xiàn)出來(lái),因?yàn)樗鼈兛雌饋?lái)與其對(duì)應(yīng)的單向神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)一樣。
所不同的是,這些網(wǎng)絡(luò)不僅與過(guò)去的狀態(tài)有連接,而且與未來(lái)的狀態(tài)也有連接。比如,通過(guò)一個(gè)一個(gè)地輸入字母,訓(xùn)練單向的LSTM預(yù)測(cè)“魚(yú)(fish)”(在時(shí)間軸上的循環(huán)連接記住了過(guò)去的狀態(tài)值)。在BiLSTM的反饋通路輸入序列中的下一個(gè)字母,這使得它可以了解未來(lái)的信息是什么。這種形式的訓(xùn)練使得該網(wǎng)絡(luò)可以填充信息之間的空白,而不是預(yù)測(cè)信息。因此,它在處理圖像時(shí)不是擴(kuò)展圖像的邊界,而是填補(bǔ)一張圖片中的缺失。
深度殘差網(wǎng)絡(luò)(DRN)
深度殘差網(wǎng)絡(luò)(DRN: Deep residual networks)是非常深的FFNN網(wǎng)絡(luò),它有一種特殊的連接,可以把信息從某一神經(jīng)細(xì)胞層傳至后面幾層(通常是2到5層)。
該網(wǎng)絡(luò)的目的不是要找輸入數(shù)據(jù)與輸出數(shù)據(jù)之間的映射,而是致力于構(gòu)建輸入數(shù)據(jù)與輸出數(shù)據(jù)+輸入數(shù)據(jù)之間的映射函數(shù)。本質(zhì)上,它在結(jié)果中增加一個(gè)恒等函數(shù),并跟前面的輸入一起作為后一層的新輸入。結(jié)果表明,當(dāng)層數(shù)超過(guò)150后,這一網(wǎng)絡(luò)將非常擅于學(xué)習(xí)模式,這比常規(guī)的2到5層要多得多。然而,有證據(jù)表明這些網(wǎng)絡(luò)本質(zhì)上只是沒(méi)有時(shí)間結(jié)構(gòu)的RNN,它們總是與沒(méi)有門(mén)結(jié)構(gòu)的LSTM相提并論。
回聲狀態(tài)網(wǎng)絡(luò)(ESN)
回聲狀態(tài)網(wǎng)絡(luò)(ESN:Echo state networks)是另一種不同類(lèi)型的(循環(huán))網(wǎng)絡(luò)。
它的不同之處在于:神經(jīng)元之間的連接是隨機(jī)的(沒(méi)有整齊劃一的神經(jīng)細(xì)胞層),其訓(xùn)練過(guò)程也有所不同。不同于輸入數(shù)據(jù)后反向傳播誤差,ESN先輸入數(shù)據(jù)、前饋、而后更新神經(jīng)元狀態(tài),最后來(lái)觀(guān)察結(jié)果。它的輸入層和輸出層在這里扮演的角色不太常規(guī),輸入層用來(lái)主導(dǎo)網(wǎng)絡(luò),輸出層作為激活模式的觀(guān)測(cè)器隨時(shí)間展開(kāi)。在訓(xùn)練過(guò)程中,只有觀(guān)測(cè)和隱藏單元之間連接會(huì)被改變。
極限學(xué)習(xí)機(jī)(ELM)
極限學(xué)習(xí)機(jī)(ELM:Extreme learning machines)本質(zhì)上是擁有隨機(jī)連接的FFNN。
它們與LSM、ESN極為相似,除了循環(huán)特征和脈沖性質(zhì),它們還不使用反向傳播。相反,它們先給權(quán)重設(shè)定隨機(jī)值,然后根據(jù)最小二乘法擬合來(lái)一次性訓(xùn)練權(quán)重(在所有函數(shù)中誤差最小)。這使ELM的函數(shù)擬合能力較弱,但其運(yùn)行速度比反向傳播快多了。
液態(tài)機(jī)(LSM)
液態(tài)機(jī)(LSM:Liquid state machines)換湯不換藥,跟ESN同樣相近。
區(qū)別在于,LSM是一種脈沖神經(jīng)網(wǎng)絡(luò)(spiking neural networks),用閾值激活函數(shù)(threshold functions)取代了sigmoid激活函數(shù),每個(gè)神經(jīng)元同時(shí)也是具有累加性質(zhì)的記憶單元。因此,當(dāng)神經(jīng)元狀態(tài)更新時(shí),其值不是相鄰神經(jīng)元的累加值,而是它自身狀態(tài)值的累加。一旦累加到閾值,它就釋放能量至其它神經(jīng)元。這就形成了一種類(lèi)似于脈沖的模式:神經(jīng)元不會(huì)進(jìn)行任何操作,直至到達(dá)閾值的那一刻。
支持向量機(jī)(SVM)
支持向量機(jī)(SVM:Support vector machines)能為分類(lèi)問(wèn)題找出最優(yōu)方案。
傳統(tǒng)意義上,它們只能處理線(xiàn)性可分的數(shù)據(jù);比如找出哪張圖片是加菲貓、哪張是史努比,此外就無(wú)法做其它輸出了。
訓(xùn)練過(guò)程中,SVM可以理解為:先在平面圖表上標(biāo)繪所有數(shù)據(jù)(加菲貓、史努比),然后找出到那條能夠最好區(qū)分這兩類(lèi)數(shù)據(jù)點(diǎn)的線(xiàn)。這條線(xiàn)能把數(shù)據(jù)分為兩部分,線(xiàn)的這邊全是史努比,線(xiàn)的那邊全是加菲貓。而后移動(dòng)并優(yōu)化該直線(xiàn),令兩邊數(shù)據(jù)點(diǎn)到直線(xiàn)的距離最大化。分類(lèi)新的數(shù)據(jù),則將該數(shù)據(jù)點(diǎn)畫(huà)在這個(gè)圖表上,然后察看這個(gè)數(shù)據(jù)點(diǎn)在分隔線(xiàn)的哪一邊(史努比一側(cè),還是加菲貓一側(cè))。
通過(guò)使用核方法,SVM便可用來(lái)分類(lèi)n維空間的數(shù)據(jù)。這就引出了在3維空間中標(biāo)繪數(shù)據(jù)點(diǎn),從而讓SVM可以區(qū)分史努比、加菲貓與西蒙,甚至在更高的維度對(duì)更多卡通人物進(jìn)行分類(lèi)。SVM并不總被視為神經(jīng)網(wǎng)絡(luò)。
Kohonen 網(wǎng)絡(luò)
最后,我們來(lái)介紹一下Kohonen網(wǎng)絡(luò)(KN,也稱(chēng)之為自組織(特征)映射(SOM/SOFM:self organising (feature) map))。
KN利用競(jìng)爭(zhēng)學(xué)習(xí)來(lái)對(duì)數(shù)據(jù)進(jìn)行分類(lèi),不需要監(jiān)督。先給神經(jīng)網(wǎng)絡(luò)一個(gè)輸入,而后它會(huì)評(píng)估哪個(gè)神經(jīng)元最匹配該輸入。然后這個(gè)神經(jīng)元會(huì)繼續(xù)調(diào)整以更好地匹配輸入數(shù)據(jù),同時(shí)帶動(dòng)相鄰的神經(jīng)元。相鄰神經(jīng)元移動(dòng)的距離,取決于它們與最佳匹配單元之間的距離。KN有時(shí)也不被認(rèn)為是神經(jīng)網(wǎng)絡(luò)。