獨家 | 初學者的問題:在神經網絡中應使用多少隱藏層/神經元?(附實例)

2021-01-12 數據派THU

本文約2400字,建議閱讀8分鐘

本文將通過兩個簡單的例子,講解確定所需隱藏層和神經元數量的方法,幫助初學者構建神經網絡。


人工神經網絡(ANNs)初學者可能會問這樣的問題:


該用多少個隱藏層?

每個隱藏層中有多少個隱藏的神經元?

使用隱藏層/神經元的目的是什麼?

增加隱藏層/神經元的數量總能帶來更好的結果嗎?


很高興我們可以回答這些問題。首先要清楚,如果要解決的問題很複雜,回答這些問題可能會過於複雜。到本文結束時,您至少可以了解這些問題的答案,而且能夠在簡單的例子上進行測試。

 

ANN的靈感來自生物神經網絡。在計算機科學中,它被簡化表示為一組層級。而層級分為三類,即輸入,隱藏和輸出類。

 

確定輸入和輸出層的數量及其神經元的數量是最容易的部分。每一神經網絡都有一個輸入和一個輸出層。輸入層中的神經元數量等於正在處理的數據中輸入變量的數量。輸出層中的神經元數量等於與每個輸入相關聯的輸出數量。但挑戰在於確定隱藏層及其神經元的數量。

 

以下是一些指導,可以幫助了解分類問題中每個隱藏層的隱藏層數和神經元數:


根據數據繪製預期的決策邊界,從而將各個類別分開。

將決策邊界表示為一組線。注意這些線的組合必須服從於決策邊界。

所選的線的數量表示第一隱藏層中隱藏神經元的數量。

如要連接由前一層所創建的連線,則需添加一個新的隱藏層。注意,每次添加一個新的隱藏層時,都需要與上一個隱藏層創建連接。

每個新隱藏層中隱藏神經元的數量等於要建立的連接數。

 

 為便於理解,請看以下實例:


實例一

 
讓我們從一個兩個類的分類問題的簡單示例開始。如圖1所示,每個示例都有兩個輸入和一個表示類標籤的輸出。它與XOR問題非常相似。


圖1
 

第一個問題是是否需要隱藏層。確定是否需要隱藏層的規則如下:

 

在人工神經網絡中,若且唯若數據必須非線性分離時,才需要隱藏層。

 

如圖2所示,似乎這些類必須是非線性分離的。一條單線不能分離數據。因此,我們必須使用隱藏層以獲得最佳決策邊界。在這種情況下,我們可能仍然不使用隱藏層,但這會影響分類準確性。因此,最好使用隱藏層。

 

知道需要隱藏層之後,有兩個重要問題需要回答,即:


所需的隱藏層數是多少?

每個隱藏層的隱藏神經元數量是多少?

 

按照前面的過程,第一步是繪製分割兩個類的決策邊界。如圖2所示,有多個可能的決策邊界正確地分割數據。我們將進一步討論圖2(a)中的那個。


圖2

 

接下來是通過一組線進行表達決策邊界。

 

使用一組線來表示決策邊界的事實依據是:任何ANN都是使用單層感知器作為構建塊構建的。單層感知器是一個線性分類器,它使用根據以下等式創建的線來分隔不同類:

 

y = w_1 * x_1 + w_2 * x_2 +⋯+ w_i * x_i + b

 

其中 x_i 是 輸入,w_i 是其權重,b 是偏差,y 是輸出。因為添加的每個隱藏神經元都會增加權重數量,且使用更多的隱藏神經元會增加複雜性,因此建議使用最少數量的隱藏神經元來完成任務。

 

回到我們的例子,說ANN是使用多個感知器網絡構建的,就像說網絡是使用多條線路構建的。

 

在這個例子中,決策邊界被一組線代替。線從邊界曲線改變方向的點開始。在這一點上,放置兩條線,每條線在不同的方向上。

 

如圖3所示,因為邊界曲線只有一個點通過灰色圓圈改變方向,所以只需要兩條線。換句話說,這裡有兩個單層感知器網絡,每個感知器產生一條線。


圖3
 

決策邊界只需要兩條線即可表示,這意味著第一個隱藏層將有兩個隱藏的神經元。

 

到目前為止,我們有一個隱藏層,其包括有兩個隱藏的神經元,每個隱藏的神經元可以被視為線性分類器,如圖3中的線所示。這裡將有兩類輸出,其中一類來自每一個分類器(即隱藏的神經元)。然而我們希望構建一個只能輸出類標的分類器。因此,兩個隱藏神經元的輸出將合併為一個輸出。換句話說,這兩條線將由另一個神經元連接。結果如圖4所示。

 

幸運的是,我們不需要添加另一個帶有單個神經元的隱藏層來完成這項工作。輸出層神經元將完成任務。其可將先前生成的兩條線進行融合,使網絡最終只有一個輸出。


圖4


知道隱藏層及其神經元的數量後,網絡架構現已完成,如圖5所示。


圖5
 

實例二

 
另一個分類的例子如圖6所示。與之前的例子類似,有兩個分類,其中每個樣本有兩個輸入和一個輸出。區別在於決策邊界。此示例的邊界比前一個示例更複雜。


圖6
 

根據最開始的指示,第一步是繪製決策邊界。前述中使用的決策邊界如圖7(a)所示。

 

下一步是將決策邊界分成一組線,每條線都可構建為像ANN感知器那樣的模型。在繪製線之前,應該標記邊界變化方向的點,如圖7(b)所示。


圖7
 

問題是需要多少條線?頂點和底點中的每一個將具有與它們相關聯的兩條線,總共4條線。中間點有兩條線從其他點共享。要創建的線如圖8所示。

 

因為第一個隱藏層將具有等於線數的隱藏層神經元,所以第一個隱藏層將具有4個神經元。換句話說,有4個分類器,每個分類器由單層感知器創建。目前,網絡將生成4個輸出,每個分類器一個。接下來是將這些分類器連接在一起,以使網絡僅生成單個輸出。換句話說,線條將通過其他隱藏層連接在一起來生成單獨一條曲線。


圖8
 

模型設計者可以選擇網絡布局。一種可行的網絡架構是構建具有兩個隱藏神經元的第二隱藏層。第一個隱藏的神經元將連接前兩條線,最後一個隱藏的神經元將連接最後兩條線。第二個隱藏層的結果如圖9所示。


圖9

到目前為止,這裡有兩條分開的曲線。因此,網絡有兩個輸出。接下來是將這些曲線連接在一起從整個網絡中獲得單個輸出。在這種情況下,輸出層神經元可用於進行最終連接而非添加新的隱藏層。最終結果如圖10所示。


圖10


網絡設計完成後,完整的網絡架構如圖11所示。


圖11
 

更多詳細信息:


深度學習簡介+使用人工神經網絡求解XOR


https://www.slideshare.net/AhmedGadFCIT/brief-introduction-to-deep-learning-solving-xor-using-anns

https://www.youtube.com/watch?v = EjWDFt-2n9k

 

作者簡介:


Ahmed Gad於2015年7月在埃及Menoufia大學計算機與信息學院(FCI)獲得了信息技術優秀學位的理學士學位。由於他在學院裡排名第一,他在2015年被推薦為一所埃及研究機構的教學助理,然後於2016年在學院裡擔任教學助理和研究員。他目前的研究興趣包括深度學習,機器學習,人工智慧,數位訊號處理和計算機視覺。


原文標題: 

Beginners Ask 「How Many Hidden Layers/Neurons to Use in Artificial Neural Networks?

原文連結:

https://www.kdnuggets.com/2018/07/beginners-ask-how-many-hidden-layers-neurons-neural-networks.html 


蔣雨暢,香港理工大學大三在讀,主修地理信息,輔修計算機科學,目前在研究學習通過數據科學等方法探索城市與人類活動的關係。希望能認識更多對數據科學感興趣的朋友,了解更多前沿知識,開拓自己的眼界。

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,THU數據派產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。


點擊文末「閱讀原文」加入數據派團隊~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派ID:datapi),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公眾號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

發布後請將連結反饋至聯繫郵箱(見下方)。未經許可的轉載以及改編者,我們將依法追究其法律責任。

點擊「閱讀原文」擁抱組織

相關焦點

  • 如何得出神經網絡需要多少隱藏層、每層需要多少神經元?
    來源 | 論智(ID:jqr_AI)該使用多少層隱藏層?使用隱藏層的目的是什麼?增加隱藏層/神經元的數目總能給出更好的結果嗎?人工神經網絡(ANN)初學者常常提出這些問題。如果需要解決的問題很複雜,這些問題的答案可能也會比較複雜。希望讀完這篇文章後,你至少可以知道如何回答這些問題。
  • [獨家]25張圖讓你讀懂神經網絡架構
    RBM不會將每個神經元連接到每個其他神經元,但只將每個神經元組連接到每個其他組,因此沒有輸入神經元直接連接到其他輸入神經元,也不會有隱藏層直接連接到隱藏層。RBM可以像FFNN一樣進行訓練,而不是將數據向前傳播然後反向傳播。
  • 理解神經網絡:從神經元到RNN、CNN、深度學習
    這篇文章嘗試去介紹神經網絡,從一個最基礎的構件,即一個神經元,深入到它的各種流行的種類,像CNN,RNN等。正如其名字所表明,神經網絡的靈感來源於人類大腦的神經結構,像在一個人類大腦中,最基本的構件就叫做神經元。它的功能和人的神經元很相似,換句話說,它有一些輸入,然後給一個輸出。
  • 神經網絡初學者指南:基於Scikit-Learn的Python模塊
    Scikit-learn 在 Python 中設置神經網絡的方法,其最新版本現在已經內置支持神經網絡模型。| 神經網絡神經網絡是一個試圖模仿自然生物神經網絡的學習模式的機器學習框架。 生物神經網絡具有相互連接的神經元,神經元帶有接受輸入信號的樹突,然後基於這些輸入,它們通過軸突向另一個神經元產生輸出信號。 我們將嘗試通過使用人工神經網絡(ANN)來模擬這個過程,我們現在將其稱為神經網絡。 創建神經網絡的過程從最基本的形式單個感知器開始。
  • MAC 的可變多隱層神經網絡
    一.可變多隱層神經網絡的python實現多隱層網絡,用一個隱層網絡來逼近任何連續函數。架構由深層網絡代替單隱層,在擬合過程中可以更快地收斂歸一結果。這種神經網絡有兩個節點:1. 靈活性非常靈活,隱藏層地數目是可以設置地,隱藏層地激活函數也是可以設置地。
  • PyTorch可視化理解卷積神經網絡
    如果你是一個深度學習愛好者,你可能早已聽說過這種神經網絡,並且可能已經使用一些深度學習框架比如caffe、TensorFlow、pytorch實現了一些圖像分類器。然而,這仍然存在一個問題:數據是如何在人工神經網絡傳送以及計算機是如何從中學習的。為了從頭開始獲得清晰的視角,本文將通過對每一層進行可視化以深入理解卷積神經網絡。
  • 人工神經網絡的五大主要應用場景
    為了描述一個典型的神經網絡,它包含了大量的人工神經元(當然是的,這就是為什麼它被稱為人工神經網絡),這些神經元被稱為排列在一系列層中的單元。讓我們來看看人工神經網絡中的不同層次1)輸入層:輸出層包含對輸入到系統中的信息以及系統是否學習了任何任務作出反應的單元,包含接收外界輸入的單元(人工神經元),網絡將在這些輸入的基礎上進行學習,識別或處理。
  • 初探神經網絡與深度學習 —— 感知器
    【IT168 技術】人工神經網絡的第一個裡程碑是感知機perceptron, 這個名字其實有點誤導, 因為它根本上是做決策的。 一個感知機其實是對神經元最基本概念的模擬 ,都未必有多少網絡概念,他就是一個自動做決策的機器。
  • 人工神經網絡初學:是什麼以及為什麼?
    神經網絡複雜的原理和難以解釋的性質讓很多人望而卻步,所以現在讓我們以初學者的身份重新認識一下人工神經網絡。  什麼是人工神經系統?  人工神經系統是一種計算系統,由高度互聯的處理元素組成。互聯性是神經網絡的核心,它幫助系統的動態運行,但系統動態的特性增加了這些機器的理解難度。
  • 人工智慧系列(六) 深度學習中的神經網絡
    從另一個角度看,不管是哪種網絡結構,其根本還是從傳統的神經網絡、多層感知機發展而來的。本篇聊聊神經網絡和多層感知機。我們在上一篇中提到高中學過的線性擬合,線性回歸。神經網絡在深度學習中的作用,就類似於線性回歸方程y=ax+b的作用。從另一個角度看,線性回歸方程y=ax+b就是一個最簡單的神經網絡。在實際工程中,我們的研究對象可能比較複雜,很難用一個線性方程來表示其模型。
  • 神經網絡基礎:七種網絡單元,四種層連接方式
    這些門中每一個各有其權重,這意味著連接到這種類型的 cell 需要設置四個權重(而不是僅僅一個)。門函數很像流門(flow gate),而不像柵門(fence gates):它們可以讓任何東西通過,只是一點點,沒有,或者之間的任何。這通過與值在 0 到 1(儲存在這一門值中)之間的輸入信息相乘而發揮作用。輸入門接著決定有多少輸入可被加入到單元值中。輸出門決定有多少輸出值可通過剩餘的網絡被看到。
  • 神經網絡算法原理_神經網絡算法的應用_神經網絡算法實例說明
    神經網絡的用途非常廣泛,在系統辨識、模式識別、智能控制等領域都能一展身手。而現在最吸引IT巨頭們關注的就是神經網絡在智能控制領域中的自動學習功能,特別適合在需要代入一定條件,並且信息本身是不確定和模糊的情況下,進行相關問題的處理,例如語音識別。
  • 初識人工神經網絡
    在人工神經網絡模型中使用單元節點模擬神經元,通過調整神經網絡內部大量節點(神經元)之間相互連接的權重來達到處理信息的目的。人工神經網絡的神奇之處在於不需要顯示的編程告訴計算機該如何處理信息,它可以像大腦一樣從已知數據信息中進行自我學習,然後對全新的輸入數據信息輸出正確的響應。人工神經網絡並非真正的大腦,它只是使用軟體模擬人腦,用軟體的方式使普通的電晶體像數億互聯的神經元細胞一樣工作。
  • 神經網絡中容易被忽視的基礎知識
    」 網絡的隱藏層數較少,如上左圖。注意:說神經網絡多少層數的時候一般不包括輸入層。 在神經網絡中的激活主要講的是梯度的更新的激活。為什麼在人工神經網絡中的神經元需要激活函數?簡單來說:就是使得神經網絡具有的擬合非線性函數的能力,使得其具有強大的表達能力!簡單擴展,神經網絡的萬能近似定理: 一個前饋神經網絡如果具有線性層和至少一層具有 "擠壓" 性質的激活函數(如 signmoid 等),給定網絡足夠數量的隱藏單元,它可以以任意精度來近似任何從一個有限維空間到另一個有限維空間的 borel 可測函數。
  • 人工智慧-深度學習-神經網絡結構MLP,CNN,RNN,LSTM
    卷積運算的目的是提取輸入的不同特徵,第一層卷積層可能只能提取一些低級的特徵如邊緣、線條和角等層級,更多層的網絡能從低級特徵中迭代提取更複雜的特徵。卷積層的神經元也是三維的,所以也具有深度。卷積層的參數包含一系列過濾器(filter),每個過濾器訓練一個深度,有幾個過濾器輸出單元就具有多少深度。
  • 神經網絡中的激活函數
    什麼是神經網絡激活函數?激活函數有助於決定我們是否需要激活神經元。如果我們需要發射一個神經元那麼信號的強度是多少。激活函數是神經元通過神經網絡處理和傳遞信息的機制為什麼在神經網絡中需要一個激活函數?在神經網絡中,z是輸入節點與節點權值加上偏差的乘積。
  • 神經網絡和深度學習簡史(全)
    他們的想法畢竟是想將一連串簡單的數學神經元結合在一起,完成一些複雜任務,而不是使用單個神經元。換句話說,並不是只有一個輸出層,將一個輸入任意傳輸到多個神經元(所謂的隱藏層,因為他們的輸出會作為另一隱藏層或神經元輸出層的輸入)。只有輸出層的輸出是「可見」的——亦即神經網絡的答案——但是,所有依靠隱藏層完成的間接計算可以處理複雜得多的問題,這是單層結構望塵莫及的。
  • 神經網絡如何完成表徵?
    在數學上,我們將研究給定神經網絡的表徵能力,以便提供近似的函數。表徵能力與神經網絡的能力相關,神經網絡會為特定實例分配適當標籤並為該類創建明確定義的準確決策邊界。在本文中,我們將探索一種視覺方法,用於更多地了解神經網絡的近似特性,這與神經網絡的表徵能力直接相關。它始於MP 神經元模型,它是一個非常簡化的神經元模型。
  • 研究不同神經元在人工神經網絡中的作用
    德國數字轉型技術與管理研究所和機械工程信息管理研究所的研究人員最近進行了一項研究,旨在更好地了解神經網絡決策過程的機制。他們在arXiv上發表的一篇論文中概述了他們的發現,闡明了單個神經元和不同神經元群在這些網絡中的作用。
  • 深度科普:神經網絡的類型及其作用
    「神經」只是大腦的另一種表達。「所以這是一個大腦網絡?」本質上,完全如此!神經網絡是人類最強大的工具——大腦的簡化。它使用的神經元都是通過權重(下圖中的線條)相互連接的。神經元被賦予一些數值輸入,然後乘以權重。權重是神經網絡的核心,通過將權重轉換為特定的數值,就可以處理任何輸入並獲得期望的輸出。神經網絡只是一種處理數據的方式。