25張圖讓你讀懂神經網絡架構

由於新的神經網絡架構無時無刻不在湧現,想要記錄所有的神經網絡是很困難的事情。要把所有這些縮略語指代的網絡(DCIGN,IiLSTM,DCGAN等)都弄清,一開始估計還無從下手。

下表包含了大部分常用的模型(大部分是神經網絡還有一些其他的模型)。雖然這些架構都是新奇獨特的,但當我開始把它們的結果畫下來的時候,每種架構的底層關係就會清晰。

25張圖讓你讀懂神經網絡架構

顯然這些節點圖並不能顯示各個模型的內部工作過程。例如變分自動編碼器(VAE)和自動編碼器(AE)節點圖看起來一樣,但是二者的訓練過程實際上是完全不同的,訓練後模型的使用場景更加不同。VAE是生成器,用於在樣本中插入噪聲。而 AE 則僅僅是將它們得到的輸入映射到它們“記憶”中最近的訓練樣本!本文不詳細介紹每個不同構架內部如何工作。

雖然大多數縮寫已經被普遍接受,但也會出現一些衝突。例如RNN通常指復發神經網絡,有時也指遞歸神經網絡,甚至在許多地方只是泛指各種復發架構(包括LSTM,GRU甚至雙向變體)。AE也一樣,VAE和DAE等都被簡單的稱為AE。此外,同一個模型的縮寫也會出現後綴N的個數不同的問題。同一個模型可以將其稱為卷積神經網絡也可稱作卷積網絡,對應的縮寫就成了CNN或CN

將本文作為完整的神經網絡列表幾乎是不可能的,因為新的架構一直被髮明,即使新架構發佈了,想要找到他們也是困難的。因此本文可能會為您提供一些對AI世界的見解,但絕對不是所有; 特別是您在這篇文章發表很久之後才看到。

對於上圖中描繪的每個架構,本文做了非常簡短的描述。如果您對某些架構非常熟悉,您可能會發現其中一些有用。

25張圖讓你讀懂神經網絡架構

感知器(P左圖)前饋神經網絡(FF或FFNN右圖)非常直觀,它們將信息從前端輸入,再從後端輸出。神經網絡通常被描述為具有層(輸入,隱藏或輸出層),其中每層由並行的單元組成。通常同一層不具有連接、兩個相鄰層完全連接(每一層的每一個神經元到另一層的每個神經元)。最簡單的實用網絡有兩個輸入單元和一個輸出單元,可用於建立邏輯模型( 用做判斷是否)。通常通過反向傳播方法來訓練FFNN,數據集由配對的輸入和輸出結果組成(這被稱為監督學習)。我們只給它輸入,讓網絡填充輸出。反向傳播的誤差通常是填充輸出和實際輸出之間差異的一些變化(如MSE或僅僅線性差異)。鑑於網絡具有足夠的隱藏神經元,理論上可以總是對輸入和輸出之間的關係建模。實際上它們的應用是很有限的,通常將它們與其他網絡結合形成新的網絡。

25張圖讓你讀懂神經網絡架構

徑向基函數(RBF)網絡就是以徑向基函數作為激活函數的FFNN網絡。但是RBFNN有其區別於FFNN的使用場景(由於發明時間問題大多數具有其他激活功能的FFNN都沒有自己的名字)。

25張圖讓你讀懂神經網絡架構

Hopfield網絡(HN)的每個神經元被連接到其他神經元; 它的結構像一盤完全糾纏的意大利麵板。每個節點在訓練前輸入,然後在訓練期間隱藏並輸出。通過將神經元的值設置為期望的模式來訓練網絡,此後權重不變。一旦訓練了一個或多個模式,網絡將總是會收斂到其中一個學習模式,因為網絡在這個狀態中是穩定的。需要注意的是,HN 不會總是與理想的狀態保持一致。網絡穩定的部分原因在於總的“能量”或“溫度”在訓練過程中逐漸縮小。每個神經元都有一個被激活的閾值,隨溫度發生變化,一旦超過輸入的總合,就會導致神經元變成兩個狀態中的一個(通常是 -1 或 1,有時候是 0 或 1)。更新網絡可以同步進行,也可以依次輪流進行,後者更為常見。當輪流更新網絡時,一個公平的隨機序列會被生成,每個單元會按照規定的次序進行更新。因此,當每個單元都經過更新而且不再發生變化時,你就能判斷出網絡是穩定的(不再收斂)。這些網絡也被稱為聯存儲器,因為它們會收斂到與輸入最相似的狀態;當人類看到半張桌子的時候,我們會想象出桌子的另一半,如果輸入一半噪音、一半桌子,HN 將收斂成一張桌子。

25張圖讓你讀懂神經網絡架構

馬可夫鏈(MC或離散時間馬爾可夫鏈,DTMC)是BM和HN的前身。它可以這樣理解:從我現在的這個節點,我去任何一個鄰居節點的幾率是無記,這意味著你最終選擇的節點完全取決於當前的所處的節點,l與過去所處的節點無關。這雖然不是真正的神經網絡,但類似於神經網絡,並且構成了BM和HNs的理論基礎。就像BM、RBM和HN一樣,MC並不總是被認為是神經網絡。此外,馬爾科夫鏈也並不總是完全連接。

25張圖讓你讀懂神經網絡架構

波爾茲曼機(BM)很像HN,區別在於只有一些神經元被標記為輸入神經元,而其他神經元保持“隱藏”。輸入神經元在完整的網絡更新結束時成為輸出神經元。它以隨機權重開始,並通過反向傳播學習或通過對比分歧(一種馬爾科夫鏈用於確定兩個信息增益之間的梯度)訓練模型。與HN相比,BM的神經元大多具有二元激活模式。由於被MC訓練,BM是隨機網絡。BM的訓練和運行過程與HN非常相似:將輸入神經元設置為某些鉗位值,從而釋放網絡。雖然釋放節點可以獲得任何值,但這樣導致在輸入和隱藏層之間多次反覆。激活由全局閾值控制。這種全局誤差逐漸降的過程導致網絡最終達到平衡。

25張圖讓你讀懂神經網絡架構

限制玻爾茲曼機(RBM)與BM非常相似,也與HN類似。BM和RBM之間的最大區別是,RBM有更好的可用性,因為它受到更多的限制。RBM不會將每個神經元連接到每個其他神經元,但只將每個神經元組連接到每個其他組,因此沒有輸入神經元直接連接到其他輸入神經元,也不會有隱藏層直接連接到隱藏層。RBM可以像FFNN一樣進行訓練,而不是將數據向前傳播然後反向傳播。

25張圖讓你讀懂神經網絡架構

自編碼器(Autoencoders, AE)與前饋神經網絡(FFNN)有點相似。與其說它是一個完全不同的網絡結構,不如說它是前饋神經網絡的不同應用。自編碼器的基本思想是:自動編碼信息(如壓縮,而非加密)。由此,而得名。整個網絡在形狀上像一個漏斗:它的隱藏層單元總是比輸入層和輸出層少。自編碼器總是關於中央層對稱(中央層是一個還是兩個取決於網絡的層數:如果是奇數,關於最中間一層對稱;如果是偶數,關於最中間的兩層對稱)。最小的隱藏層總是處在中央層,這也是信息最壓縮的地方(被稱為網絡的阻塞點)。從輸入層到中央層叫做編碼部分,從中央層到輸出層叫做解碼部分,中央層叫做編碼(code)。可以使用反向傳播算法來訓練自編碼器,將數據輸入網絡,將誤差設置為輸入數據與網絡輸出數據之間的差異。自編碼器的權重也是對稱的,即編碼權重和解碼權重是一樣的。

25張圖讓你讀懂神經網絡架構

稀疏自編碼器(Sparse autoencoders, SAE)在某種程度上與自編碼器相反。不同於我們訓練一個網絡在更低維的空間和結點上去表徵一堆信息,在這裡我們嘗試著在更高維的空間上編碼信息。所以在中央層,網絡不是收斂的,而是擴張的。這種類型的網絡可以用於提取數據集的特徵。如果我們用訓練自編碼器的方法來訓練稀疏自編碼,幾乎在所有的情況下,會得到一個完全無用的恆等網絡(即,輸入什麼,網絡就會輸出什麼,沒有任何轉換或者分解)。為了避免這種情況,在反饋輸入的過程中會加上一個稀疏驅動。這個稀疏驅動可以採用閾值過濾的形式,即只有特定的誤差可以逆傳播並被訓練,其他誤差被視為訓練無關的並被設置為零。某種程度上,這和脈衝神經網絡相似:並非所有的神經元在每個時刻都會被激活(這在生物學上有一定的合理性)

25張圖讓你讀懂神經網絡架構

變分自編碼器(Variational autoencoders, VAE)和自編碼器有相同的網絡結構,但是模型學到的一些其他的東西:輸入樣本的近似概率分佈。這一點和玻爾茲曼機(BM)、受限玻爾茲曼機(RBM)更相似。然而,他們依賴於貝葉斯數學,這涉及到概率推斷和獨立性,以及再參數化(reparametrisation)技巧以獲得不同的表徵。概率推斷和獨立性部分有直觀的意義,但是他們依賴於複雜的數學知識。基本原理如下:將影響考慮進去。如果一件事在一個地方發生,而另一件事在其他地方發生,那麼它們未必是相關的。如果它們不相關,那麼誤差逆傳播的過程中應該考慮這個。這種方法是有用的,因為神經網絡是大型圖(在某種程度上),所以當進入更深的網絡層時,你可以排除一些結點對於其他結點的影響。

25張圖讓你讀懂神經網絡架構

去噪自編碼器(Denoising autoencoders, DAE)是一種自編碼器。在去噪自編碼器中,我們不是輸入原始數據,而是輸入帶噪聲的數據(好比讓圖像更加的顆粒化)。但是我們用和之前一樣的方法計算誤差。所以網絡的輸出是和沒有噪音的原始輸入數據相比較的。這鼓勵網絡不僅僅學習細節,而且學習到更廣的特徵。因為特徵可能隨著噪音而不斷變化,所以一般網絡學習到的特徵通常地錯誤的。

深度信念網絡(Deep belief networks, DBN)是受限玻爾茲曼機或者變分自編碼器的堆疊結構。這些網絡已經被證明是可有效訓練的。其中,每個自編碼器或者玻爾茲曼機只需要學習對之前的網絡進行編碼。這種技術也被稱為貪婪訓練。貪婪是指在下降的過程中只求解局部最優解,這個局部最優解可能並非全局最優解。深度信念網絡能夠通過對比散度(contrastive divergence)或者反向傳播來訓練,並像常規的受限玻爾茲曼機或變分自編碼器那樣,學習將數據表示成概率模型。一旦模型通過無監督學習被訓練或收斂到一個(更)穩定的狀態,它可以被用作生成新數據。如果使用對比散度訓練,它甚至可以對現有數據進行分類,因為神經元被教導尋找不同的特徵。

25張圖讓你讀懂神經網絡架構

卷積神經網絡(Convolutional neural networks, CNN, or Deep convolutional neural networks, DCNN)和大多數其他網絡完全不同。它們主要用於圖像處理,但也可用於其他類型的輸入,如音頻。卷積神經網絡的一個典型應用是:將圖片輸入網絡,網絡將對圖片進行分類。例如,如果你輸入一張貓的圖片,它將輸出“貓”;如果你輸入一張狗的圖片,它將輸出“狗”。卷積神經網絡傾向於使用一個輸入“掃描儀”,而不是一次性解析所有的訓練數據。舉個例子,為了輸入一張200 x 200像素的圖片,你不需要使用一個有40000個結點的輸入層。相反,你只要創建一個掃描層,這個輸入層只有20 x 20個結點,你可以輸入圖片最開始的20 x 20像素(通常從圖片的左上角開始)。一旦你傳遞了這20 x 20像素數據(可能使用它進行了訓練),你又可以輸入下一個20 x 20像素:將“掃描儀”向右移動一個像素。注意,不要移動超過20個像素(或者其他“掃描儀”寬度)。你不是將圖像解剖為20 x 20的塊,而是在一點點移動“掃描儀“。然後,這些輸入數據前饋到卷積層而非普通層。卷積層的結點並不是全連接的。每個結點只和它鄰近的節點(cell)相關聯(多靠近取決於應用實現,但是通常不會超過幾個)。這些卷積層隨著網絡的加深會逐漸收縮,通常卷積層數是輸入的因子。(所以,如果輸入是20,可能接下來的卷積層是10,再接下來是5)。2的冪是經常被使用的,因為它們能夠被整除:32,16,8,4,2,1。除了卷積層,還有特徵池化層。池化是一種過濾細節的方法:最常用的池化技術是最大池化(max pooling)。比如,使用2 x 2像素,取這四個像素中數值最大的那個。為了將卷積神經網絡應用到音頻,逐段輸入剪輯長度的輸入音頻波。卷積神經網絡在真實世界的應用通常會在最後加入一個前饋神經網絡(FFNN)以進一步處理數據,這允許了高度非線性特徵映射。這些網絡被稱為DCNN,但是這些名字和縮寫通常是可以交換使用的。

25張圖讓你讀懂神經網絡架構

反捲積神經網絡(Deconvolutional networks, DN),也叫做逆向圖網絡(inverse graphics networks, IGN)。它是反向卷積神經網絡。想象一下,將一個單詞”貓“輸入神經網絡,並通過比較網絡輸出和真實貓的圖片之間的差異來訓練網絡模型,最終產生一個看上去像貓的圖片。反捲積神經網絡可以像常規的卷積神經網絡一樣結合前饋神經網絡使用,但是這可能涉及到新的名字縮寫。它們可能是深度反捲積神經網絡,但是你可能傾向於:當你在反捲積神經網絡前面或者後面加上前饋神經網絡,它們可能是新的網絡結構而應該取新的名字。值得注意的事,在真實的應用中,你不可能直接把文本輸入網絡,而應該輸入一個二分類向量。如,<0,1>是貓,<1,0>是狗,而<1,1>是貓和狗。在卷積神經網絡中有池化層,在這裡通常被相似的反向操作替代,通常是有偏的插補或者外推(比如,如果池化層使用最大池化,當反向操作時,可以產生其他更低的新數據來填充)

25張圖讓你讀懂神經網絡架構

深度卷積逆向圖網絡(Deep convolutional inverse graphics networks , DCIGN),這個名字具有一定的誤導性,因為事實上它們是變分自編碼器(VAE),只是在編碼器和解碼器中分別有卷積神經網絡(CNN)和反捲積神經網絡(DNN)。這些網絡嘗試在編碼的過程中對“特徵“進行概率建模,這樣一來,你只要用貓和狗的獨照,就能讓網絡學會生成一張貓和狗的合照。同樣的,你可以輸入一張貓的照片,如果貓的旁邊有一隻惱人的鄰居家的狗,你可以讓網絡將狗去掉。實驗顯示,這些網絡也可以用來學習對圖像進行復雜轉換,比如,改變3D物體的光源或者對物體進行旋轉操作。這些網絡通常用反向傳播進行訓練。

25張圖讓你讀懂神經網絡架構

生成式對抗網絡(Generative adversarial networks , GAN)是一種新的網絡。網絡是成對出現的:兩個網絡一起工作。生成式對抗網絡可以由任何兩個網絡構成(儘管通常情況下是前饋神經網絡和卷積神經網絡配對),其中一個網絡負責生成內容,另外一個負責對內容進行判別。判別網絡同時接收訓練數據和生成網絡生成的數據。判別網絡能夠正確地預測數據源,然後被用作生成網絡的誤差部分。這形成了一種對抗:判別器在辨識真實數據和生成數據方面做得越來越好,而生成器努力地生成判別器難以辨識的數據。這種網絡取得了比較好的效果,部分原因是:即使是很複雜的噪音模式最終也是可以預測的,但生成與輸入數據相似的特徵的內容更難辨別。生成式對抗網絡很難訓練,因為你不僅僅要訓練兩個網絡(它們中的任意一個都有自己的問題),而且還要考慮兩個網絡的動態平衡。如果預測或者生成部分變得比另一個好,那麼網絡最終不會收斂。

25張圖讓你讀懂神經網絡架構

循環神經網絡(Recurrent neural networks , RNN)是考慮時間的前饋神經網絡:它們並不是無狀態的;通道與通道之間通過時間存在這一定聯繫。神經元不僅接收來上一層神經網絡的信息,還接收上一通道的信息。這就意味著你輸入神經網絡以及用來訓練網絡的數據的順序很重要:輸入”牛奶“、”餅乾“和輸入”餅乾“、”牛奶“會產生不一樣的結果。循環神經網絡最大的問題是梯度消失(或者梯度爆炸),這取決於使用的激活函數。在這種情況下,隨著時間信息會快速消失,正如隨著前饋神經網絡的深度增加,信息會丟失。直觀上,這並不是一個大問題,因為它們只是權重而非神經元狀態。但是隨著時間,權重已經存儲了過去的信息。如果權重達到了0或者1000000,先前的狀態就變得沒有信息價值了。卷積神經網絡可以應用到很多領域,大部分形式的數據並沒有真正的時間軸(不像聲音、視頻),但是可以表示為序列形式。對於一張圖片或者是一段文本的字符串,可以在每個時間點一次輸入一個像素或者一個字符。所以,依賴於時間的權重能夠用於表示序列前一秒的信息,而不是幾秒前的信息。通常,對於預測未來信息或者補全信息,循環神經網絡是一個好的選擇,比如自動補全功能。

25張圖讓你讀懂神經網絡架構

長短時記憶網絡(Long / short term memory , LSTM)通過引入門結構(gate)和一個明確定義的記憶單元(memory cell)來嘗試克服梯度消失或者梯度爆炸的問題。這一思想大部分是從電路學中獲得的啟發,而不是從生物學。每個神經元有一個記憶單元和是三個門結構:輸入、輸出和忘記。這些門結構的功能是通過禁止或允許信息的流動來保護信息。輸入門結構決定了有多少來自上一層的信息被存儲當前記憶單元。輸出門結構承擔了另一端的工作,決定下一層可以瞭解到多少這一層的信息。忘記門結構初看很奇怪,但是有時候忘記是必要的:

如果網絡正在學習一本書,並開始了新的章節,那麼忘記前一章的一些人物角色是有必要的。

長短時記憶網絡被證明能夠學習複雜的序列,比如:像莎士比亞一樣寫作,或者合成簡單的音樂。值得注意的是,這些門結構中的每一個都對前一個神經元中的記憶單元賦有權重,所以一般需要更多的資源來運行。

25張圖讓你讀懂神經網絡架構

門控循環單元(Gated recurrent units , GRU)是長短時記憶網絡的一種變體。不同之處在於,沒有輸入門、輸出門、忘記門,它只有一個更新門。該更新門確定了從上一個狀態保留多少信息以及有多少來自上一層的信息得以保留。 這個復位門的功能很像LSTM的忘記門,但它的位置略有不同。 它總是發出全部狀態,但是沒有輸出門。 在大多數情況下,它們與LSTM的功能非常相似,最大的區別在於GRU稍快,運行容易(但表達能力更差)。 在實踐中,這些往往會相互抵消,因為當你需要一個更大的網絡來獲得更強的表現力時,往往會抵消性能優勢。在不需要額外表現力的情況下,GRU可能優於LSTM。

25張圖讓你讀懂神經網絡架構

神經圖靈機(Neural Turing machines , NTM)可以被理解為LSTM的抽象,它試圖去黑箱化(使我們能夠洞察到發生了什麼)。神經圖靈機並非直接編碼記憶單元到神經元中,它的記憶單元是分離的。它試圖將常規數字存儲的效率和永久性以及神經網絡的效率和表達力結合起來。這種想法基於有一個內容尋址的記憶庫,神經網絡可以從中讀寫。神經圖靈機中的”圖靈“(Turing)來自於圖靈完備(Turing complete):基於它所讀取的內容讀、寫和改變狀態的能力,這意味著它能表達一個通用圖靈機可表達的一切事情。

雙向循環神經網絡、雙向長短時記憶網絡、雙向門控循環單元(Bidirectional recurrent neural networks, BiRNN; bidirectional long / short term memory networks, BiLSTM; bidirectional gated recurrent units, BiGRU)在表中沒有展示出來,因為它們看起來和相應的單向網絡是一樣的。不同之處在於這些網絡不僅聯繫過去,還與未來相關聯。比如,單向長短時記憶網絡被用來預測單詞”fish“的訓練過程是這樣的:逐個字母地輸入單詞“fish”, 在這裡循環連接隨時間記住最後的值。而雙向長短時記憶網絡為了提供未來的信息,會在反向通道中會輸入下一個字母。這種方法訓練網絡以填補空白而非預測未來信息,比如,在圖像處理中,它並非擴展圖像的邊界,而是可以填補一張圖片中的缺失。

25張圖讓你讀懂神經網絡架構

深度殘差網絡(Deep residual networks , DRN)是具有非常深度的前饋神經網絡,除了鄰近層之間有連接,它可以將輸入從一層傳到後面幾層(通常是2到5層)。深度殘差網絡並非將一些輸入(比如通過一個5層網絡)映射到輸出,而是學習將一些輸入映射到一些輸出+輸入上。基本上,它增加了一個恆等函數,將舊的輸入作為後面層的新輸入。結果顯示,當達到150 層,這些網絡對於模式學習是非常有效的,這要比常規的2到5層多得多。然而,有結果證明這些網絡本質上是沒有基於具體時間建造的循環神經網絡(RNN),它們總是與沒有門結構的長短時記憶網絡(LSTM)作比較。

25張圖讓你讀懂神經網絡架構

回聲狀態網絡(Echo state networks , ESN)是另外一種不同類型的(循環)網絡。它的不同之處在於:神經元之間隨機地連接(即,層與層之間沒有統一的連接形式),而它們的訓練方式也不一樣。不同於輸入數據,然後反向傳播誤差,回聲狀態網絡先輸入數據,前饋,然後暫時更新神經元。它的輸入層和輸出層在這裡扮演了稍微不同於常規的角色:輸入層用來主導網絡,輸出層作為隨時間展開的激活模式的觀測。在訓練過程中,只有觀測和隱藏單元之間連接會被改變。

25張圖讓你讀懂神經網絡架構

極限學習機(Extreme learning machines , ELM)本質上是有隨機連接的前饋神經網絡。他看上去和液體狀態機(LSM)和回聲狀態網絡(ESN)很相似,但是它即沒有脈衝,也沒有循環。它們並不使用反向傳播。相反,它們隨機初始化權重,並通過最小二乘擬合一步訓練權重(所有函數中的最小誤差)。這使得模型具有稍弱的表現力,但是在速度上比反向傳播快很多。

25張圖讓你讀懂神經網絡架構

液體狀態機(Liquid state machines ,LSM)看上去和回聲狀態網絡(ESN)很像。真正的不同之處在於,液體狀態機是一種脈衝神經網絡:sigmoid激活函數被閾值函數所取代,每個神經元是一個累積記憶單元(memory cell)。所以當更新神經元的時候,其值不是鄰近神經元的累加,而是它自身的累加。一旦達到閾值,它會將其能量傳遞到其他神經元。這就產生一種類似脈衝的模式:在突然達到閾值之前什麼也不會發生。

25張圖讓你讀懂神經網絡架構

支持向量機(Support vector machines , SVM)發現了分類問題的最佳解決方式。傳統的SVM一般是處理線性可分數據。比如,發現哪張圖片是加菲貓,哪張圖片是史努比,而不可能是其他結果。在訓練過程中,支持向量機可以想象成在(二維)圖上畫出所有的數據點(加菲貓和史努比),然後找出如何畫一條直線將這些數據點區分開來。這條直線將數據分成兩部分,所有加菲貓在直線的一邊,而史努比在另一邊。最佳的分割直線是,兩邊的點和直線之間的間隔最大化。當需要將新的數據分類時,我們將在圖上畫出這個新數據點,然後簡單地看它屬於直線的那一邊。使用核技巧,它們可以被訓練用來分類n維數據。這需要在3D圖上畫出點,然後可以區分史努比、加菲貓和西蒙貓,甚至更多的卡通形象。支持向量機並不總是被視為神經網絡。

25張圖讓你讀懂神經網絡架構

Kohonen網絡(Kohonen networks , KN; 也被稱為自組織(特徵)映射, SOM, SOFM))利用競爭性學習對數據進行分類,無需監督。 將數據輸入網絡,之後網絡評估其中哪個神經元最匹配那個輸入。 然後調整這些神經元以使更好地匹配輸入。在該過程中移動相鄰神經元。 相鄰神經元被移動多少取決於它們到最佳匹配單位的距離。 有時候,Kohonen網絡也不被認為是神經網絡。


分享到:


相關文章: