大數(shù)據(jù)文摘作品
編譯:田奧leo、桑桑、璐、Aileen
27種?!神經(jīng)網(wǎng)絡(luò)竟有那么多種?這篇文章將逐一介紹下面這張圖片中的27種神經(jīng)網(wǎng)絡(luò)類型,并嘗試解釋如何使用它們。準(zhǔn)備好了嗎?讓我們開始吧!
神經(jīng)網(wǎng)絡(luò)的種類越來越多,可以說是在呈指數(shù)級地增長。我們需要一個一目了然的圖表,在這些新出現(xiàn)的網(wǎng)絡(luò)構(gòu)架和方法之間進(jìn)行導(dǎo)航。
幸運的是,來自Asimov研究所的Fjodor van Veen編寫了一個關(guān)于神經(jīng)網(wǎng)絡(luò)的精彩圖表(就是上面那張大圖)。
下面,我們就來逐一看看圖中的27種神經(jīng)網(wǎng)絡(luò):
Perceptron 感知機
Perceptron 感知機,我們知道的最簡單和最古老的神經(jīng)元模型。接收一些輸入,把它們加總,通過激活函數(shù)并傳遞到輸出層。這沒什么神奇的地方。
前饋神經(jīng)網(wǎng)絡(luò)(FF)
前饋神經(jīng)網(wǎng)絡(luò)(FF),這也是一個很古老的方法——這種方法起源于50年代。它的工作原理通常遵循以下規(guī)則:
1.所有節(jié)點都完全連接
2.激活從輸入層流向輸出,無回環(huán)
3.輸入和輸出之間有一層(隱含層)
在大多數(shù)情況下,這種類型的網(wǎng)絡(luò)使用反向傳播方法進(jìn)行訓(xùn)練。
RBF 神經(jīng)網(wǎng)絡(luò)
RBF 神經(jīng)網(wǎng)絡(luò)實際上是激活函數(shù)是徑向基函數(shù)而非邏輯函數(shù)的FF前饋神經(jīng)網(wǎng)絡(luò)(FF)。兩者之間有什么區(qū)別呢?
邏輯函數(shù)將某個任意值映射到[0 ,... 1]范圍內(nèi)來,回答“是或否”問題。適用于分類決策系統(tǒng),但不適用于連續(xù)變量。
相反,徑向基函數(shù)能顯示“我們距離目標(biāo)有多遠(yuǎn)”。 這完美適用于函數(shù)逼近和機器控制(例如作為PID控制器的替代)。
簡而言之,這些只是具有不同激活函數(shù)和應(yīng)用方向的前饋網(wǎng)絡(luò)。
DFF深度前饋神經(jīng)網(wǎng)絡(luò)
DFF深度前饋神經(jīng)網(wǎng)絡(luò)在90年代初期開啟了深度學(xué)習(xí)的潘多拉盒子。這些依然是前饋神經(jīng)網(wǎng)絡(luò),但有不止一個隱含層。那么,它到底有什么特殊性?
在訓(xùn)練傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)時,我們只向上一層傳遞了少量的誤差信息。由于堆疊更多的層次導(dǎo)致訓(xùn)練時間的指數(shù)增長,使得深度前饋神經(jīng)網(wǎng)絡(luò)非常不實用。直到00年代初,我們開發(fā)了一系列有效的訓(xùn)練深度前饋神經(jīng)網(wǎng)絡(luò)的方法; 現(xiàn)在它們構(gòu)成了現(xiàn)代機器學(xué)習(xí)系統(tǒng)的核心,能實現(xiàn)前饋神經(jīng)網(wǎng)絡(luò)的功能,但效果遠(yuǎn)高于此。
RNN遞歸神經(jīng)網(wǎng)絡(luò)
RNN遞歸神經(jīng)網(wǎng)絡(luò)引入不同類型的神經(jīng)元——遞歸神經(jīng)元。這種類型的第一個網(wǎng)絡(luò)被稱為約旦網(wǎng)絡(luò)(Jordan Network),在網(wǎng)絡(luò)中每個隱含神經(jīng)元會收到它自己的在固定延遲(一次或多次迭代)后的輸出。除此之外,它與普通的模糊神經(jīng)網(wǎng)絡(luò)非常相似。
當(dāng)然,它有許多變化 — 如傳遞狀態(tài)到輸入節(jié)點,可變延遲等,但主要思想保持不變。這種類型的神經(jīng)網(wǎng)絡(luò)主要被使用在上下文很重要的時候——即過去的迭代結(jié)果和樣本產(chǎn)生的決策會對當(dāng)前產(chǎn)生影響。最常見的上下文的例子是文本——一個單詞只能在前面的單詞或句子的上下文中進(jìn)行分析。
LSTM長短時記憶網(wǎng)絡(luò)
LSTM長短時記憶網(wǎng)絡(luò)引入了一個存儲單元,一個特殊的單元,當(dāng)數(shù)據(jù)有時間間隔(或滯后)時可以處理數(shù)據(jù)。遞歸神經(jīng)網(wǎng)絡(luò)可以通過“記住”前十個詞來處理文本,LSTM長短時記憶網(wǎng)絡(luò)可以通過“記住”許多幀之前發(fā)生的事情處理視頻幀。 LSTM網(wǎng)絡(luò)也廣泛用于寫作和語音識別。
存儲單元實際上由一些元素組成,稱為門,它們是遞歸性的,并控制信息如何被記住和遺忘。下圖很好的解釋了LSTM的結(jié)構(gòu):
上圖的(x)是門,他們擁有自己的權(quán)重,有時也有激活函數(shù)。在每個樣本上,他們決定是否傳遞數(shù)據(jù),擦除記憶等等 - 你可以在這里(http://colah.github.io/posts/2015-08-Understanding-LSTMs/)閱讀更詳細(xì)的解釋。 輸入門(Input Gate)決定上一個樣本有多少的信息將保存在內(nèi)存中; 輸出門調(diào)節(jié)傳輸?shù)较乱粚拥臄?shù)據(jù)量,遺忘門(Forget Gate)控制存儲記憶的損失率。
然而,這是LSTM單元的一個非常簡單的實現(xiàn),還有許多其他架構(gòu)存在。
GRU
GRU是具有不同門的LSTM。
聽起來很簡單,但缺少輸出門可以更容易基于具體輸入重復(fù)多次相同的輸出,目前此模型在聲音(音樂)和語音合成中使用得最多。
實際上的組合雖然有點不同:但是所有的LSTM門都被組合成所謂的更新門(Update Gate),并且復(fù)位門(Reset Gate)與輸入密切相關(guān)。
它們比LSTM消耗資源少,但幾乎有相同的效果。
Autoencoders自動編碼器
Autoencoders自動編碼器用于分類,聚類和特征壓縮。
當(dāng)您訓(xùn)練前饋(FF)神經(jīng)網(wǎng)絡(luò)進(jìn)行分類時,您主要必須在Y類別中提供X個示例,并且期望Y個輸出單元格中的一個被激活。 這被稱為“監(jiān)督學(xué)習(xí)”。
另一方面,自動編碼器可以在沒有監(jiān)督的情況下進(jìn)行訓(xùn)練。它們的結(jié)構(gòu) - 當(dāng)隱藏單元數(shù)量小于輸入單元數(shù)量(并且輸出單元數(shù)量等于輸入單元數(shù))時,并且當(dāng)自動編碼器被訓(xùn)練時輸出盡可能接近輸入的方式,強制自動編碼器泛化數(shù)據(jù)并搜索常見模式。
變分自編碼器
變分自編碼器,與一般自編碼器相比,它壓縮的是概率,而不是特征。
盡管如此簡單的改變,但是一般自編碼器只能回答當(dāng)“我們?nèi)绾螝w納數(shù)據(jù)?”的問題時,變分自編碼器回答了“兩件事情之間的聯(lián)系有多強大?我們應(yīng)該在兩件事情之間分配誤差還是它們完全獨立的?”的問題。
在這里(https://github.com/kvfrans/variational-autoencoder)可以看到一些更深入的解釋(含代碼示例)。
降噪自動編碼器(DAE)
雖然自動編碼器很酷,但它們有時找不到最魯棒的特征,而只是適應(yīng)輸入數(shù)據(jù)(實際上是過擬合的一個例子)。
降噪自動編碼器(DAE)在輸入單元上增加了一些噪聲 - 通過隨機位來改變數(shù)據(jù),隨機切換輸入中的位,等等。通過這樣做,一個強制降噪自動編碼器從一個有點嘈雜的輸入重構(gòu)輸出,使其更加通用,強制選擇更常見的特征。
稀疏自編碼器(SAE)
稀疏自編碼器(SAE)是另外一個有時候可以抽離出數(shù)據(jù)中一些隱藏分組樣試的自動編碼的形式。結(jié)構(gòu)和AE是一樣的,但隱藏單元的數(shù)量大于輸入或輸出單元的數(shù)量。
馬爾可夫鏈(Markov Chain, MC)
馬爾可夫鏈(Markov Chain, MC)是一個比較老的圖表概念了,它的每一個端點都存在一種可能性。過去,我們用它來搭建像“在單詞hello之后有0.0053%的概率會出現(xiàn)dear,有0.03551%的概率出現(xiàn)you”這樣的文本結(jié)構(gòu)。
這些馬爾科夫鏈并不是典型的神經(jīng)網(wǎng)絡(luò),它可以被用作基于概率的分類(像貝葉斯過濾),用于聚類(對某些類別而言),也被用作有限狀態(tài)機。
霍普菲爾網(wǎng)絡(luò)(HN)
霍普菲爾網(wǎng)絡(luò)(HN)對一套有限的樣本進(jìn)行訓(xùn)練,所以它們用相同的樣本對已知樣本作出反應(yīng)。
在訓(xùn)練前,每一個樣本都作為輸入樣本,在訓(xùn)練之中作為隱藏樣本,使用過之后被用作輸出樣本。
在HN試著重構(gòu)受訓(xùn)樣本的時候,他們可以用于給輸入值降噪和修復(fù)輸入。如果給出一半圖片或數(shù)列用來學(xué)習(xí),它們可以反饋全部樣本。
波爾滋曼機(BM)
波爾滋曼機(BM)和HN非常相像,有些單元被標(biāo)記為輸入同時也是隱藏單元。在隱藏單元更新其狀態(tài)時,輸入單元就變成了輸出單元。(在訓(xùn)練時,BM和HN一個一個的更新單元,而非并行)。
這是第一個成功保留模擬退火方法的網(wǎng)絡(luò)拓?fù)洹?/span>
多層疊的波爾滋曼機可以用于所謂的深度信念網(wǎng)絡(luò)(等一下會介紹),深度信念網(wǎng)絡(luò)可以用作特征檢測和抽取。
限制型波爾滋曼機(RBM)
在結(jié)構(gòu)上,限制型波爾滋曼機(RBM)和BM很相似,但由于受限RBM被允許像FF一樣用反向傳播來訓(xùn)練(唯一的不同的是在反向傳播經(jīng)過數(shù)據(jù)之前RBM會經(jīng)過一次輸入層)。
深度信念網(wǎng)絡(luò)(DBN)
像之前提到的那樣,深度信念網(wǎng)絡(luò)(DBN)實際上是許多波爾滋曼機(被VAE包圍)。他們能被連在一起(在一個神經(jīng)網(wǎng)絡(luò)訓(xùn)練另一個的時候),并且可以用已經(jīng)學(xué)習(xí)過的樣式來生成數(shù)據(jù)。
深度卷積網(wǎng)絡(luò)(DCN)
當(dāng)今,深度卷積網(wǎng)絡(luò)(DCN)是人工神經(jīng)網(wǎng)絡(luò)之星。它具有卷積單元(或者池化層)和內(nèi)核,每一種都用以不同目的。
卷積核事實上用來處理輸入的數(shù)據(jù),池化層是用來簡化它們(大多數(shù)情況是用非線性方程,比如max),來減少不必要的特征。
他們通常被用來做圖像識別,它們在圖片的一小部分上運行(大約20x20像素)。輸入窗口一個像素一個像素的沿著圖像滑動。然后數(shù)據(jù)流向卷積層,卷積層形成一個漏斗(壓縮被識別的特征)。從圖像識別來講,第一層識別梯度,第二層識別線,第三層識別形狀,以此類推,直到特定的物體那一級。DFF通常被接在卷積層的末端方便未來的數(shù)據(jù)處理。
去卷積網(wǎng)絡(luò)(DN)
去卷積網(wǎng)絡(luò)(DN)是將DCN顛倒過來。DN能在獲取貓的圖片之后生成像(狗:0,蜥蜴:0,馬:0,貓:1)一樣的向量。DNC能在得到這個向量之后,能畫出一只貓。
深度卷積反轉(zhuǎn)圖像網(wǎng)絡(luò)(DCIGN)
深度卷積反轉(zhuǎn)圖像網(wǎng)絡(luò)(DCIGN),長得像DCN和DN粘在一起,但也不完全是這樣。
事實上,它是一個自動編碼器,DCN和DN并不是作為兩個分開的網(wǎng)絡(luò),而是承載網(wǎng)路輸入和輸出的間隔區(qū)。大多數(shù)這種神經(jīng)網(wǎng)絡(luò)可以被用作圖像處理,并且可以處理他們以前沒有被訓(xùn)練過的圖像。由于其抽象化的水平很高,這些網(wǎng)絡(luò)可以用于將某個事物從一張圖片中移除,重畫,或者像大名鼎鼎的CycleGAN一樣將一匹馬換成一個斑馬。
生成對抗網(wǎng)絡(luò)(GAN)
生成對抗網(wǎng)絡(luò)(GAN)代表了有生成器和分辨器組成的雙網(wǎng)絡(luò)大家族。它們一直在相互傷害——生成器試著生成一些數(shù)據(jù),而分辨器接收樣本數(shù)據(jù)后試著分辨出哪些是樣本,哪些是生成的。只要你能夠保持兩種神經(jīng)網(wǎng)絡(luò)訓(xùn)練之間的平衡,在不斷的進(jìn)化中,這種神經(jīng)網(wǎng)絡(luò)可以生成實際圖像。
液體狀態(tài)機(LSM)
液體狀態(tài)機(LSM)是一種稀疏的,激活函數(shù)被閾值代替了的(并不是全部相連的)神經(jīng)網(wǎng)絡(luò)。只有達(dá)到閾值的時候,單元格從連續(xù)的樣本和釋放出來的輸出中積累價值信息,并再次將內(nèi)部的副本設(shè)為零。
這種想法來自于人腦,這些神經(jīng)網(wǎng)絡(luò)被廣泛的應(yīng)用于計算機視覺,語音識別系統(tǒng),但目前還沒有重大突破。
極端學(xué)習(xí)機(ELM)
極端學(xué)習(xí)機(ELM)是通過產(chǎn)生稀疏的隨機連接的隱藏層來減少FF網(wǎng)絡(luò)背后的復(fù)雜性。它們需要用到更少計算機的能量,實際的效率很大程度上取決于任務(wù)和數(shù)據(jù)。
回聲狀態(tài)網(wǎng)絡(luò)(ESN)
回聲狀態(tài)網(wǎng)絡(luò)(ESN)是重復(fù)網(wǎng)絡(luò)的細(xì)分種類。數(shù)據(jù)會經(jīng)過輸入端,如果被監(jiān)測到進(jìn)行了多次迭代(請允許重復(fù)網(wǎng)路的特征亂入一下),只有在隱藏層之間的權(quán)重會在此之后更新。
據(jù)我所知,除了多個理論基準(zhǔn)之外,我不知道這種類型的有什么實際應(yīng)用。歡迎留下你的不同意見~
深度殘差網(wǎng)絡(luò)(DRN)
深度殘差網(wǎng)絡(luò)(DRN)是有些輸入值的部分會傳遞到下一層。這一特點可以讓它可以做到很深的層級(達(dá)到300層),但事實上它們是一種沒有明確延時的RNN。
Kohonen神經(jīng)網(wǎng)絡(luò)(KN)
Kohonen神經(jīng)網(wǎng)絡(luò)(KN)引入了“單元格距離”的特征。大多數(shù)情況下用于分類,這種網(wǎng)絡(luò)試著調(diào)整它們的單元格使其對某種特定的輸入作出最可能的反應(yīng)。當(dāng)一些單元格更新了, 離他們最近的單元格也會更新。
像SVM一樣,這些網(wǎng)絡(luò)總被認(rèn)為不是“真正”的神經(jīng)網(wǎng)絡(luò)。
支持向量機(SVM)
支持向量機(SVM)用于二元分類工作,無論這個網(wǎng)絡(luò)處理多少維度或輸入,結(jié)果都會是“是”或“否”。
SVM不是所有情況下都被叫做神經(jīng)網(wǎng)絡(luò)。
神經(jīng)圖靈機(NTM)
神經(jīng)網(wǎng)絡(luò)像是黑箱——我們可以訓(xùn)練它們,得到結(jié)果,增強它們,但實際的決定路徑大多數(shù)我們都是不可見的。
神經(jīng)圖靈機(NTM)就是在嘗試解決這個問題——它是一個提取出記憶單元之后的FF。一些作者也說它是一個抽象版的LSTM。
記憶是被內(nèi)容編址的,這個網(wǎng)絡(luò)可以基于現(xiàn)狀讀取記憶,編寫記憶,也代表了圖靈完備神經(jīng)網(wǎng)絡(luò)。
聯(lián)系客服