cs231n斯坦福基於卷積神經網路的CV學習筆記(二)神經網路訓練細節
阿新 • • 發佈:2018-12-14
五,神經網路
注意點part1
- 例項:邏輯迴歸二層神經網路訓練函式
- 使用權重w和偏差值biase計算出第一個隱含層h,然後計算損失,評分,進行反向傳播回去
- 多種常用啟用函式(一般預設max(0,x)),如sigmoid函式具有飽和區梯度0,非零點中心,計算x複雜等缺點,max(Relu)函式也有缺點(非中心對稱,初始化不佳(如-10)無法啟用,注意學習速率不要太高),leaky Relu優化max(0.01x,x),其中0.01為α修正引數可調,maxout集合Lrelu,Relu的優點,只是引數變多了。
- 少量資料可用L-BFGS優化,資料量大的一般用不到
- 神經網路的深度(層數,資料越複雜越多越好,簡單則不需要太多)和寬度
注意點part2
-
資料預處理可用PCA,SVD等方法 . 權重初始化,待深入,很重要,如Batch Nomalization
-
神經網路隱藏層(hidden layer)
-
訓練資料要過飽和Overfit
-
超引數調整學習速率,正則化引數(以及差量),更新方式
-
Track the ratio of weight updates / weight magnitudes:
訓練神經網路的四個步驟(樣本(標準化,初始化權重等),向前傳播(得到損失),向後傳播(得到每個權重的梯度),用梯度更新【梯度下降】引數(w等))
– 啟用函式提供了更多的非線性的資料儲存(處理)方式。
下面所講
– 1,其他引數更新方法,針對SGD更新較慢(y軸快水平慢,波動式前進),但一般還是預設用SGD
- 1,moumentum更新,收斂更快(mu為超引數,v為速度(可初始化為0))好
- 2 nestero momentum (Nag)好好 3,adaGrad update(一般在凸問題中用,回停止學習-0) 針對不同方向的梯度調整快慢(補償)–通過分母(梯度平方),大慢小快 3.2改進版(不會停止學習) 1e-7是平滑因子,只是未來防止它變0 4,另一種 5,Adam更新(結合MOMENTEUM和RMSprop-like)很好,可以經常採用
beta是超引數0.9,0.995
1.2,優化學習速率(超引數,可用衰減函式控制(一階函式))
其他優化方法
二階函式,求出梯度(碗的曲率),知道怎麼走就不需要學習速率更新就知道怎麼到達最低點了,收斂(但hessian矩陣太大求逆計算量巨大,而基本不採用) 再優化(資料集不大時可用)一般也不用
總結:一般都用Adam來優化
隨機失活dropput(regularization),簡單但是效果機器號
好方法,可以防止過擬合等 P=0.5
梯度檢查gradient checking
自學
卷積神經網路
詳解見下一章