❶ 卷積神經網路用全連接層的參數是怎麼確定的
卷積神經網路用全連接層的參數確定:卷積神經網路與傳統的人臉檢測方法不同,它是通過直接作用於輸入樣本,用樣本來訓練網路並最終實現檢測任務的。
它是非參數型的人臉檢測方法,可以省去傳統方法中建模、參數估計以及參數檢驗、重建模型等的一系列復雜過程。本文針對圖像中任意大小、位置、姿勢、方向、膚色、面部表情和光照條件的人臉。
輸入層
卷積神經網路的輸入層可以處理多維數據,常見地,一維卷積神經網路的輸入層接收一維或二維數組,其中一維數組通常為時間或頻譜采樣;二維數組可能包含多個通道;二維卷積神經網路的輸入層接收二維或三維數組;三維卷積神經網路的輸入層接收四維數組。
由於卷積神經網路在計算機視覺領域應用較廣,因此許多研究在介紹其結構時預先假設了三維輸入數據,即平面上的二維像素點和RGB通道。
❷ BP神經網路中隱含層的神經元數怎麼確定
經驗公式未必能達到理想效果,這個真的需要一個個嘗試。可以先按樓上說的設定,然後再根據結果的誤差以及收斂速度來一個個調整。
❸ 卷積神經網路參數解析
(1)現象:
(1-1)一次性將batch數量個樣本feed神經網路,進行前向傳播;然後再進行權重的調整,這樣的一整個過程叫做一個回合(epoch),也即一個batch大小樣本的全過程就是一次迭代。
(1-2)將訓練數據分塊,做成批(batch training)訓練可以將多個訓練數據元的loss function求和,使用梯度下降法,最小化 求和後的loss function ,進而對神經網路的參數進行優化更新
(2)一次迭代:包括前向傳播計算輸出向量、輸出向量與label的loss計算和後向傳播求loss對權重向量 w 導數(梯度下降法計算),並實現權重向量 w 的更新。
(3)優點:
(a)對梯度向量(代價函數對權值向量 w 的導數)的精確估計,保證以最快的速度下降到局部極小值的收斂性;一個batch一次梯度下降;
(b)學習過程的並行運行;
(c)更加接近隨機梯度下降的演算法效果;
(d)Batch Normalization 使用同批次的統計平均和偏差對數據進行正則化,加速訓練,有時可提高正確率 [7]
(4)現實工程問題:存在計算機存儲問題,一次載入的batch大小受到內存的影響;
(5)batch參數選擇:
(5-1)從收斂速度的角度來說,小批量的樣本集合是最優的,也就是我們所說的mini-batch,這時的batch size往往從幾十到幾百不等,但一般不會超過幾千
(5-2)GPU對2的冪次的batch可李叢核以發揮更佳的性能,因此設置成16、32、64、128...時往往要比設置為整10、整100的倍數時表現更優
(6)4種加速批鄭槐梯度下降的方法 [8] :
(6-1)使用動量-使用權重的 速度 而非 位置 來改變權重。
(6-2)針對不同權重參數使用不同學習率。
(6-3)RMSProp-這是Prop 的均方根 ( Mean Square ) 改進形式,Rprop 僅僅使用梯度的符號,RMSProp 是其針對 Mini-batches 的平均化版本
(6-4)利用曲率信息的最優化方法。
(1)定義:運用梯度下降演算法優化loss成本函數時,權重向量的更新規則中,在梯度項前會乘以一個系數,這個系數就叫學習速率η
(2)效果:
(2-1)學習率η越小,每次迭代權值向量變化小,學習速度慢,軌跡在權值空間中較光滑,收斂慢;
(2-2)學習率η越大,每次迭代權值向量變化大,學習速度快,但是有可能使變化處於震盪中,無法收斂;
(3)處理方法:
(3-1)既要加快學習速度又要保持穩定的方法修改delta法哪掘則,即添加動量項。
(4)選擇經驗:
(4-1)基於經驗的手動調整。 通過嘗試不同的固定學習率,如0.1, 0.01, 0.001等,觀察迭代次數和loss的變化關系,找到loss下降最快關系對應的學習率。
(4-2)基於策略的調整。
(4-2-1)fixed 、exponential、polynomial
(4-2-2)自適應動態調整。adadelta、adagrad、ftrl、momentum、rmsprop、sgd
(5)學習率η的調整:學習速率在學習過程中實現自適應調整(一般是衰減)
(5-1)非自適應學習速率可能不是最佳的。
(5-2)動量是一種自適應學習速率方法的參數,允許沿淺方向使用較高的速度,同時沿陡峭方向降低速度前進
(5-3)降低學習速率是必要的,因為在訓練過程中,較高學習速率很可能陷入局部最小值。
參考文獻:
[1] Simon Haykin. 神經網路與機器學習[M]. 機械工業出版社, 2011.
[2] 訓練神經網路時如何確定batch的大小?
[3] 學習筆記:Batch Size 對深度神經網路預言能力的影響
[4] 機器學習演算法中如何選取超參數:學習速率、正則項系數、minibatch size. http://blog.csdn.net/u012162613/article/details/44265967
[5] 深度學習如何設置學習率 . http://blog.csdn.net/mao_feng/article/details/52902666
[6] 調整學習速率以優化神經網路訓練. https://zhuanlan.hu.com/p/28893986
[7] 機器學習中用來防止過擬合的方法有哪些?
[8] Neural Networks for Machine Learning by Geoffrey Hinton .
[9] 如何確定卷積神經網路的卷積核大小、卷積層數、每層map個數
[10] 卷積神經網路的卷積核大小、卷積層數、每層map個數都是如何確定下來的呢?
❹ 神經網路權值怎麼確定
神經網路的權值是通過對網路的訓練得到的。如果使用MATLAB的話不要自己設定,newff之後會自動賦值。也可以手動:net.IW{}= ; net.bias{}=。一般來說輸入歸一化,那麼w和b取0-1的隨機數就行。神經網路的權值確定的目的是為了讓神經網路在訓練過程中學習到有用的信息,這意味著參數梯度不應該為0。
參數初始化要滿足兩個必要條件:
1、各個激活層不會出現飽和現象,比如對於sigmoid激活函數,初始化值不能太大或太小,導致陷入其飽和區。
2、各個激活值不為0,如果激活層輸出為零,也就是下一層卷積層的輸入為零,所以這個卷積層對權值求偏導為零,從而導致梯度為0。
(4)如何確定神經網路參數擴展閱讀:
神經網路和權值的關系。
在訓練智能體執行任務時,會選擇一個典型的神經網路框架,並相信它有潛力為這個任務編碼特定的策略。注意這里只是有潛力,還要學習權重參數,才能將這種潛力變化為能力。
受到自然界早成行為及先天能力的啟發,在這項工作中,研究者構建了一個能自然執行給定任務的神經網路。也就是說,找到一個先天的神經網路架構,然後只需要隨機初始化的權值就能執行任務。研究者表示,這種不用學習參數的神經網路架構在強化學習與監督學習都有很好的表現。
其實如果想像神經網路架構提供的就是一個圈,那麼常規學習權值就是找到一個最優點(或最優參數解)。但是對於不用學習權重的神經網路,它就相當於引入了一個非常強的歸納偏置,以至於,整個架構偏置到能直接解決某個問題。
但是對於不用學習權重的神經網路,它相當於不停地特化架構,或者說降低模型方差。這樣,當架構越來越小而只包含最優解時,隨機化的權值也就能解決實際問題了。如研究者那樣從小架構到大架構搜索也是可行的,只要架構能正好將最優解包圍住就行了。
❺ 神經網路參數如何確定
神經網路各個網路參數設定原則:
①、網路節點 網路輸入層神經元節點數就是系統的特徵因子(自變數)個數,輸出層神經元節點數就是系統目標個數。隱層節點選按經驗選取,一般設為輸入層節點數的75%。如果輸入層有7個節點,輸出層1個節點,那麼隱含層可暫設為5個節點,即構成一個7-5-1 BP神經網路模型。在系統訓練時,實際還要對不同的隱層節點數4、5、6個分別進行比較,最後確定出最合理的網路結構。
②、初始權值的確定 初始權值是不應完全相等的一組值。已經證明,即便確定 存在一組互不相等的使系統誤差更小的權值,如果所設Wji的的初始值彼此相等,它們將在學習過程中始終保持相等。故而,在程序中,我們設計了一個隨機發生器程序,產生一組一0.5~+0.5的隨機數,作為網路的初始權值。
③、最小訓練速率 在經典的BP演算法中,訓練速率是由經驗確定,訓練速率越大,權重變化越大,收斂越快;但訓練速率過大,會引起系統的振盪,因此,訓練速率在不導致振盪前提下,越大越好。因此,在DPS中,訓練速率會自動調整,並盡可能取大一些的值,但用戶可規定一個最小訓練速率。該值一般取0.9。
④、動態參數 動態系數的選擇也是經驗性的,一般取0.6 ~0.8。
⑤、允許誤差 一般取0.001~0.00001,當2次迭代結果的誤差小於該值時,系統結束迭代計算,給出結果。
⑥、迭代次數 一般取1000次。由於神經網路計算並不能保證在各種參數配置下迭代結果收斂,當迭代結果不收斂時,允許最大的迭代次數。
⑦、Sigmoid參數 該參數調整神經元激勵函數形式,一般取0.9~1.0之間。
⑧、數據轉換。在DPS系統中,允許對輸入層各個節點的數據進行轉換,提供轉換的方法有取對數、平方根轉換和數據標准化轉換。
(5)如何確定神經網路參數擴展閱讀:
神經網路的研究內容相當廣泛,反映了多學科交叉技術領域的特點。主要的研究工作集中在以下幾個方面:
1.生物原型
從生理學、心理學、解剖學、腦科學、病理學等方面研究神經細胞、神經網路、神經系統的生物原型結構及其功能機理。
2.建立模型
根據生物原型的研究,建立神經元、神經網路的理論模型。其中包括概念模型、知識模型、物理化學模型、數學模型等。
3.演算法
在理論模型研究的基礎上構作具體的神經網路模型,以實現計算機模擬或准備製作硬體,包括網路學習演算法的研究。這方面的工作也稱為技術模型研究。
神經網路用到的演算法就是向量乘法,並且廣泛採用符號函數及其各種逼近。並行、容錯、可以硬體實現以及自我學習特性,是神經網路的幾個基本優點,也是神經網路計算方法與傳統方法的區別所在。
❻ 紲炵粡緗戠粶瓚呭弬鏁伴夋嫨
1銆佹墍浠ヨ佸敖閲忛夋嫨杈撳嚭鍏鋒湁zero-centered鐗圭偣鐨勬縺媧誨嚱鏁頒互鍔犲揩妯″瀷鐨勬敹鏁涢熷害銆
2銆佹瘮濡傚湪BP紲炵粡緗戠粶涓錛屽叾鐩鐨勪富瑕佷負浜嗛夋嫨妯″瀷鐨勫眰鏁般佺炵粡鍏冪殑嬋媧誨嚱鏁般佹瘡灞傛ā鍨嬬殑紲炵粡鍏冧釜鏁(鍗蟲墍璋撶殑瓚呭弬鏁)錛屾瘡涓灞傜綉緇滅炵粡鍏冭繛鎺ョ殑鏈緇堟潈閲嶆槸鍦ㄦā鍨嬮夋嫨(鍗矺鎶樹氦鍙夐獙璇)涔嬪悗錛岀敱鍏ㄩ儴鐨勮緇冩暟鎹閲嶆柊璁緇冦
3銆侀夊彇璁緇冪炵粡緗戠粶鏃跺厛閫夊ソbatchsize錛屽啀璋冨叾浠栫殑瓚呭弬鏁般傚苟涓斿疄璺典笂鏉ヨ達紝灝變袱涓鍘熷垯鈥斺攂atchsize鍒澶灝忥紝涔熷埆澶澶э紝鍏朵粬閮借屻傚洜涓哄悎閫傜殑batchsize鑼冨洿鍜岃緇冩暟鎹瑙勬ā銆佺炵粡緗戠粶灞傛暟銆佸崟鍏冩暟閮芥病鏈夋樉钁楃殑鍏崇郴銆
4銆佷綋緋葷粨鏋勫拰瓚呭弬鏁扮殑閫夋嫨閬靛驚銆傚湪絎涓杞涓錛屽畾浣嶅櫒妯″瀷搴旂敤浜庡浘鍍忎腑鏈澶-鏈灝忎腑蹇冩柟褰浣滅墿銆備綔鐗╃殑澶у皬璋冩暣鍒扮綉緇滆緭鍏ュぇ灝廼s220脳220銆傚崟嬈¢氳繃榪欎釜緗戠粶錛屾垜浠灝卞彲浠ュ緱鍒頒笂鐧句釜鍊欓夋棩鏈熸嗐
5銆佺劧鑰岋紝DNN瓚呴珮鐨勫噯紜鎬ф槸浠ヨ秴楂樼殑璁$畻澶嶆潅搴︿負浠d環鐨勩傞氬父鎰忎箟涓嬬殑璁$畻寮曟搸錛屽挨鍏舵槸GPU錛屾槸DNN鐨勫熀紜銆
6銆侀拡瀵笲P紲炵粡緗戠粶鍥炲綊榪囨嫙鍚堥棶棰橈紝寤鴻灝濊瘯浣跨敤L1姝e垯鍖栧拰dropout鏂規硶鏉ヨВ鍐熾傚傛灉闇瑕佽繘琛岀壒寰侀夋嫨錛屽垯鍙浠ヤ嬌鐢↙1姝e垯鍖栥傚傛灉闇瑕佹彁楂樼綉緇滅殑娉涘寲鑳藉姏錛屽垯鍙浠ヤ嬌鐢╠ropout鏂規硶銆
❼ 神經網路超參數選擇
深度學習模型通常由隨機梯度下降演算法進行訓練。隨機梯度下降演算法有許多變形:例如 Adam、RMSProp、Adagrad 等等。這些演算法都需要你設置學習率。學習率決定了在一個小批量(mini-batch)中權重在梯度方向要移動多遠。
如果學習率很低,訓練會變得更加可靠,但是優化會耗費較長的時間,因為朝向損失函數最小值的每個步長很小。
如果學習率很高,訓練可能根本不會收斂,損失函數一直處於波動中,甚至會發散。權重的改變數可能非常大,使得優化越過最小值,使得損失函數變得更糟。
訓練應當從相對較大的學習率開始。這是因為在開始時,初始的隨機權重遠離最優值。在訓練過程中,學習率應當下降,以允許細粒度的權重更新。
參考: https://www.jiqixin.com/articles/2017-11-17-2
批次大小是每一次訓練神經網路送入模型的樣本數。在 合理的范圍之內 ,越大的 batch size 使下降方向越准確,震盪越小,通常取值為[16,32,64,128]。
Batch_Size=全部數據集 缺點:
1) 隨著數據集的海量增長和內存限制,一次性載入所有的數據進來變得越來越不可行。
2) 以 Rprop 的方式迭代,會由於各個 Batch 之間的采樣差異性,各次梯度修正值相互抵消,無法修正。
Batch_Size = 1 缺點:
使用在線學習,每次修正方向以各自樣本的梯度方向修正,橫沖直撞各自為政,難以達到收斂。
在合理范圍內,增大 Batch_Size 有何好處?
1) 內存利用率提高了,大矩陣乘法的並行化效率提高。
2) 跑完一次 epoch(全數據集)所需的迭代次數減少,對於相同數據量的處理速度進一步加快。
3) 在一定范圍內,一般來說 Batch_Size 越大,其確定的下降方向越准,引起訓練震盪越小。
盲目增大 Batch_Size 有何壞處?
1) 內存利用率提高了,但是內存容量可能撐不住了。
2) 跑完一次 epoch(全數據集)所需的迭代次數減少,要想達到相同的精度,其所花費的時間大大增加了,從而對參數的修正也就顯得更加緩慢。
3) Batch_Size 增大到一定程度,其確定的下降方向已經基本不再變化。
參考: https://blog.csdn.net/juronghui/article/details/78612653
迭代次數是指整個訓練集輸入到神經網路進行訓練的次數,當測試錯誤率和訓練錯誤率相差較小,且測試准確率趨於穩定時(達到最優),可認為當前迭代次數合適;當測試錯誤率先變小後變大時則說明迭代次數過大了,需要減小迭代次數,否則容易出現過擬合。
用激活函數給神經網路加入一些非線性因素,使得網路可以更好地解決較為復雜的問題。參考: https://blog.csdn.net/tyhj_sf/article/details/79932893
它能夠把輸入的連續實值變換為0和1之間的輸出。
缺點:
1) 在深度神經網路中梯度反向傳遞時導致梯度爆炸和梯度消失,其中梯度爆炸發生的概率非常小,而梯度消失發生的概率比較大。
2) Sigmoid 的 output 不是0均值,使得收斂緩慢。batch的輸入能緩解這個問題。
它解決了Sigmoid函數的不是zero-centered輸出問題,然而梯度消失的問題和冪運算的問題仍然存在。
tanh函數具有中心對稱性,適合於有對稱性的二分類
雖然簡單,但卻是近幾年的重要成果,有以下幾大優點:
1) 解決了梯度消散問題 (在正區間)
2)計算速度非常快,只需要判斷輸入是否大於0
3)收斂速度遠快於sigmoid和tanh
ReLU也有幾個需要特別注意的問題:
1)ReLU的輸出不是zero-centered
2)Dead ReLU Problem,指的是某些神經元可能永遠不會被激活,導致相應的參數永遠不能被更新。有兩個主要原因可能導致這種情況產生: (1) 非常不幸的參數初始化,這種情況比較少見 (2) learning rate太高導致在訓練過程中參數更新太大,不幸使網路進入這種狀態。解決方法是可以採用Xavier初始化方法,以及避免將learning rate設置太大或使用adagrad等自動調節learning rate的演算法。
為了解決Dead ReLU Problem,提出了將ReLU的前半段設為 αx 而非 0 ,如 PReLU 。
1)深度學習往往需要大量時間來處理大量數據,模型的收斂速度是尤為重要的。所以,總體上來講,訓練深度學習網路盡量使用zero-centered數據 (可以經過數據預處理實現) 和zero-centered輸出。所以要盡量選擇輸出具有zero-centered特點的激活函數以加快模型的收斂速度。
2)如果使用 ReLU,那麼一定要小心設置 learning rate,而且要注意不要讓網路出現很多 「dead」 神經元,如果這個問題不好解決,那麼可以試試 Leaky ReLU、PReLU 或者 Maxout.
3)最好不要用 sigmoid,你可以試試 tanh,不過可以預期它的效果會比不上 ReLU 和 Maxout.
公式: https://www.cnblogs.com/xiaobingqianrui/p/10756046.html
優化器比較: https://blog.csdn.net/weixin_40170902/article/details/80092628
❽ BP神經網路模型各個參數的選取問題
樣本變數不需要那麼多,因為神經網路的信息存儲能力有限,過多的樣本會造成一些有用的信息被丟棄。如果樣本數量過多,應增加隱層節點數或隱層數目,才能增強學習能力。 一、隱層數 一般認為,增加隱層數可以降低網路誤差(也有文獻認為不一定能BP神經網路模型各個參數的選取問題
❾ 通過哪些參數看神經網路擬合出來的函數效果神經網路擬合時如何確定隱藏的節點數
主要看均方誤差和其百分比(准確率)。假如你擬合出來是ui,計算(yi-ui)^2的平均值,然後計算這個平均值與yi平均值的比(也就是均方誤差百分比),當然用1減去這個百分比就是准確率了。一般也會畫一幅圖,把yi和ui分別用不同的顏色或者符號表示出來,直觀對比。
擬合時的隱含層節點數目前沒有一個通行的公式進行確定,只能憑借經驗和試湊。一般情況下,問題的復雜程度(非線性程度和維度)越高,隱含層節點數越多。這里介紹一個小經驗:先用不太大的節點數進行預測,如果增加節點數測試集准確率和訓練集准確率都有所提升,則應該繼續增加。如果增加節點數測試集准確率增加很不明顯,而訓練集准確率還是有所提升,則不應該繼續增加,當前的就是很理想的,繼續增加節點數只會起到反效果。