如何確定神經網絡的層數和隱藏層神經元數量 - 台部落
文章推薦指數: 80 %
圖源:吳恩達-深度學習. 輸入層和 ... 如何確定隱藏層的層數是一個至關重要的問題。
... 隱藏層的層數與神經網絡的效果/用途,可以用如下表格概括:.
請輸入正確的登錄賬號或密碼
註冊
忘記密碼
首頁
未分類
正文
如何確定神經網絡的層數和隱藏層神經元數量
原創
龍之天族
2021-04-2513:55
轉載自 https://zhuanlan.zhihu.com/p/100419971
如何確定神經網絡的層數和隱藏層神經元數量
一、導語
BP神經網絡主要由輸入層、隱藏層、輸出層構成,輸入和輸出層的節點數是固定的,不論是迴歸還是分類任務,選擇合適的層數以及隱藏層節點數,在很大程度上都會影響神經網絡的性能。
圖源:吳恩達-深度學習
輸入層和輸出層的節點數量很容易得到。
輸入層的神經元數量等於待處理數據中輸入變量的數量,輸出層的神經元的數量等於與每個輸入關聯的輸出的數量。
但是真正的困難之處在於確定合適的隱藏層及其神經元的數量。
二、隱藏層的層數
如何確定隱藏層的層數是一個至關重要的問題。
首先需要注意一點:
在神經網絡中,當且僅當數據非線性分離時才需要隱藏層!
Sinceasinglesufficientlylargehiddenlayerisadequateforapproximationofmostfunctions,whywouldanyoneeverusemore?Onereasonhangsonthewords“sufficientlylarge”.Althoughasinglehiddenlayerisoptimalforsomefunctions,thereareothersforwhichasingle-hidden-layer-solutionisveryinefficientcomparedtosolutionswithmorelayers.——NeuralSmithing:SupervisedLearninginFeedforwardArtificialNeuralNetworks,1999
因此,對於一般簡單的數據集,一兩層隱藏層通常就足夠了。
但對於涉及時間序列或計算機視覺的複雜數據集,則需要額外增加層數。
單層神經網絡只能用於表示線性分離函數,也就是非常簡單的問題,比如分類問題中的兩個類可以用一條直線整齊地分開。
Specifically,theuniversalapproximationtheoremstatesthatafeedforwardnetworkwithalinearoutputlayerandatleastonehiddenlayerwithany“squashing”activationfunction(suchasthelogisticsigmoidactivationfunction)canapproximateanyBorelmeasurablefunctionfromonefinite-dimensionalspacetoanotherwithanydesirednon-zeroamountoferror,providedthatthenetworkisgivenenoughhiddenunits.——Deeplearning,2016
概括來說就是多個隱藏層可以用於擬合非線性函數。
隱藏層的層數與神經網絡的效果/用途,可以用如下表格概括:
圖源:
簡要概括一下——
沒有隱藏層:僅能夠表示線性可分函數或決策
隱藏層數=1:可以擬合任何“包含從一個有限空間到另一個有限空間的連續映射”的函數
隱藏層數=2:搭配適當的激活函數可以表示任意精度的任意決策邊界,並且可以擬合任何精度的任何平滑映射
隱藏層數>2:多出來的隱藏層可以學習複雜的描述(某種自動特徵工程)
Empirically,greaterdepthdoesseemtoresultinbettergeneralizationforawidevarietyoftasks.Thissuggeststhatusingdeeparchitecturesdoesindeedexpressausefulprioroverthespaceoffunctionsthemodellearns.——Deeplearning,2016
層數越深,理論上擬合函數的能力增強,效果按理說會更好,但是實際上更深的層數可能會帶來過擬合的問題,同時也會增加訓練難度,使模型難以收斂。
因此我的經驗是,在使用BP神經網絡時,最好可以參照已有的表現優異的模型,如果實在沒有,則根據上面的表格,從一兩層開始嘗試,儘量不要使用太多的層數。
在CV、NLP等特殊領域,可以使用CNN、RNN、attention等特殊模型,不能不考慮實際而直接無腦堆砌多層神經網絡。
嘗試遷移和微調已有的預訓練模型,能取得事半功倍的效果。
圖源:beginners-ask-how-many-hidden-layers-neurons-to-use-in-artificial-neural-networks
確定隱藏的神經元層的數量只是問題的一小部分。
還需要確定這些隱藏層中的每一層包含多少個神經元。
下面將介紹這個過程。
三、隱藏層中的神經元數量
在隱藏層中使用太少的神經元將導致欠擬合(underfitting)。
相反,使用過多的神經元同樣會導致一些問題。
首先,隱藏層中的神經元過多可能會導致過擬合(overfitting)。
當神經網絡具有過多的節點(過多的信息處理能力)時,訓練集中包含的有限信息量不足以訓練隱藏層中的所有神經元,因此就會導致過擬合。
即使訓練數據包含的信息量足夠,隱藏層中過多的神經元會增加訓練時間,從而難以達到預期的效果。
顯然,選擇一個合適的隱藏層神經元數量是至關重要的。
圖源:吳恩達-深度學習
通常,對所有隱藏層使用相同數量的神經元就足夠了。
對於某些數據集,擁有較大的第一層並在其後跟隨較小的層將導致更好的性能,因爲第一層可以學習很多低階的特徵,這些較低層的特徵可以饋入後續層中,提取出較高階特徵。
需要注意的是,與在每一層中添加更多的神經元相比,添加層層數將獲得更大的性能提升。
因此,不要在一個隱藏層中加入過多的神經元。
對於如何確定神經元數量,有很多經驗之談。
stackoverflow上有大神給出了經驗公式以供參考:
其中: 是輸入層神經元個數;是輸出層神經元個數;是訓練集的樣本數;α是可以自取的任意值變量,通常範圍可取2-10。
還有另一種方法可供參考,神經元數量通常可以由一下幾個原則大致確定:
隱藏神經元的數量應在輸入層的大小和輸出層的大小之間。
隱藏神經元的數量應爲輸入層大小的2/3加上輸出層大小的2/3。
隱藏神經元的數量應小於輸入層大小的兩倍。
總而言之,隱藏層神經元是最佳數量需要自己通過不斷試驗獲得,建議從一個較小數值比如1到5層和1到100個神經元開始,如果欠擬合然後慢慢添加更多的層和神經元,如果過擬合就減小層數和神經元。
此外,在實際過程中還可以考慮引入BatchNormalization,Dropout,正則化等降低過擬合的方法。
參考資料:
LeCun,Yann,YoshuaBengio,andGeoffreyHinton."Deeplearning."nature521.7553(2015):436-444.
HeatonResearch:TheNumberofHiddenLayers
AhmedGad,BeginnersAsk“HowManyHiddenLayers/NeuronstoUseinArtificialNeuralNetworks?”
JasonBrownlee,HowtoConfiguretheNumberofLayersandNodesinaNeuralNetwork
LavanyaShukla,DesigningYourNeuralNetworks
發表評論
登录
所有評論
還沒有人評論,想成為第一個評論的人麼?請在上方評論欄輸入並且點擊發布.
相關文章
Qt編寫物聯網管理平臺30-用戶登錄退出
一、前言
一個用戶登錄界面,是一個完整的應用系統,尤其是客戶端系統必備的一個功能模塊,傳統的登錄處理一般都是和本地的用戶信息進行比對,而現代的登錄系統一般是發送請求到服務器進行驗證,無論何種方式,都是需要去用戶信息表找到對應的用戶信息,取出
飛揚青雲
2022-05-2314:40:44
SQLite3使用筆記(2)——插入
目錄1.論述2.總結
1.論述
如同上一篇文章SQLite3使用筆記(1)——查詢所述,使用SQLite進行查詢操作同樣有兩種方式。
對於比較簡單的表格插入,使用sqlite3_exec()接口就可以了:
stringstrSql
harlee44
2022-05-2314:40:04
SQLite3使用筆記(1)——查詢
目錄1.概述2.詳論2.1.打開/關閉數據庫2.2.數據查詢3.參考
1.概述
SQLite是一個嵌入式SQL數據庫引擎。
與大多數其他SQL數據庫不同,SQLite沒有單獨的服務器進程。
SQLite直接讀寫普通磁盤文件。
harlee44
2022-05-2314:40:04
遊戲大廳從基礎開始(3)——最吸引眼球的部分客戶端與服務器的連接
遊戲大廳從基礎開始(3)
——最吸引眼球的部分客戶端與服務器的連接
看了上篇隨筆的回覆發現大家都很關心如何實現連接。
但是本節可能不會涉及到數據連接的具體實現。
(補充:tcp實現封裝已經完成 請參考 http
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
遊戲大廳從基礎開始(4)-通過L2X用配置文件反射組裝程序(VBonly)
遊戲大廳從基礎開始(4)-通過L2X用配置文件反射組裝程序(VBonly)
很久沒更新了。
前一陣工作比較充實(就是比較勞累拉~),加上向老趙學習努力瘦身,精神愈發痛苦,難免就懶惰下來。
通用倒了,項目突然死亡,Onbench了一個月,越
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
遊戲大廳從基礎開始(5)--繞回來細說聊天室(上)
距離上次寫大廳已經有幾個月。
中間工作繁忙,待學習的東西又很多,又有很多新產品的想法想實踐,一直把這個坑閒置着。
直到前兩天簡單的樹遍歷枚舉器-挑戰一個程序員到底能多懶裝配腦袋的幾個回帖給我帶來一些靈感,讓我又重新看看我聊天頻道的實現,
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
遊戲大廳從基礎開始(3.5)——最吸引眼球的部分客戶端與服務器的連接的實現
遊戲大廳從基礎開始(3.5)
——最吸引眼球的部分客戶端與服務器的連接的實現
可能要犯大忌諱 本次只有代碼 所以補充兩句
正在實現策略模式的constructor 所以最近沒有時間整理註釋
大家湊合看 隨
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
關於silverlightdepencyobject簡單的clone
最近玩silverlight 3 需要把一個 plateprojectionclone
作爲sealed class 不大好clone 於是想了個別的辦法
Codeusing System;using System
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
遊戲大廳從基礎開始(6)--繞回來細說聊天室(中)之女僕編年史1
上一篇我們大致的瞭解了幾種聊天室的行爲模式
最簡單明瞭的推模式幾乎不需要任何多餘的語言來描述它的實現
這一篇我們看看如何實現拉模式更有效。
本圖清晰的表現了"拉"模式聊天室的行爲。
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
簡單的樹遍歷枚舉器v0.2-挑戰一個程序員到底能多懶-添加廣度優先遍歷
前一陣在遞歸算法相關回貼的討論中和某lz抱怨現在的同志們連用自己的棧加循環模擬遞歸都不會做了。
如果自己實現遞歸棧 又怎麼會在線程棧中儲存過多無關信息?數據全部都在堆裏又怎會stackoverflow?當時就有想法自己實現一個,造福一
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
X360吉他英雄4鼓套裝&1TB硬盤入手
期待晚上的表現 撲通撲通的心跳阿 畝哈哈哈哈
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
一時技癢不用模擬第一印象的構造通過三個觀察得來的規律解決N^2個往返接力問題
問題原題 見銀河使者的隨筆 http://www.cnblogs.com/nokiaguy/archive/2009/07/24/1530139.html第一印象 我得到了和他一樣的解法,就是用斜切片,每一層的x-1和y+1 來控
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
silverlight2客戶端的僞DataTableforEF
公司需要我做SilverLightrearch
發現silverlight數據綁定多少有點痛苦 objectdatasource 要等到 vs2010
於是自己寫了一個
用得到的自然會看懂
MSFT:waywa韋恩卑鄙
2022-05-2314:39:53
【Vue】如何寫一個表格列顯隱控制的組件?
需求
公司項目需要實現對錶格列的顯示隱藏進行配置,額外配置可自行添加,這裏只是說簡單的顯隱控制,複雜的只是在頁面裏面多寫而已,核心代碼是一樣的。
簡單的:
比較複雜的:
代碼實現
表格頁面.vue
延伸文章資訊
- 1深度學習層數在PTT/Dcard完整相關資訊 - 小文青生活
深度學習是由加深層數後的多層神經網絡所組成,有一說法是當Hidden Layer 超過三層的話就稱為Deep Neural Network。 然而, ... https://ithelp.ith...
- 2第四周:深层神经网络(Deep Neural Networks) - 深度学习笔记
记住当我们算神经网络的层数时,我们不算输入层,我们只算隐藏层和输出层。 但是在过去的几年中,DLI(深度学习 ...
- 3如何配置神經網絡中的層數和節點數 - 每日頭條
當前人工智慧領域裡最火爆的就是深度學習,而深度學習中有一類算法叫做神經網絡(Neural Networks)其大致結構如下圖:神經網絡結構示意圖圖中每一個圓圈 ...
- 4速記AI課程-深度學習入門(一) - 高智敏
另外,除了層數以外,前面提到的網路架構也是重點之一,最常見的是 ... 而GD應用在深度學習,又有個專有名詞,稱為反傳遞演算法(Backpropagation)。
- 5如何确定神经网络的层数和隐藏层神经元数量 - 知乎专栏
图源:吴恩达-深度学习. 输入层和 ... 如何确定隐藏层的层数是一个至关重要的问题。 ... 隐藏层的层数与神经网络的效果/用途,可以用如下表格概括:.