如何配置神經網路中的層數和節點數
編譯:yxy
出品:ATYUN訂閱號
人工神經網路有兩個重要的超參數,用於控制網路的體系結構或拓撲:層數和每個隱藏層中的節點數。配置網路時,必須指定這些參數的值。
為你的特定預測建模問題配置這些超參數的最可靠方法是通過強大的測試工具系統實驗。
對於初學者來說,尋找一種分析方法來計算最佳層數和節點數,或者遵循簡單的經驗法則,可能是一個很難接受的機器學習領域。
在這篇文章中,你將了解層和節點的作用,以及如何著手為你的預測建模問題配置多層感知器神經網路。
閱讀這篇文章後,你會知道:
單層和多層感知器網路之間的區別。
在網路中擁有一個和多個隱藏層的價值。
配置網路中的層數和節點數的五種方法。
讓我們開始吧。
這篇文章分為四個部分; 他們是:
多層感知器
如何計算層?
為什麼要有多個層?
要使用多少層和節點?
多層感知器
節點,也稱為神經元或感知器,是具有一個或多個權重輸入連接的計算單元,它以某種方式連接輸入的轉移函數,並且連接輸出。然後將節點組織成層以構成網路。
單層人工神經網路,也簡稱為單層,顧名思義,具有單層節點。單層中的每個節點直接連接到輸入變數並提供輸出變數。
單層網路只有一層活動的單元。輸入通過單層權重直接連接到輸出。輸出不相互影響,因此具有N個輸出的網路可被視為N個分離的單輸出網路。
– 第15頁,Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks,1999。
單層網路可以擴展到多層網路,也曾為稱為多層感知器。多層感知器(MLP)是具有不止一層的人工神經網路。
它有一個連接到輸入變數的輸入層,一個或多個隱藏層,以及一個產生輸出變數的輸出層。
標準多層感知器(MLP)是單層感知器的連接在一起。存在一層輸入節點,一層輸出節點和一個或多個中間層。中間層也被稱為「隱藏層」,因為它們不能直接從系統輸入和輸出中觀察到。
– Page 31,Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks,1999。
我們可以總結MLP中層的類型如下:
輸入層:輸入變數,有時稱為可見層。
隱藏層:輸入和輸出層之間的節點層。這些層可能存在一個或多個。
輸出層:生成輸出變數的節點層。
最後,以下是用於描述神經網路形狀和能力的一些術語:
尺寸:模型中的節點數。
寬度:特定層中的節點數。
深度:神經網路中的層數。
能力:可以通過網路配置學到的函數的類型或結構。有時被稱為「 表徵能力 」。
架構:網路中層和節點的具體排列。
如何計算層?
過去,對於如何計算層數存在一些分歧。
分歧的核心在於輸入層是否被計算在內。有一種觀點認為不應該計算它,因為輸入並不活動,它們只作輸入變數。我們將使用這個慣例; 這也是《Neural Smithing》 一書中推薦的慣例。
因此,具有輸入層,一個隱藏層和一個輸出層的MLP是2層MLP!
可以使用簡單的符號來概括MLP的結構。
這種方便的表示法表述了每層的層數和節點數。每個層中的節點數被指定為一個整數,從輸入層到輸出層,每個層的尺寸由一個正斜線字元(/)分隔。
例如,輸入層中具有兩個變數的網路,有一個具有八個節點的隱藏層和具有一個節點的輸出層使用符號來描述為:2/8/1。
我建議在描述多層感知器神經網路的層及其尺寸時使用此表示法。
為什麼要有多個層?
在我們查看要指定的層數之前,有必要先思考為什麼我們希望擁有多個層。
單層神經網路只能用於表示線性可分離的函數。也就是說非常簡單的問題,例如,分類問題中可以被一行整齊地分隔開的兩個類。如果你的問題相對簡單,那麼單層網路就足夠了。
然而,我們有興趣解決的大多數問題都不是線性可分的。
多層感知器可用於表示凸區域。這意味著,實際上,他們可以學習在一些高維空間中圍繞實例繪製形狀,以對它們進行分類,從而克服線性可分性的限制。
實際上,Lippmann在1987年的論文「An introduction to computing with neural nets 」中有一個理論發現,它表明具有兩個隱藏層的MLP足以創建任何所需形狀的分類區域。這很有啟發性,但應該注意的是,沒有給出每層中使用多少節點或如何學習權重的指示。
進一步的理論發現和證明已經顯示MLP是萬能逼近器。有了一個隱藏層,MLP就可以逼近我們需要的任何函數。
具體而言,萬能逼近定理表明:只要有足夠的隱藏節點,具有線性輸出層和至少一個具有任何「壓縮」激活函數(如,logistic sigmoid)的隱藏層的前饋網路可以從一個有限維空間到另一個有限維空間有任意的非零誤差逼近任何波萊爾可測函數。
– 第198頁,Deep Learning,2016年。
這是一個經常被引用的理論發現,關於它的文獻很多。在實踐中,我們同樣不知道在給定問題的單個隱藏層中要使用多少節點,也不知道如何有效地學習或設置其權重。此外,已經出現了許多反例,有些函數不能通過單個隱藏層的MLP直接學習或者需要無限數量的節點。
即使對於那些可以通過足夠大的單隱藏層MLP學習的函數,使用兩個(或更多)隱藏層來學習它也會更有效。
既然一個足夠大的隱藏層足以近似大多數函數,為什麼還有人會使用更多呢?其中一個原因在於「足夠大」這個詞。雖然單個隱藏層對於某些函數是最佳的,但是與有更多層的解決方案相比,單隱藏層解決方案的效率非常低。
– 第38頁,Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks,1999。
要使用多少層和節點?
有了前面的鋪墊,讓我們來處理你真正的問題。應該在多層感知器中使用多少層,每層有多少個節點?
在本節中,我們將列舉解決此問題的五種方法。
1)實驗
一般來說,當我被問到用於MLP的層數和節點數時,我經常回復:
我不知道,你要使用系統的實驗來發現對特定數據集最有效的方法。
我仍然堅持這個答案。
通常,你無法分析計算人工神經網路中每層使用的層數或節點數,以解決特定的實際預測建模問題。
每層中的層數和節點數是必須指定的模型超參數。
你可能是第一個嘗試使用神經網路解決自己的特定問題的人。在你之前沒有人解決過它。因此,沒有人能告訴你如何配置網路的正確答案。
※Facebook收購英國公司Bloomsbury AI,以打擊假新聞等問題
※AI人才爭奪戰愈演愈烈,Oracle為至少一位專家提供6百萬美元
TAG:ATYUN訂閱號 |