機器學習研究人員需要了解的8個神經網路架構(下)
上文講述了機器學習的功能和神經網路的概念,以及簡要介紹了感知器和卷積神經網路,接下來繼續介紹另外6種神經網路架構。
3.遞歸神經網路
為了理解RNN,我們需要對序列建模進行簡要概述。將機器學習應用於序列時,我們通常希望將輸入序列轉換為位於不同域中的輸出序列; 例如,將一系列聲壓轉換成一系列的單詞。當沒有單獨的目標序列時,我們可以通過嘗試預測輸入序列中的下一項來獲得教學信號。目標輸出序列是提前1步的輸入序列。這似乎比試圖預測來自其他像素的圖像中的一個像素或來自圖像的其餘部分的圖像的一個像素更自然。預測序列中的下一個術語模糊了有監督學習和無監督學習之間的區別。它使用專為監督學習而設計的方法,但它不需要單獨的教學信號。
無記憶模型是完成這項任務的標準方法。具體而言,自回歸模型可以使用延遲打拍的方法從固定數量的前一項中預測下一項,並且前饋神經網路是使用一層或多層非線性隱藏單元的廣義自回歸模型。然而,如果我們給生成模型一些隱藏的狀態,並且如果我們給這個隱藏狀態它自己的內部動態,我們會得到一個更有趣的模型:它可以長時間地將信息存儲在隱藏狀態。如果動態是嘈雜的,它們從隱藏狀態產生輸出的方式是嘈雜的,那麼我們永遠無法知道它的確切隱藏狀態。我們能做的最好的是推斷隱藏狀態矢量空間的概率分布。這種推斷只適用於2種隱藏狀態模型。
遞歸神經網路非常強大,因為它們結合了兩個屬性:1)分散式隱藏狀態,可以讓他們有效地存儲關於過去的大量信息; 2)非線性動態,使他們能夠以複雜的方式更新隱藏狀態。有了足夠的神經元和時間,RNN可以計算任何可以通過計算機計算出來的東西。那麼RNN可以展示什麼樣的行為?它們可以振蕩,它們可以解決點吸引子,它們可以表現混亂。它們還可以學習如何實施許多小程序,每個程序捕獲一塊知識,並行運行,相互作用產生非常複雜的效果。
但是,RNN的計算能力使得它們很難訓練。由於梯度問題的爆發或消失,訓練RNN相當困難。當我們反覆傳播多層時,梯度的大小會發生什麼變化?如果權重較小,則梯度呈指數級下降。如果權重很大,則梯度會成指數增長。典型的前饋神經網路可以應付這些指數效應,因為它們只有少數隱藏層。另一方面,在訓練長序列的RNN中,梯度可能很容易爆炸或消失 即使具有良好的初始權重,也很難檢測到當前目標輸出取決於來自多個時間步長的輸入,因此RNN難以處理遠程依賴性。
基本上有4種有效的方法來學習RNN:
長期的短期記憶:將RNN用於長期記憶值的小模塊。
Hessian自由優化:通過使用奇特的優化器來處理消失的梯度問題,該優化器可以檢測具有微小漸變但曲率更小的方向。
回聲狀態網路:初始化輸入->隱藏和隱藏->隱藏和輸出->非常小心地隱藏連接,使隱藏狀態有一個巨大的弱耦合振蕩器的儲層,可以通過輸入選擇性地驅動這些振蕩器。
良好的動態初始化:像回聲狀態網路一樣初始化,然後使用動量學習所有連接。
4.長期/短期記憶網路
Hochreiter&Schmidhuber(1997)通過建立一種稱為長期的短期記憶網路的方法解決了讓RNN長時間(如數百個時間步驟)記憶事情的問題。他們用具有乘法交互作用的邏輯單元和線性單元設計了一個記憶單元。信息在它的寫入門打開時進入單元格。只要保持門打開,信息就會保留在單元格中。通過打開讀取門可以從單元讀取信息。
閱讀草書手寫是RNN的一項自然任務。輸入是筆尖的(x,y,p)坐標序列,其中p表示筆是向上還是向下。輸出是一系列字元。Graves&Schmidhuber(2009)表明,帶有LSTM的RNN是目前閱讀草書的最佳系統。簡而言之,他們使用一系列小圖像作為輸入而不是筆畫坐標。
5.Hopfield神經網路
非線性單元的遞歸網路通常很難分析。它們可以以許多不同的方式表現:穩定狀態,振蕩,或遵循無法在未來預測的混沌軌跡一個Hopfield網由二進位閾值單元組成,它們之間有連續的連接。1982年,約翰·霍普菲爾德意識到,如果連接是對稱的,那麼就有一個全球能量函數。整個網路的二元構型都有能量;當二進位閾值決策規則使網路滿足最小能量函數時。使用這種計算方法的一個簡潔的方法是將記憶作為神經網路的能量最小值。 使用能量最小值來表示內存給出了內容可定址的內存。一個項目只需知道其內容的一部分即可訪問。它對硬體損壞很有效。
每次我們記憶一次配置,我們都希望創造一個新的能量最小值。 但是,如果兩個附近的最小值在一個中間位置呢?這限制了Hopfield網路的容量。那麼我們如何增加Hopfield網路的容量?物理學家們喜歡這樣一種觀點,即他們已經知道的數學可以解釋大腦是如何工作的。許多論文發表在關於Hopfield網路及其存儲能力的物理期刊上。最終,伊麗莎白加德納發現存在一個更好的存儲規則,可以充分利用權重。她沒有試圖一次性存儲向量,而是多次循環訓練集,並使用感知器收斂過程來訓練每個單元,使其具有正確的狀態,給出該向量中所有其他單元的狀態。統計學家稱這種技術為「偽似然」。
Hopfield網路還有另一個計算角色。 我們不用網路來存儲記憶,而是用它來構建感測輸入的解釋。輸入由可見單位表示,解釋由隱藏單位的狀態表示,並且解釋的缺陷由能量表示。
6.玻爾茲曼機器網路
玻爾茲曼機是一類隨機遞歸神經網路。它可以被看作是Hopfield網路的隨機生成對應物。它是第一個能夠學習內部表示的神經網路之一,能夠代表和解決困難的組合問題。
玻爾茲曼機器學習演算法的學習目標是將Boltzmann機器分配給訓練集中的二進位向量的概率最大化,這等價於Boltzmann機器分配給訓練向量的對數概率之和。如果我們做了以下事情,這也等價於最大化我們可以準確獲得N個訓練案例的概率:1)讓網路在沒有外部輸入的情況下以不同的時間穩定到它的平穩分布; 2)每次採樣一次可見向量。
2012年,Salakhutdinov和Hinton提出了玻爾茲曼機器的高效小批量學習程序。
對於正相位,首先將隱藏概率初始化為0.5,然後將可見單元上的數據向量進行鉗位,然後並行更新所有隱藏單元,直至使用平均場更新進行收斂。在網路收斂之後,記錄PiPj為每一對連接的單元,並將其平均分配給小批量的所有數據。
對於負相:首先要保留一組幻想粒子。每個粒子都有一個全局配置的值。然後依次更新每個幻想粒子的所有單元數。對於每一個連接的單位,平均數SiSj除以所有的幻想粒子。
在普通玻爾茲曼機器中,單位的隨機更新需要是連續的。 有一種特殊的體系結構允許更有效的交替並行更新(層內沒有連接,沒有跳層連接)。這個小批量程序使玻爾茲曼機器的更新更加平行。這就是所謂的深玻爾茲曼機器(DBM),這被稱為深度玻爾茲曼機(DBM),這是一種通用的玻爾茲曼機器,有很多缺失的連接。
2014年,Salakhutdinov和Hinton為他們的模型提供了另一個更新,稱其為限制玻爾茲曼機器。它們限制了連接,從而使推理和學習變得更容易(只有一層隱藏單元,而隱藏單元之間沒有連接)。在RBM中,當可見單元被夾住時,只需一步即可達到熱平衡。
另一個有效的RBM小批量學習過程如下所示:
對於正相,首先在可見單元上夾一個數據向量。 然後計算所有可見和隱藏單元對的<ViHj>的確切值。為每一個連接的雙單元,平均數<ViHj>除以所有的幻想粒子。
7.深度信念網路
反向傳播被認為是人工神經網路中的標準方法,用於計算一批數據處理後每個神經元的誤差貢獻。但是,使用反向傳播存在一些主要問題。首先,它需要標記的訓練數據; 而幾乎所有的數據都沒有標籤。其次,學習時間不能很好地擴展,這意味著它在具有多個隱藏層的網路中速度很慢。第三,它可能會陷入局部最優解,因此對於深網來說,它們遠非最佳狀態。
為了克服反向傳播的局限性,研究人員已經考慮使用無監督學習方法。這有助於保持使用梯度方法調整權重的效率和簡單性,還可以用它來對感測輸入的結構進行建模。特別是,他們調整權重以最大化生成模型產生感測輸入的概率。問題是我們應該學習什麼樣的生成模型?它可以是像玻爾茲曼機器這樣的基於能量的模型嗎?還是由理想化的神經元組成的因果模型?還是兩者的混合?
信念網是由隨機變數組成的有向無環圖。使用信念網,我們可以觀察到一些變數,我們想要解決2個問題:1)推理的問題:推斷不被察覺的狀態變數;2)學習問題:調整變數之間的相互作用,使網路更容易生成訓練數據。
早期的圖形模型使用專家來定義圖形結構和條件概率。到那時,這些圖形是稀疏連接的;因此,研究人員最初專註於做正確的推斷,而不是學習。對於神經網路來說,學習是中心的,手寫的知識並不酷,因為知識來自於學習訓練數據。神經網路的目的不是為了便於解釋,也不是為了讓推理變得簡單。然而,有神經網路版本的信念網。
有兩類由隨機二元神經元組成的產生式神經網路:1)基於能量的神經網路,在此基礎上,我們利用對稱連接將二元隨機神經元連接到一個波耳茲曼機器上;2)因果關係,我們在一個有向無環圖中連接二元隨機神經元,得到一個s型信念網路。這兩種類型的描述超出了本文的範圍。
8.深度自動編碼器
最後,我們來討論深度自動編碼器。由於以下幾個原因,它們總是看起來像是一種很好的非線性降維方法:因為它們提供了兩種方式的靈活映射。在訓練案例的數量上,學習時間是線性的(或更好的)。最終的編碼模型是相當緊湊和快速的。最終的編碼模型非常緊湊和快速。然而,利用反向傳播來優化深度自動編碼器是非常困難的。隨著初始重量較小,後向傳播梯度消失。我們現在有更好的方法來優化它們; 要麼使用無監督的逐層預訓練,要麼像在回聲狀態網中一樣仔細地初始化權重。
對於預訓練任務,實際上有3種不同類型的淺自動編碼器:
1.RBM是一種自動編碼器:當我們用一階對比散度訓練RBM時,它試圖使重構看起來像數據。它就像一個自動編碼器,但它是通過在隱藏層中使用二進位活動來實現的。在最大可能的訓練下,RBM不像自動編碼器。我們可以用一堆淺層的自動編碼器來代替RBM的堆疊。然而,如果淺層的自動編碼器通過對平方權重的懲罰來規範,那麼預先訓練並不是有效的(對於隨後的辨別)。
2.去噪自動編碼器:通過將其許多分量設置為0(如丟失,但用於輸入),將雜訊添加到輸入向量。他們仍然需要重建這些組件,以便他們必須提取捕獲輸入之間相關性的功能。如果我們使用一堆去噪的自動編碼器,預訓練非常有效。它與RBM的預訓練一樣好或者更好。評估預訓練也更簡單,因為我們可以很容易地計算出目標函數的值。它缺少RBM的變分約束,但這只是理論上的興趣。
3.壓縮自動編碼器:另一種規範自動編碼器的方法是嘗試使隱藏單元的活動對輸入儘可能不敏感;但他們不能忽視輸入,因為他們必須重建。我們通過懲罰每個隱藏活動相對於輸入的平方梯度來實現這一點。壓縮自動編碼器在預訓練中工作良好。這些代碼往往具有這樣的特性:只有一小部分隱藏單元對輸入的變化敏感。
簡單地說,現在有許多不同的方法來對特性進行逐層預訓練。對於沒有大量標記案例的數據集,預訓練有助於後續的區分性學習。對於非常大的,標記的數據集,通過無監督的預訓練來初始化監督學習中使用的權重並不是必需的,即使是深度網路也是如此。預培訓是初始化深網權重的第一個好方法,但現在還有其他方法。但是,如果我們讓網更大,我們將需要再次進行預訓練!
總結
神經網路是有史以來最漂亮的編程範例之一。 在傳統的編程方法中,我們告訴計算機要做什麼,將大問題分解成計算機可以輕鬆執行的許多小的,精確定義的任務。 相比之下,在神經網路中,我們不告訴計算機如何解決我們的問題。 相反,它從觀測數據中學習,找出解決手頭問題的辦法。
今天,深度神經網路和深度學習在計算機視覺,語音識別和自然語言處理等許多重要問題上取得了出色的表現。 它們正在被谷歌,微軟和Facebook等公司大規模部署。
我希望這篇文章能幫助你學習神經網路的核心概念,包括深度學習的現代技術。你可以從我的GitHub庫中獲取Hintons Coursera課程所做的所有演講幻燈片,研究論文和編程作業。祝你好運學習!
數十款阿里雲產品限時折扣中,趕緊點擊領劵開始雲上實踐吧!
以上為譯文,由阿里云云棲社區組織翻譯。
譯文鏈接
文章原標題《The 8 Neural Network Architectures Machine Learning Researchers Need to Learn》
作者:Nand Kishor,譯者:董昭男
文章為簡譯,更為詳細的內容,請查看原文。
更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎
推薦閱讀:
※韓國有家公司挺牛!號稱開發出了全球第一款量產的神經元晶元?
※從結構、原理到實現,Faster R-CNN全解析(原創)
※深度神經網路(DNN)
※項目筆記(一):實驗——用神經網路實現midi音樂旋律音軌的確定
※ML + System = ?