① 卷積神經網路參數解析
(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中BP神經網路如何設置初始權重
因為初始值(初始權值和閥值)都在x這個向量中,x(n,1)的長度n為:n=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum
其中inputnum*hiddennum是輸入層到隱含層的權值數量,hiddennum是隱含層神經元個數(即隱含層閥值個數),hiddennum*outputnum是隱含層到輸出層權值個數,outputnum是輸出層神經元個數(即輸出層閥值個數);
③ 神經網路權值怎麼確定
神經網路的權值是通過對網路的訓練得到的。如果使用MATLAB的話不要自己設定,newff之後會自動賦值。也可以手動:net.IW{}= ; net.bias{}=。一般來說輸入歸一化,那麼w和b取0-1的隨機數就行。神經網路的權值確定的目的是為了讓神經網路在訓練過程中學習到有用的信息,這意味著參數梯度不應該為0。
參數初始化要滿足兩個必要條件:
1、各個激活層不會出現飽和現象,比如對於sigmoid激活函數,初始化值不能太大或太小,導致陷入其飽和區。
2、各個激活值不為0,如果激活層輸出為零,也就是下一層卷積層的輸入為零,所以這個卷積層對權值求偏導為零,從而導致梯度為0。
(3)神經網路怎麼改變權重擴展閱讀:
神經網路和權值的關系。
在訓練智能體執行任務時,會選擇一個典型的神經網路框架,並相信它有潛力為這個任務編碼特定的策略。注意這里只是有潛力,還要學習權重參數,才能將這種潛力變化為能力。
受到自然界早成行為及先天能力的啟發,在這項工作中,研究者構建了一個能自然執行給定任務的神經網路。也就是說,找到一個先天的神經網路架構,然後只需要隨機初始化的權值就能執行任務。研究者表示,這種不用學習參數的神經網路架構在強化學習與監督學習都有很好的表現。
其實如果想像神經網路架構提供的就是一個圈,那麼常規學習權值就是找到一個最優點(或最優參數解)。但是對於不用學習權重的神經網路,它就相當於引入了一個非常強的歸納偏置,以至於,整個架構偏置到能直接解決某個問題。
但是對於不用學習權重的神經網路,它相當於不停地特化架構,或者說降低模型方差。這樣,當架構越來越小而只包含最優解時,隨機化的權值也就能解決實際問題了。如研究者那樣從小架構到大架構搜索也是可行的,只要架構能正好將最優解包圍住就行了。
④ BP神經網路如何自定義權重值
0到1之間隨即定,然後根據最速下降法或者遺傳演算法對其進行優化即可。