神經網絡

隨着新的神經網絡架構不時出現,很難跟蹤這些架構。知道全部縮寫(DCIGN,BiLSTM,DCGAN,任何人?)起初可能有點壓倒性。網絡

因此我決定編寫一個包含許多這些體系結構的備忘單。這些大多數是神經網絡,有些是徹底不一樣的野獸。雖然全部這些體系結構都是新穎而獨特的,可是當我繪製節點結構時......它們的基礎關係開始變得更有意義。架構

神經網絡函數

將它們繪製爲節點映射時存在一個問題:它並不真正顯示它們是如何使用的。例如,變分自動編碼器(VAE)看起來就像自動編碼器(AE),可是訓練過程實際上徹底不一樣。受過訓練的網絡的用例差別更大,由於VAE是生成器,您能夠在其中插入噪聲來獲取新樣本。AE,只需將他們獲得的任何輸入映射到他們「記得」的最接近的訓練樣本。我應該補充一點,這個概述並無說明每種不一樣的節點類型如何在內部工做(但這是另外一天的話題)。oop

應該指出的是,雖然大部分縮寫都是廣泛接受的,但並不是所有都是。RNN有時指的是遞歸神經網絡,但大多數時候他們指的是遞歸神經網絡。儘管如此,在許多地方,你會發現RNN用做任何常常性架構的佔位符,包括LSTM,GRU甚至雙向變體。AE不時遇到相似問題,其中VAE和DAE等簡稱爲AE。許多縮寫在最後添加的「N」數量上也不相同,由於您能夠將其稱爲卷積神經網絡,但也僅僅是卷積網絡(致使CNN或CN)。學習

隨着新體系結構的不斷髮明,編寫完整列表幾乎是不可能的。即便發佈它,即便你正在尋找它們,仍然會很難找到它們,或者有時候你會忽略一些。所以,儘管這份名單可能會讓你對AI的世界有所瞭解,但請絕對不要把這份名單列爲全面的; 特別是若是你在寫這篇文章後很長時間閱讀這篇文章。編碼

對於圖中描繪的每一個架構,我都寫了一個很是很是簡短的描述。若是您對某些體系結構很是熟悉,可是您對特定體系結構不熟悉,則可能會發現其中的一些功能很是有用。加密

前饋神經網絡(FF或FFNN)和感知器(P)很是直截了當,它們將信息從前面輸入到後面(分別是輸入和輸出)。神經網絡一般被描述爲具備層,其中每一個層由輸入,隱藏或輸出單元並行組成。一層獨自歷來沒有鏈接,而且一般兩個相鄰的層徹底鏈接(每一個神經元造成一層到每一個神經元到另外一層)。最簡單的實用網絡有兩個輸入單元和一個輸出單元,可用於建模邏輯門。人們一般經過反向傳播來訓練FFNN,給出網絡配對的「進入的內容」和「咱們想要出來的內容」的數據集。這就是所謂的監督學習,相對於無監督學習,咱們只給它輸入並讓網絡填充空白。反向傳播的偏差一般是輸入和輸出之間差別的一些變化(如MSE或線性差別)。鑑於網絡具備足夠的隱藏的神經元,它在理論上能夠始終模擬輸入和輸出之間的關係。實際上,它們的使用受到不少限制,但它們廣泛與其餘網絡結合造成新的網絡。視頻

徑向基函數(RBF)網絡是具備徑向基函數做爲激活函數的FFNN。沒有什麼更多。這並不意味着他們沒有他們的用途,可是大多數具備其餘激活功能的FFNN並無獲得他們本身的名字。這主要與在正確的時間發明它們有關。對象

甲的Hopfield網絡(HN)是每一個神經元都與其餘神經元相連的網絡; 它是一個徹底糾結的意大利麪板,即便全部的節點都起着一切做用。每一個節點在訓練以前輸入,而後在訓練期間隱藏並在以後輸出。經過將神經元的值設置爲但願的模式來訓練網絡,以後能夠計算權重。此後重量不會改變。一旦接受過一種或多種模式的訓練,網絡就會始終聚合到其中一種學習模式,由於網絡在這些狀態中僅保持穩定。請注意,它並不老是符合所需的狀態(這不是一個可悲的難以想象的黑盒子)。它的穩定部分歸因於訓練期間網絡的總「能量」或「溫度」逐漸減小。每一個神經元都有一個能夠調節到這個溫度的激活閾值,若是超過輸入的總和,神經元會採起兩種狀態之一(一般爲-1或1,有時爲0或1)。更新網絡能夠同步完成,也能夠逐個完成。若是逐一更新,則建立一個公平的隨機序列來組織哪些細胞以什麼順序更新(公平隨機是全部選項(n)每n項發生一次)。這樣你就能夠知道網絡何時穩定(完成收斂),一旦每一個單元已經更新而且沒有更改,網絡就會穩定(退火)。這些網絡一般被稱爲聯想記憶,由於它收斂到與輸入最類似的狀態; 若是人類看到一半的桌子,咱們能夠對另外一半進行成像,但若是有半噪音和半桌子,這個網絡將會聚合到一張桌子上。遞歸

馬爾可夫鏈(MC或離散時間馬爾可夫鏈,DTMC)是BM和HN的前身。他們能夠理解以下:從我如今的這個節點來看,我有多大的機會去個人鄰居節點?它們是無記憶的(即馬爾科夫屬性),這意味着你最終進入的每一個狀態徹底取決於之前的狀態。雖然不是一個真正的神經網絡,但它們確實與神經網絡類似,並構成了BM和HN的理論基礎。MC並不老是被認爲是神經網絡,就像BM,RBM和HN同樣。馬爾可夫鏈並不老是徹底鏈接。

玻爾茲曼機器(BM)與HN很類似,可是:一些神經元被標記爲輸入神經元,而其餘神經元則被「隱藏」。輸入神經元在完整網絡更新結束時變成輸出神經元。它從隨機權重開始,經過反向傳播學習,或者最近經過對比發散學習(馬爾可夫鏈被用來肯定兩個信息增益之間的梯度)。與HN相比,神經元大多具備二元激活模式。正如MC被訓練所暗示的那樣,BM是隨機網絡。BM的訓練和運行過程與HN很是類似:將輸入神經元設置爲特定的鉗位值,以後網絡被釋放(它不會得到襪子)。雖然釋放細胞能夠得到任何價值,咱們反覆在輸入和隱藏的神經元之間來回。激活由全局溫度值控制,若是下降則下降電池的能量。這種較低的能量致使其激活模式穩定。考慮到正確的溫度,網絡達到平衡。

受限玻爾茲曼機器(RBM)與BM(驚喜)很是相​​似,所以也與HN相似。管理層和管理層之間最大的區別是,管理層管理是一種更好的可用方式,由於它們更受限制。它們不會觸發 - 將每一個神經元鏈接到每一個其餘神經元,但只將每一個不一樣組的神經元鏈接到每一個其餘組,所以沒有輸入神經元直接鏈接到其餘輸入神經元,也沒有隱藏到隱藏鏈接。RBM能夠像扭曲同樣被FFNNs訓練:不是向前傳遞數據而後向後傳播,而是向前傳遞數據,而後向後傳遞數據(返回到第一層)。以後,您將訓練先後傳播。

自動編碼器(AE)有點相似於FFNN,由於AE更像是FFNN的不一樣用途,而不是根本不一樣的架構。自動編碼器的基本思想是自動編碼信息(如壓縮,不加密),所以名稱。整個網絡老是相似於沙漏形狀,隱藏層比輸入和輸出層小。AE也老是在中間層周圍是對稱的(一個或兩個取決於偶數層或奇數層)。最小的層幾乎老是在中間,信息被壓縮得最多的地方(網絡的阻塞點)。到中間的全部東西都被稱爲編碼部分,解碼和中間(驚喜)代碼以後的全部東西都被稱爲編碼部分。人們能夠經過反饋傳播訓練他們,經過餵養輸入並將錯誤設置爲輸入和輸出之間的差別。當涉及權重時,AE也能夠對稱地構建,所以編碼權重與解碼權重相同。

稀疏自動編碼器(SAE)與AE相反。咱們試圖在更多的空間中對信息進行編碼,而不是經過教授網絡來表明一堆信息在更少的「空間」或節點中。所以,不是網絡在中間收斂,而是擴大到輸入大小,咱們炸掉了中間。這些類型的網絡可用於從數據集中提取許多小特徵。若是有人像AE同樣訓練SAE,幾乎在全部狀況下,最終都會有一個很是無用的身份網絡(就像出現的那樣,沒有任何轉換或分解)。爲了防止這種狀況,咱們不是反饋輸入,而是反饋輸入加稀疏驅動程序。這個稀疏驅動程序能夠採用閾值過濾器的形式,其中只有特定的錯誤被傳回並訓練,另外一個錯誤將是「可有可無」,並設置爲零。在某種程度上,這相似於峯值神經網絡,並非全部的神經元始終都在發射(而且點的生物合理性得分)。

變分自編碼器(VAE)具備與AE相同的體系結構,可是「教授」了其餘內容:輸入樣本的近似機率分佈。這有點回歸根源,由於它們與BM和RBM更密切相關。然而,他們確實依賴貝葉斯數學有關機率推理和獨立性,以及實現這種不一樣表示的從新參數化技巧。推理和獨立部分直觀地理解,但他們依賴於有些複雜的數學。基本要歸結爲:考慮到影響。若是一件事發生在一個地方,而其餘地方發生了其餘事情,它們不必定是相關的。若是它們不相關,那麼錯誤傳播應該考慮這一點。這是一個有用的方法,由於神經網絡是大圖(某種程度上),

去噪自動編碼器(DAE)是咱們不只僅輸入輸入數據的AE,可是咱們爲輸入數據提供了噪聲(如使圖像更加粗糙)。咱們以相同的方式計算偏差,因此網絡的輸出與沒有噪聲的原始輸入進行比較。這鼓勵網絡不去學習細節,而是學習更普遍的功能,由於學習較小的功能一般會由於噪聲不斷變化而變得「錯誤」。

深度信念網絡(DBN) 是主要針對RBM或VAE的堆疊體系結構的名稱。這些網絡已被證實是有效的可堆疊堆棧,其中每一個AE或RBM只須要學習編碼之前的網絡。這種技術也被稱爲貪婪訓練,其中貪婪意味着使局部最優解獲得一個體面的但可能不是最佳答案。能夠經過對比分歧或反向傳播來訓練DBN,並學習如同常規RBM或VAE同樣將數據表示爲機率模型。一旦經過無監督學習訓練或融合到(更多)穩定狀態,模型可用於生成新數據。若是採用對比分歧進行訓練,它甚至能夠對現有數據進行分類,由於已經教會神經元尋找不一樣的特徵。

卷積神經網絡(CNN或深度卷積神經網絡,DCNN)與大多數其餘網絡徹底不一樣。它們主要用於圖像處理,但也可用於其餘類型的輸入,如音頻。一個典型的用例細胞神經網絡是你養活網絡圖像和網絡分類的數據,例如,若是你給它一個貓的圖片和「狗」,當你給它一個犬的圖像輸出「貓」。CNN傾向於以輸入「掃描儀」開始,該輸入「掃描儀」不是一次性解析全部訓練數據。例如,要輸入200 x 200像素的圖像,您不須要具備40 000個節點的圖層。相反,您建立一個掃描輸入圖層,例如20 x 20,您輸入圖像的前20 x 20像素(一般從左上角開始)。一旦您經過了該輸入(並可能將其用於訓練),您就能夠爲其提供接下來的20 x 20像素:將掃描儀向右移動一個像素。請注意,您不會將輸入的20像素(或任何掃描儀寬度)移動過來,您不會將圖像解剖爲20 x 20的塊,而是您正在爬過它。而後,這個輸入數據經過卷積層而不是普通層傳送,其中並不是全部節點都鏈接到全部節點。每一個節點只關注緊密相鄰的單元(關閉程度取決於實現,但一般不會超過幾個)。這些卷積層也傾向於收縮,由於它們變得更深,主要由輸入的容易整除因子(因此20可能會轉到隨後的5層10的層)。二的冪很是廣泛這裏使用,由於它們能夠經過定義被幹淨和徹底分割:32,16,8,4,2,1。除了這些卷積層,它們也經常設有聚集層。池化是過濾細節的一種方式:常見的池化技術是最大池化,在這裏咱們取2 x 2像素並傳遞最多量的紅色像素。要將CNN應用於音頻,您基本上須要逐段輸入輸入音頻波形和英寸長度。現實世界的CNN實現一般會將FFNN粘貼到最後以進一步處理數據,這容許高度非線性的抽象。這些網絡被稱爲DCNN,但這兩個網絡之間的名稱和縮寫常常互換使用。現實世界的CNN實現一般會將FFNN粘貼到最後以進一步處理數據,這容許高度非線性的抽象。這些網絡被稱爲DCNN,但這兩個網絡之間的名稱和縮寫常常互換使用。現實世界的CNN實現一般會將FFNN粘貼到最後以進一步處理數據,這容許高度非線性的抽象。這些網絡被稱爲DCNN,但這兩個網絡之間的名稱和縮寫常常互換使用。

解卷積網絡(DN),也稱爲反向圖形網絡(IGN),是反捲積神經網絡。想象一下,給網絡喂「貓」這個詞,並經過比較它產生的真實照片與貓一塊兒訓練它來產生相似貓的照片。DNN能夠像常規的CNN同樣與FFNN結合使用,可是這是關於繪製線條以提供新縮寫的點。他們可能被稱爲深層去卷積神經網絡,但你能夠爭辯說,當你將FFNN粘貼到DNN的後面和前面時,你就有了另外一個值得一個新名字的架構。請注意,在大多數應用程序中,實際上不會向網絡輸入相似文本的輸入,更多是二進制分類輸入向量。認爲<0,1>是貓,<1,0>是狗,<1,1>是貓和狗。

深卷積逆向圖形網絡(DCIGN)的名稱有些誤導,由於它們其實是VAE,可是針對各自的編碼器和解碼器使用了CNN和DNN。這些網絡試圖在編碼中將「特徵」建模爲機率,以便它能夠學習與貓和狗一塊兒製做一張圖片,並且只能在兩張圖片中看到其中的一張。一樣,你能夠餵它一張貓的照片,讓你的鄰居的惱人的狗在上面,並要求它把狗取出,而不用作這樣的操做。演示代表,這些網絡還能夠學習如何對圖像進行復雜轉換,例如更改光源或3D對象的旋轉。這些網絡傾向於用反向傳播進行訓練。

生成敵對網絡(GAN)來自不一樣品種的網絡,他們是雙胞胎:兩個網絡一塊兒工做。GAN由任何兩個網絡組成(儘管一般是FF和CNN的組合),其中一個負責生成內容,另外一個負責判斷內容。鑑別網絡接收來自生成網絡的訓練數據或生成的內容。識別網絡如何可以正確預測數據源而後用做生成網絡的錯誤的一部分。這就造成了一種競爭形式,鑑別者在區分實際數據和生成數據方面愈來愈好,而生成者正在學習對鑑別器的預測能力下降。這部分工做的部分緣由是,即便很是複雜的類噪音模式最終可預測,但生成的內容與輸入數據類似的內容更難以區分。GAN可能很難訓練,由於你不只須要訓練兩個網絡(這兩個網絡都會形成它本身的問題),但它們的動態也須要平衡。若是預測或生成與另外一個相比變得更好,GAN將不會收斂,由於存在內在的分歧。

遞歸神經網絡(RNN)是時間扭曲的FFNN:他們不是無國籍的; 他們之間有經過鏈接,經過時間鏈接。神經元的信息不只來自上一層,並且來自前一層的信息。這意味着您輸入飼料和訓練網絡的順序很重要:與餵養「餅乾」和「牛奶」相比,餵養它「牛奶」而後「餅乾」可能會產生不一樣的結果。RNN的一個大問題是消失(或爆炸)梯度問題,根據所使用的激活函數,隨着時間的推移信息會迅速丟失,就像很是深的FFNN深度丟失信息同樣。直觀地說,這不會成爲一個問題,由於這些只是權重而不是神經元狀態,但時間間隔的權重其實是來自過去的信息的存儲位置; 若是重量達到0或1 000 000的值,之前的狀態將不會提供不少信息。RNN原則上能夠用於不少領域,由於大多數形式的數據實際上沒有時間線(即,不一樣於聲音或視頻)能夠表示爲序列。一張圖片或一串文本能夠一次輸入一個像素或字符,所以時間相關的權重用於序列中以前的內容,而不是實際上與以前X秒內發生的內容相關。通常而言,常常性網絡是推動或完成信息的良好選擇,例如自動完成。一張圖片或一串文本能夠一次輸入一個像素或字符,所以時間相關的權重用於序列中以前的內容,而不是實際上與以前X秒內發生的內容相關。通常而言,常常性網絡是推動或完成信息的良好選擇,例如自動完成。一張圖片或一串文本能夠一次輸入一個像素或字符,所以時間相關的權重用於序列中以前的內容,而不是實際上與以前X秒內發生的內容相關。通常而言,常常性網絡是推動或完成信息的良好選擇,例如自動完成。

長期/短時間記憶(LSTM)網絡試圖經過引入門和明肯定義的存儲器單元來對抗消失/爆炸梯度問題。這些靈感主要來自電路,而不是生物學。每一個神經元都有一個存儲單元和三個門:輸入,輸出和忘記。這些門的功能是經過中止或容許信息流來保護信息。輸入門決定了來自上一層的多少信息存儲在單元中。輸出層在另外一端獲取做業,並肯定下一層有多少知道該單元的狀態。忘記門起初看起來像是一個奇怪的包容,但有時候忘記是很好的:若是它正在學習一本書並開始新的一章,那麼網絡可能須要忘記前一章中的一些字符。已經證實LSTM可以學習複雜的序列,例如像莎士比亞的寫做或者創做原始音樂。請注意,這些門中的每個都對前一個神經元中的一個單元具備權重,所以它們一般須要更多資源才能運行。

門控復發單位(GRU)在LSTMs上略有差別。他們有一個門少一些,鏈接方式稍有不一樣:他們有一個更新門,而不是輸入,輸出和忘記門。這個更新門決定了從最後一個狀態開始保留多少信息以及從上一個層開始輸入多少信息。復位門的功能與LSTM的忘記門很是類似,但位置稍有不一樣。他們老是發出完整的狀態,他們沒有輸出門。在大多數狀況下,它們的功能與LSTM很是類似,最大的不一樣之處在於GRU稍快而且更容易運行(但表現力稍差)。在實踐中,這些每每會互相抵消,由於你須要一個更大的網絡來從新得到一些表現力,而後消除表現的好處。

神經圖靈機(NTM) 能夠理解爲LSTM的一種抽象,也是一種嘗試使用非黑箱神經網絡的方法(而且讓咱們瞭解那裏正在發生的事情)。不是直接將存儲器單元編碼到神經元中,而是將存儲器分開。它試圖將常規數字存儲的效率和永久性與神經網絡的效率和表現力結合起來。這個想法是有一個內容尋址存儲庫和一個能夠讀寫的神經網絡。神經圖靈機中的「圖靈」來自它們的圖靈完整性:根據讀取的內容讀取和寫入並改變狀態的能力意味着它能夠表明通用圖靈機能夠表示的任何東西。

雙向遞歸神經網絡,雙向長期/短時間記憶網絡和雙向門控循環單元(分別爲BiRNN,BiLSTM和BiGRU)不會顯示在圖表上,由於它們看起來與單向同行徹底同樣。不一樣之處在於,這些網絡不只與過去相連,並且與將來相連。舉例來講,單向LSTMs可能會被訓練成經過逐字地輸入字母來預測單詞「fish」,其中經過時間的循環鏈接記住最後一個值。一個BiLSTM也將被送入下一個順序中的下一個字母,讓它訪問將來的信息。這訓練網絡來填補空白,而不是推動信息,因此不是在邊緣上展開圖像,而是在圖像的中間填充一個洞。

深度剩餘網絡(DRN)是很是深的FFNN,具備額外的鏈接,將輸入從一個層傳遞到後一層(一般是2到5層)以及下一層。而不是試圖找到一個解決方案來將某些輸入映射到某個輸出,例如5層,網絡就會強制學習將某些輸入映射到某些輸出+某些輸入。基本上,它爲解決方案增長了一個標識,將舊的輸入傳送到新的層次。已經證實,這些網絡在學習深達150層的模式方面很是有效,遠遠超過人們能夠指望訓練的常規2至5層。然而,已經證實,這些網絡本質上只是RNN而沒有明確的基於時間的構造,而且它們一般與沒有門的LSTM相比較。

回聲狀態網絡(ESN)是另外一種不一樣類型的(常常性)網絡。這我的經過神經元之間的隨機鏈接(即沒有組織成整齊的層)來區別於他人,而且他們受到不一樣的訓練。咱們提供輸入,轉發它並更新神經元一段時間,而後觀察隨着時間的推移輸出,而不是餵養輸入和反向傳播錯誤。輸入層和輸出層具備輕微很是規的做用,由於輸入層用於啓動網絡,輸出層充當隨時間展開的激活模式的觀察者。在訓練期間,只有觀察者和隱藏單位(的湯)之間的聯繫被改變。

極限學習機(ELM)基本上是FFNN,但具備隨機鏈接。它們看起來與LSM和ESN很是類似,但它們不是常常性的,也不是尖銳的。他們也不使用反向傳播。相反,他們從隨機權重開始,根據最小二乘法擬合(全部函數的最小偏差),在一個步驟中訓練權重。這致使了一個表達性較差的網絡,但它也比反向傳播快得多。

液態機器(LSM)是相似的湯,看起來很像ESN。真正的區別在於LSMs是一種尖峯神經網絡:乙狀結腸激活被閾值函數替代,每一個神經元也是一個累積的記憶細胞。因此當更新神經元時,該值不會被設置爲鄰居的總和,而是被添加到自身中。一旦達到閾值,它釋放其能量給其餘神經元。這會產生一個像圖案同樣的尖峯,在一段時間內沒有任何事情發生,直到忽然達到閾值。

支持向量機(SVM)找到分類問題的最佳解決方案。一般他們只能對線性可分數據進行分類; 說找出哪些圖像是加菲貓和哪些是史努比,其餘任何結果都不可能。在訓練過程當中,SVM能夠被認爲是將全部數據(Garfields和Snoopys)繪製在圖形上(2D),並計算出如何在數據點之間繪製一條線。這條線將分開數據,以便全部的Snoopys都在一邊,Garfields在另外一邊。這條線以這樣的方式移動到最佳線,使得數據點和線之間的邊緣在兩側最大化。對新數據進行分類能夠經過繪製該圖上的一個點來完成,並簡單地查看該線的哪一側(史努比側或加菲爾德側)。使用內核技巧,能夠教他們對n維數據進行分類。這須要在三維圖中繪製點,以便區分史努比,加菲貓和西蒙的貓,甚至能夠區分更多的卡通角色。SVM並不老是被認爲是神經網絡。