如何得出神經網絡需要多少隱藏層、每層需要多少神經元?

2021-01-12 AI有道

點擊上方「AI有道」,選擇「星標公眾號」

重磅乾貨,第一時間送達!

來源 | 論智(ID:jqr_AI)

該使用多少層隱藏層?使用隱藏層的目的是什麼?增加隱藏層/神經元的數目總能給出更好的結果嗎?人工神經網絡(ANN)初學者常常提出這些問題。如果需要解決的問題很複雜,這些問題的答案可能也會比較複雜。希望讀完這篇文章後,你至少可以知道如何回答這些問題。

在計算機科學中,借鑑了生物神經網絡的ANN用一組網絡層表示。這些網絡層可以分為三類:輸入層、隱藏層、輸出層。

輸入層和輸出層的層數、大小是最容易確定的。每個網絡都有一個輸入層,一個輸出層。輸入層的神經元數目等於將要處理的數據的變量數。輸出層的神經元數目等於每個輸入對應的輸出數。不過,確定隱藏層的層數和大小卻是一項挑戰。

下面是在分類問題中確定隱藏層的層數,以及每個隱藏層的神經元數目的一些原則:

下面我們將舉例說明這一確定隱藏層層數、大小的簡單方法。

讓我們先來看一個簡單的分類問題。每個樣本有兩個輸入和一個表示分類標籤的輸出,和XOR問題很像。

首先需要回答的問題,是否需要隱藏層。關於這個問題,有一條一般規則:

在神經網絡中,若且唯若數據必須以非線性的方式分割時,才需要隱藏層。

回到我們的例子。看起來一條直線搞不定,因此,我們需要使用隱藏層。在這樣的情形下,也許我們仍然可以不用隱藏層,但會影響到分類精確度。所以,最好使用隱藏層。

已知需要隱藏層,那麼接下來就需要回答兩個重要問題:

需要多少層?

每層需要多少神經元?

按照我們之前提到的流程,首先需要畫出分割的邊界。如下圖所示,可能的邊界不止一種。我們在之後的討論中將以下圖右部的方案為例。

根據之前的原則,接下來是使用一組線段表示這一邊界。

使用一組線段表示邊界的想法來自於神經網絡的基礎構件——單層感知器。單層感知器是一個線性分類器,根據下式創建分界線:

y = w1x1 + w2x2 + ⋯ + wixi + b

其中xi是第i項輸入,wi是權重,b是偏置,y是輸出。因為每增加一個隱藏單元都會增加權重數,所以一般建議使用能夠完成任務的最少數量的隱藏單元。隱藏神經元使用量超出需要會增加複雜度。

回到我們的例子上來,人工神經網絡基於多個感知器構建,這就相當於網絡由多條直線組成。

因此我們使用一組線段替換邊界,以分界曲線變向處作為線段的起點,在這一點上放置方向不同的兩條線段。

如下圖所示,我們只需要兩條線段(分界曲線變向處以空心圓圈表示)。也就是兩個單層感知器網絡,每個感知器產生一條線段。

只需兩條線段就可以表示邊界,因此第一個隱藏層將有兩個隱藏神經元。

到目前為止,我們有包含兩個隱藏神經元的單隱藏層。每個隱藏神經元可以看成由一條線段表示的一個線性分類器。每個分類器(即隱藏神經元)都有一個輸出,總共有兩個輸出。但我們將要創建的是基於單個輸出表示分類標籤的一個分類器,因此,兩個隱藏神經元的輸出將被合併為單個輸出。換句話說,這兩條線段將由另一個神經元連接起來,如下圖所示。

很幸運,我們並不需要額外添加一個包含單個神經元的隱藏層。輸出層的神經元正好可以起到這個作用,合併之前提到的兩個輸出(連接兩條線段),這樣整個網絡就只有一個輸出。

整個網絡架構如下圖所示:

我們再來看一個分類問題的例子。和上面一個例子相似,這個例子也有兩個分類,每個樣本對應兩個輸入和一個輸出。區別在於邊界比之前的更複雜。

遵照之前的原則,第一步是畫出邊界(如下圖左半部分所示),接著是將邊界分成一組線段,我們將使用ANN的感知器建模每條線段。在畫出線段之前,首先標出邊界的變向處(下圖右半部分中的空心圓圈)。

問題在於需要幾條線段?頂部和底部的變向處各需要兩條線段,這樣總共是4條線段。而當中的變向處可以和上下兩個變向處共用線段。所以我們需要4條線段,如下圖所示。

這意味著第一個隱藏層將包含4個神經元。換句話說,由單層感知器構成的4個分類器,每個分類器各生成一個輸出,共計4個輸出。接下來需要將這些分類器連接起來,使得整個網絡生成單個輸出。換句話說,通過另外的隱藏層將這些線段連接起來,以得到單條曲線。

網絡的具體布局取決於模型設計者。一種可能的網絡架構是創建包含兩個隱藏神經元的第二隱藏層。其中第一個隱藏神經元連接前兩條線段,最後一個隱藏神經元連接後兩條線段,如下圖所示。

到目前為止,我們有兩條曲線,也就是兩個輸出。接下來我們連接這兩條曲線,以得到整個網絡的單個輸出。在這一情形下,輸出層的神經元可以完成最終的連接,而無需增加一個新的隱藏層。最後我們得到了如下曲線:

這就完成了網絡的設計,整個網絡架構如下圖所示:





【推薦閱讀】

乾貨 | 公眾號歷史文章精選(附資源)

我的深度學習入門路線

我的機器學習入門路線圖


相關焦點

  • 獨家 | 初學者的問題:在神經網絡中應使用多少隱藏層/神經元?(附實例)
    本文將通過兩個簡單的例子,講解確定所需隱藏層和神經元數量的方法,幫助初學者構建神經網絡。人工神經網絡(ANNs)初學者可能會問這樣的問題:該用多少個隱藏層?每個隱藏層中有多少個隱藏的神經元?使用隱藏層/神經元的目的是什麼?
  • PyTorch可視化理解卷積神經網絡
    造就機器能夠獲得在這些視覺方面取得優異性能可能是源於一種特定類型的神經網絡——卷積神經網絡(CNN)。如果你是一個深度學習愛好者,你可能早已聽說過這種神經網絡,並且可能已經使用一些深度學習框架比如caffe、TensorFlow、pytorch實現了一些圖像分類器。然而,這仍然存在一個問題:數據是如何在人工神經網絡傳送以及計算機是如何從中學習的。
  • 人工智慧-深度學習-神經網絡結構MLP,CNN,RNN,LSTM
    下面是圖解:一個卷積神經網絡由很多層組成,它們的輸入是三維的,輸出也是三維的,有的層有參數,有的層不需要參數。卷積神經網絡通常包含以下幾種層:卷積層(Convolutional layer),卷積神經網路中每層卷積層由若干卷積單元組成,每個卷積單元的參數都是通過反向傳播算法優化得到的。
  • 農村自建房每層需要多少紅磚?公式全在這裡,看完你就懂了
    每平需要用多少磚計算公式:每平用磚=1÷每塊磚佔牆體的面積。我們先計算每平米米需要多少塊磚,如果按照24牆計算,應該是牆體面積除以每塊磚的佔牆面積,於是每平米應該是1÷(0.125 ×0.063),也就是需要128塊磚。
  • 一文詳解神經網絡 BP 算法原理及 Python 實現
    所謂的鏈式求導法則,就是求複合函數的導數: 鏈式求導法則 放個例題,會更加明白一點: 鏈式求導的例子 神經網絡的結構 神經網絡由三部分組成,分別是最左邊的輸入層,隱藏層(實際應用中遠遠不止一層)和最右邊的輸出層。
  • 初識人工神經網絡
    人工神經網絡的神奇之處在於不需要顯示的編程告訴計算機該如何處理信息,它可以像大腦一樣從已知數據信息中進行自我學習,然後對全新的輸入數據信息輸出正確的響應。人工神經網絡並非真正的大腦,它只是使用軟體模擬人腦,用軟體的方式使普通的電晶體像數億互聯的神經元細胞一樣工作。
  • 理解神經網絡:從神經元到RNN、CNN、深度學習
    現在,我們更深入的了解什麼是神經網絡,以及它們不同的種類。我強烈的建議你,如果對於神經元和激活函數有任何的疑惑,回過頭去複習一下它們。在理解一個神經網絡之前,有必要去理解神經網絡中的Layer(層),一層Layer是一組有輸入輸出的神經元。每一個神經元的輸入通過其所屬的激活函數處理,例如,這是一個小型神經網絡。
  • 神經網絡算法原理_神經網絡算法的應用_神經網絡算法實例說明
    神經網絡的用途非常廣泛,在系統辨識、模式識別、智能控制等領域都能一展身手。而現在最吸引IT巨頭們關注的就是神經網絡在智能控制領域中的自動學習功能,特別適合在需要代入一定條件,並且信息本身是不確定和模糊的情況下,進行相關問題的處理,例如語音識別。
  • 神經網絡如何完成表徵?
    因此,需要先進的計算模型,如當前需要為這些函數創建分離邊界的神經網絡。只需看一個包含一個隱藏層和一些複製異或函數的預定義權重的基本圖。2 ^ n個感知器的1個隱藏層和包含1個感知器的1個輸出層。通過我們對具有階梯函數(如近似)的單個隱藏層網絡的分析。它的嚴格判斷標準與階梯函數一樣具有局限性。讓我們深入研究具有S形非線性逼近函數的多層深度網絡。
  • 神經網絡基礎:七種網絡單元,四種層連接方式
    Cell(單元)《The Neural Network Zoo》一文展示了不同類型的單元和不同的層連接風格,但並沒有深入探討每個單元類型是如何工作的。大量的單元類型擁有彼此不同的顏色,從而更清晰地區分網絡,但是自此之後我發現這些單元的工作方式大同小異,下面我對每個單元逐一描述。基本的神經網絡單元,屬於常規性前饋架構之中的類型,且相當簡單。
  • [獨家]25張圖讓你讀懂神經網絡架構
    神經網絡通常被描述為具有層(輸入,隱藏或輸出層),其中每層由並行的單元組成。通常同一層不具有連接、兩個相鄰層完全連接(每一層的每一個神經元到另一層的每個神經元)。最簡單的實用網絡有兩個輸入單元和一個輸出單元,可用於建立邏輯模型( 用做判斷是否)。通常通過反向傳播方法來訓練FFNN,數據集由配對的輸入和輸出結果組成(這被稱為監督學習)。我們只給它輸入,讓網絡填充輸出。
  • 神經網絡理論基礎及Python實現
    一、多層前向神經網絡 多層前向神經網絡由三部分組成:輸出層、隱藏層、輸出層,每層由單元組成; 輸入層由訓練集的實例特徵向量傳入,經過連接結點的權重傳入下一層,前一層的輸出是下一層的輸入;隱藏層的個數是任意的,輸入層只有一層,輸出層也只有一層; 除去輸入層之外,隱藏層和輸出層的層數和為n,則該神經網絡稱為n層神經網絡
  • 人工神經網絡的五大主要應用場景
    輸入單元基於內部加權系統接收各種形式和結構的信息,神經網絡嘗試學習所呈現的信息以產生一個輸出報告。就像人類需要規則和指南才能得出一個結果或輸出一樣,ANN也使用一組名為反向傳播(back propagation)的學習規則來完善他們的輸出結果。(反向傳播是錯誤向後傳播的縮寫。)一個人工神經網絡最初要經歷一個訓練階段,在這個階段,它學會識別數據中的模式,無論是視覺,聽覺還是文本。
  • 深度學習黑盒可視化指南,從隱藏層開始
    隱藏層不直接接受外界的信號,也不直接向外界發送信號,因而如何認識隱藏層內部的工作原理和運行機制,也成為深度學習研究中的一大挑戰。可視化隱藏層是其中的一個解決方法,那如何做到呢?對此,來自西蒙弗雷澤大學的幾位學生Pallavi Bharadwaj、Inderpartap Cheema、Najeeb Qazi 以及 Mrinal Gosain 合作寫作了一篇文章,不僅指出了了解神經網絡隱藏層的重要性,還詳盡地介紹了如何可視化神經網絡以及隱藏層的過程。
  • 深度|人工神經網絡深入分析
    書中論證了感知器模型的兩個關鍵問題:其一,單層的神經網絡無法解決不可線性分割的問題,典型例子如同或(XNOR,兩個輸入如果相同,輸出為1;兩個輸入如果是不同,輸出為0。)其二,受硬體水平的限制,當時的電腦完全沒有能力完成神經網絡模型所需要的超大的計算量。在此筆者就以單層神經元為例解釋人工神經元是如何工作的。
  • 神經網絡中容易被忽視的基礎知識
    由於歷史原因,激活函數常常選擇使用 sigmoid 函數 σ當然還有很多其他激活函數,下面再仔細聊!需要注意:1. 一個神經元可以看成包含兩個部分,一個是對輸入的加權求和加上偏置,一個是激活函數對求和後的激活或者抑制。2. 注意生物中的神經元要複雜的多,其中一個是生物中的輸出是一個脈衝,而現在大多數的數學模型神經輸出的就是一個值,當然現在也有一些脈衝人工神經網絡,可以自行了解!
  • 初探神經網絡與深度學習 —— 感知器
    【IT168 技術】人工神經網絡的第一個裡程碑是感知機perceptron, 這個名字其實有點誤導, 因為它根本上是做決策的。 一個感知機其實是對神經元最基本概念的模擬 ,都未必有多少網絡概念,他就是一個自動做決策的機器。
  • 神經網絡模型預測值 論文_bp神經網絡預測模型建模步驟 - CSDN
    這樣,輸入門決定輸入的信息有多少可以被疊加到當前門值。輸出門決定有多少輸出信息是可以傳遞到後面的神經網絡中。遺忘門並不是和輸出神經元的先前值相連接,而是,和前一記憶神經元相連接。它決定了保留多少記憶神經元最新的狀態信息。因為沒有和輸出相連接,以及沒有激活函數在這個循環中,因此只會有更少的信息流失。
  • 神經網絡和深度學習簡史(全)
    他們的想法畢竟是想將一連串簡單的數學神經元結合在一起,完成一些複雜任務,而不是使用單個神經元。換句話說,並不是只有一個輸出層,將一個輸入任意傳輸到多個神經元(所謂的隱藏層,因為他們的輸出會作為另一隱藏層或神經元輸出層的輸入)。只有輸出層的輸出是「可見」的——亦即神經網絡的答案——但是,所有依靠隱藏層完成的間接計算可以處理複雜得多的問題,這是單層結構望塵莫及的。
  • BP神經網絡
    神經網絡的傳播方式有兩種,即正向和反向。正向傳播是指神經網絡從輸入層到隱藏層,經過信號傳播到輸出層,將輸出層得到的結果與期望值對比,如果是最後所希望的結果,則該算法終止,否則反向傳播。反向傳播是逆運算,誤差信號輸出樣本和網絡出口按原連接路徑通道以前權值和閾值調整,誤差信號將描述採用一般梯度下降法來計算反向連接,用於調節還原。