1. 程式人生 > >cs231n斯坦福基於卷積神經網路的CV學習筆記(二)神經網路訓練細節

cs231n斯坦福基於卷積神經網路的CV學習筆記(二)神經網路訓練細節

五,神經網路

注意點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

  1. 資料預處理可用PCA,SVD等方法 . 權重初始化,待深入,很重要,如Batch Nomalization

  2. 神經網路隱藏層(hidden layer)

  3. 訓練資料要過飽和Overfit

  4. 超引數調整學習速率,正則化引數(以及差量),更新方式

  5. Track the ratio of weight updates / weight magnitudes:

訓練神經網路的四個步驟(樣本(標準化,初始化權重等),向前傳播(得到損失),向後傳播(得到每個權重的梯度),用梯度更新【梯度下降】引數(w等))

訓練神經網路的四個步驟

啟用函式提供了更多的非線性的資料儲存(處理)方式。

在這裡插入圖片描述

下面所講 在這裡插入圖片描述

1,其他引數更新方法,針對SGD更新較慢(y軸快水平慢,波動式前進),但一般還是預設用SGD

  • 1,moumentum更新,收斂更快(mu為超引數,v為速度(可初始化為0))好mo
  • 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

自學

卷積神經網路

詳解見下一章