1. 程式人生 > >【資料極客】Week3_訓練深度神經網路的技巧

【資料極客】Week3_訓練深度神經網路的技巧

Tips for Training DNN 訓練深度神經網路技巧

【李巨集毅2017秋天 課程】

這裡寫圖片描述

1 Vanishing Gradient Problem 梯度消失問題

這裡寫圖片描述

在輸入層部分,即便有很大的變化,通過 Sigmoid 啟用函式之後, 輸出結果都會被對映在0到1之間,對於輸出層對損失函式的微分是比較小的,造成梯度消失問題。

2 ReLU (Rectified Linear Unit)

  • ReLU
    這裡寫圖片描述
    • 計算速度快
    • 生物學理由
    • 無窮多的帶有不同偏置的 sigmoid 函式
    • 解決了梯度消失問題

如果某個 neuron 輸出是0, 說明該節點是無用的, 可以直接從網路中去掉, 剩下的 非零 節點就是線性的。

結果函式是ReLU的話, 那麼區域性網路是線性的, 整體網路是非線性的。

  • ReLU - variant
    這裡寫圖片描述

3 Maxout

這裡寫圖片描述

選取每一組的最大的輸出值作為最終的輸出結果。放多少個元素為一組, 自己可以調參。

這裡寫圖片描述

ReLU是一個特殊的Maxout, 但是Maxout相較於ReLU的優勢在於,Maxout可以根據不同的引數學習出不同的啟用函式(Activition Function)

右邊綠色折線部分就是學習出來的啟用函式。

4 Adaptive Learning Rate

Adagrad

具體可參照 1.2 節內容

在Adagrad的更新規則中,學習率 η

會隨著每次迭代根據歷史梯度的變化而變化。

ηt=ηt+1

σt=1t+1ti=0(gi)2

wt+1=wtηtσtgt

分子分佈約分之後得到 wt+1=wtηti=0(gi)2gt

ti=0(gi)2 代表前 t 步梯度平方的累加和。

這裡分母可能為0, 所以在分母位置加上一個極小值 ϵ , 變為wt+1=wtηti=0(gi)2+ϵgt

可以看到演算法不斷的迭, 分母會越來越大, 整體的學習率會越來越小。

#### RMSProp

RMSProp 是進階版的 Adagrad

這裡寫圖片描述
Adagrad不同的是在分母位置, 累加之前幾部的梯度平方和的時候, 進行了加權求和。

其中 a 引數是可以自己調節大小的。

5 Momentum 動量

這裡寫圖片描述

其中 vi 是前 i 步的梯度加權求和:

(θ0), (θ1),(θ2),……, (θi1)

v0=0

v1=η(θ0)

v2=λη(θ0)η(θ1)

…..

6 Adam

Adam = RMSProp + Momentum
這裡寫圖片描述

7 Early Stopping 提早終止

這裡寫圖片描述
需要驗證集 Validation Set 確定 Testing Set 中的最小的損失函式值是多少。

8 Regularization 正則化

這裡寫圖片描述
- New loss function to be minimized 新的最小化損失函式

找到一組權重, 不僅要最小化 Original Loss 的損失函式同時還要讓接近0

L(θ)Original Loss,可以是最小二乘法最小化損失函式、也可以是交叉熵損失函式。。。

L=L(θ)+λ12θ2

右下角,是當損失函式為 L2 2範數的時候, 正則化項的形式, 通常在計算的時候不考慮正則化項。

這裡寫圖片描述
η 是學習率,其數值很小,λ 通常也會設定為一個比較小的值。
所以 ηλ 這兩個很小的數值相乘結果也非常小。

1ηλ 的結果接近於 1 , 比如: 0.99

每一個引數在update之前都會乘上一個接近於 1 的數, 這也就是所有的權值引數為什麼越來越小的緣故, 權值衰減。

  • 規則化項用 L1 範數的時候

L=L(θ)+λ12θ1

這裡寫圖片描述

sgn(w) 指的是:當 w>0 的時候, sgn(w)=1 , 當 w<0 的時候 sgn(w)=1 , 當