編者按:Ahmed Gad介紹了一個決定神經網絡深度、網絡層大小的簡單方法。
該使用多少層隱藏層?使用隱藏層的目的是什么?增加隱藏層/神經元的數目總能給出更好的結果嗎?人工神經網絡(ANN)初學者常常提出這些問題。如果需要解決的問題很復雜,這些問題的答案可能也會比較復雜。希望讀完這篇文章后,你至少可以知道如何回答這些問題。
介紹
在計算機科學中,借鑒了生物神經網絡的ANN用一組網絡層表示。這些網絡層可以分為三類:輸入層、隱藏層、輸出層。
輸入層和輸出層的層數、大小是最容易確定的。每個網絡都有一個輸入層,一個輸出層。輸入層的神經元數目等于將要處理的數據的變量數。輸出層的神經元數目等于每個輸入對應的輸出數。不過,確定隱藏層的層數和大小卻是一項挑戰(zhàn)。
下面是在分類問題中確定隱藏層的層數,以及每個隱藏層的神經元數目的一些原則:
在數據上畫出分隔分類的期望邊界。
將期望邊界表示為一組線段。
線段數等于第一個隱藏層的隱藏層神經元數。
將其中部分線段連接起來(每次選擇哪些線段連接取決于設計者),并增加一個新隱藏層。也就是說,每連接一些線段,就新增一個隱藏層。
每次連接的連接數等于新增隱藏層的神經元數目。
下面我們將舉例說明這一確定隱藏層層數、大小的簡單方法。
例一
讓我們先來看一個簡單的分類問題。每個樣本有兩個輸入和一個表示分類標簽的輸出,和XOR問題很像。
首先需要回答的問題,是否需要隱藏層。關于這個問題,有一條一般規(guī)則:
在神經網絡中,當且僅當數據必須以非線性的方式分割時,才需要隱藏層。
回到我們的例子。看起來一條直線搞不定,因此,我們需要使用隱藏層。在這樣的情形下,也許我們仍然可以不用隱藏層,但會影響到分類精確度。所以,最好使用隱藏層。
已知需要隱藏層,那么接下來就需要回答兩個重要問題:
需要多少層?
每層需要多少神經元?
按照我們之前提到的流程,首先需要畫出分割的邊界。如下圖所示,可能的邊界不止一種。我們在之后的討論中將以下圖右部的方案為例。
根據之前的原則,接下來是使用一組線段表示這一邊界。
使用一組線段表示邊界的想法來自于神經網絡的基礎構件——單層感知器。單層感知器是一個線性分類器,根據下式創(chuàng)建分界線:
y = w1x1+ w2x2+ ? + wixi+ b
其中xi是第i項輸入,wi是權重,b是偏置,y是輸出。因為每增加一個隱藏單元都會增加權重數,所以一般建議使用能夠完成任務的最少數量的隱藏單元。隱藏神經元使用量超出需要會增加復雜度。
回到我們的例子上來,人工神經網絡基于多個感知器構建,這就相當于網絡由多條直線組成。
因此我們使用一組線段替換邊界,以分界曲線變向處作為線段的起點,在這一點上放置方向不同的兩條線段。
如下圖所示,我們只需要兩條線段(分界曲線變向處以空心圓圈表示)。也就是兩個單層感知器網絡,每個感知器產生一條線段。
只需兩條線段就可以表示邊界,因此第一個隱藏層將有兩個隱藏神經元。
到目前為止,我們有包含兩個隱藏神經元的單隱藏層。每個隱藏神經元可以看成由一條線段表示的一個線性分類器。每個分類器(即隱藏神經元)都有一個輸出,總共有兩個輸出。但我們將要創(chuàng)建的是基于單個輸出表示分類標簽的一個分類器,因此,兩個隱藏神經元的輸出將被合并為單個輸出。換句話說,這兩條線段將由另一個神經元連接起來,如下圖所示。
很幸運,我們并不需要額外添加一個包含單個神經元的隱藏層。輸出層的神經元正好可以起到這個作用,合并之前提到的兩個輸出(連接兩條線段),這樣整個網絡就只有一個輸出。
整個網絡架構如下圖所示:
例二
我們再來看一個分類問題的例子。和上面一個例子相似,這個例子也有兩個分類,每個樣本對應兩個輸入和一個輸出。區(qū)別在于邊界比之前的更復雜。
遵照之前的原則,第一步是畫出邊界(如下圖左半部分所示),接著是將邊界分成一組線段,我們將使用ANN的感知器建模每條線段。在畫出線段之前,首先標出邊界的變向處(下圖右半部分中的空心圓圈)。
問題在于需要幾條線段?頂部和底部的變向處各需要兩條線段,這樣總共是4條線段。而當中的變向處可以和上下兩個變向處共用線段。所以我們需要4條線段,如下圖所示。
這意味著第一個隱藏層將包含4個神經元。換句話說,由單層感知器構成的4個分類器,每個分類器各生成一個輸出,共計4個輸出。接下來需要將這些分類器連接起來,使得整個網絡生成單個輸出。換句話說,通過另外的隱藏層將這些線段連接起來,以得到單條曲線。
網絡的具體布局取決于模型設計者。一種可能的網絡架構是創(chuàng)建包含兩個隱藏神經元的第二隱藏層。其中第一個隱藏神經元連接前兩條線段,最后一個隱藏神經元連接后兩條線段,如下圖所示。
到目前為止,我們有兩條曲線,也就是兩個輸出。接下來我們連接這兩條曲線,以得到整個網絡的單個輸出。在這一情形下,輸出層的神經元可以完成最終的連接,而無需增加一個新的隱藏層。最后我們得到了如下曲線:
這就完成了網絡的設計,整個網絡架構如下圖所示:
-
神經網絡
+關注
關注
42文章
4733瀏覽量
100415 -
神經元
+關注
關注
1文章
363瀏覽量
18431
原文標題:如何得出神經網絡需要多少隱藏層、每層需要多少神經元?
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論