2016-02-20 765 views
13

我目前正在爲具有387個特徵和3000個樣本的數據集構建一個nn。輸出是3類。我配置網絡結構如下:如何確定神經網絡的層數和節點數

輸入 - > 200 - > {300-> 100} - > 50->輸出

我是否選擇節點和層的正確數量?如何確定每個圖層的節點數(輸入,隱藏和輸出)?有規定嗎?

+0

[多層感知器(MLP)體系結構的可能重複:選擇隱藏層的數量和隱藏層的大小的標準?](http://stackoverflow.com/questions/10565868/multi-layer- perceptron-mlp-architecture-criteria-for-choosing-number-of-hidde) – OmG

+0

那麼在輸入層應該有多少個節點呢? –

回答

10

規則?儘可能多的,而不是。下面是從Neural Network FAQ這是一個良好的網頁基本問題需要諮詢的摘錄:

  • 答:隱藏着多少單位要我用? ==========================================

    沒有辦法確定一個良好的網絡拓撲結構,只需從輸入和輸出的數量即可。這關鍵取決於訓練實例的編號 以及您嘗試學習的分類的複雜程度。有一個輸入和一個輸出 問題,需要數以百萬計的隱藏單元,以及問題與 億投入和僅需要一個隱藏 單位,或者根本就沒有百萬輸出。
    一些書籍和文章提供「 拇指規則」選購topopology - Ninputs加Noutputs在由兩個dividied ,可能與平方根的某個地方 - 但這種 規則垃圾總量。其他規則涉及到 實例可用數量:在使用最讓許多隱藏的單位,權重的網絡時代10數大於應用的數量 較小。這樣的規則只涉及過度擬合,並且也是不可靠的。

  • 在你的情況,但是,可以肯定地說,網絡是多過於複雜(即使你應用性很強的正規化)。爲什麼這麼多隱藏層?從一個隱藏層開始 - 儘管有深度的學習欣快感 - 並且具有最少的隱藏節點。增加隱藏的節點數量,直到您獲得良好的性能。只有沒有,我會添加更多的圖層。此外,使用交叉驗證和適當的正則化。

    12

    由於約書亞·本焦,蒙特利爾學院學習算法主管remarks

    「很簡單隻要保持增加層數,直到測試誤差已不提高。」

    由傑夫·辛頓推薦的方法是,直到你開始你的過度擬合訓練集添加圖層。然後你添加丟失或另一種正則化方法。

    節點

    您的任務:

    • 輸入層應包含每個功能387個節點。
    • 輸出層應該包含每個類的3個節點。
    • 隱藏層我發現逐漸減少每個層內的神經元的數量工作得很好(this list of tips and tricks在爲壓縮任務創建自動編碼器時與此相符)。也許在第一個隱藏層中嘗試200,在第二個中嘗試100;再次,它是一個需要優化的超參數,並且非常依賴於數據集大小。
    +0

    爲什麼387爲第一層?我不關注 –

    +1

    @kRazzyR輸入有387個特徵,因此輸入層包含387個節點,每個特徵有一個節點。 –

    3

    正如他們所說,沒有「神奇」的規則來計算神經網絡的隱藏層和節點的數量,但有一些提示或推薦可以幫助您找到最好的。

    隱藏節點的數量是基於之間的關係:

    • 輸入和輸出節點的數量
    • 金額可用測試數據
    • 複雜性正在努力學習
    • 功能的
    • 訓練算法

    爲了最大限度地減少錯誤,並有一個訓練有素的網絡,ge neralizes well,你需要挑選最佳數量的隱藏層,以及每個隱藏層中的節點。

    • 節點太少會導致高誤差爲您的系統作爲預測因素可能是太複雜,節點數量少捕捉

    • 節點過多會過度擬合到你的訓練數據,而不是推廣以及

    您可以在此頁面找到一些一般性的建議:

    Section - How many hidden units should I use?

    如果您的數據是線性可分的,那麼您根本不需要任何隱藏層。否則就增加隱藏層而導致的性能差異達成共識:第二層(或第三層等)隱藏層的性能改善情況非常小。因此,對大多數問題來說,一個隱藏層就足夠了。

    有一些經驗派生的經驗法則,其中最常見的依據是'隱藏層的最佳大小通常在輸入大小和輸出層大小之間'。

    • 隱藏層的數量等於一個
    • 神經元的數量:

      總之,對於大多數問題,一個很可能只用兩個規則設置隱藏層的配置獲得不俗的表現層是輸入和輸出層中神經元的平均值。