吳恩達Coursera深度學習課程 deeplearning.ai (2-3) 超參數調試、Batch 正則化和程序框架--課程筆記

相關課件:https://download.csdn.net/download/haoyutiangang/10496494

3.1 調試處理

  • 參數少時網格點
  • 參數多時網絡隨機點
  • 定位小區域後再在小區域進行網絡隨機點

3.2 爲超參數選擇合適的範圍

  1. 選擇超參數時在一定範圍內均勻隨機取值,比如神經元節點個數,隱藏層的層數等
  2. 有些超參數不適合均勻隨機取值,我們需要做變換後再進行均勻隨機取值,然後再變換回去,最常用的是指數變換和對數變換

例如:學習率 α 範圍爲0.0001,…,1 此時均勻隨機取值並不合理,因爲90%會落到0.1-1之間;應該取值[0.0001, 0.001, 0.01, 0.1, 1]

r = -4 * np.random.rand() # r in [-4,0]
learning_rate = 10 ** r # 10^r

又比如指數加權平均的超參數beta, 0.9,…,0.999,均勻取值也不合理,這裏我們使用1-β , 然後採取對數變換進行取值

r = -2 * np.random.rand() -1 # r in [-3,1]
beta = 1-10 ** r # 1-10^r

3.3 超參數訓練的實踐:pandas VS Caviar

在超參數調試的實際操作中:
- 熊貓模式(panda):在計算資源有限的情況下,使用第一種,僅調試一個模型,每天不斷優化。
- 魚子醬模式(Caviar):在計算資源充足的情況下,使用第二種,同時並行調試多個模型,選取其中最好的模型。

image

3.4 正則化網絡的激活函數

在邏輯迴歸中,我們將輸入特徵進行歸一化,可以加速模型的訓練。
那麼對於更深層次的神經網絡,我們是否可以歸一化隱藏層的輸出 A 或者激活函數前的 Z 來加速神經網絡的訓練過程呢,答案是肯定的。

常用的方式是將隱藏層的激活函數前的 Z 進行歸一化

Batch Norm 的實現

μ=1mi=1mz(i)σ2=1mi=1m(z(i)μ)2znorm(i)=z(i)μσ2+ε

這裏所有的 Z 的分量都是標準正太分佈,有時候我們不希望隱藏層的單元總是如此,比如 simoid 時我們希望均值在0.5而不是0,爲了滿足更多不同的分佈,我們再對計算後的 Znorm 進行變換計算。
Z~(i)=γznorm(i)β

添加了兩個超參數對 Z 的分佈進行變換。

3.5 將 Batch Norm 擬合進神經網絡

對每一層的每一個 mini-batch 的 Z 進行batch norm 計算,之後替換 Z 進行接下來的計算。

注意 W b γ β 四種參數中,因爲要做歸一化處理,歸一化後均值爲0, 再由 gamma 和 beta 進行縮放,所以 b 值沒有意義,可以去掉或者設置爲0。

batch norm 中只剩了參數 W γ β :

fort=1num_of_miniBatchznorm(i)=z(i)μσ2+εcompute:dW[l],dγ[l],dβ[l]Wl:=W[l]αdW[l]γl:=γ[l]αdγ[l]βl:=β[l]αdβ[l]

與Mini-batch 梯度下降法相同,Batch Norm同樣適用於momentum、RMSprop、Adam的梯度下降法來進行參數更新。

框架中僅需依據代碼就可以實現 batch-norm

tf.nn.batch_normalization

3.6 Batch Norm 爲什麼奏效

  1. 通過對隱藏層歸一化,使得函數每一層都類似一個標準的碗形,下降速度更快
  2. 限制了前層的參數更新導致對後面網絡數值分佈程度的影響,使得輸入後層的數值變得更加穩定;削弱了前層參數與後層參數之間的聯繫,使得網絡的每層都可以自己進行學習,相對其他層有一定的獨立性,這會有助於加速整個網絡的學習。

    (例如黑白貓識別的程序運用到彩色貓的識別的時候,輸入數據變化了,但是均值和方差也會跟着同步變化,這樣變換後的 Z 基本保持不變,從而保證了模型的穩定性)

  3. Batch Norm還有輕微的正則化效果(mini-batch 的噪聲)。

3.7 測試時的 Batch Norm

訓練過程中,我們是在每個Mini-batch使用Batch Norm,來計算所需要的均值μ和方差σ2。但是在測試的時候,我們需要對每一個測試樣本進行預測,無法計算均值和方差。

可以利用指數加權平均的方法來跟蹤每一個 mini-batch 中的 μσ , 然後測試時用加權平均後的 μσ 進行 Z 的歸一化,再用訓練時得到的每一層的 γβ 進行變換。

3.8 Softmax 迴歸

在多分類問題中,有一種 logistic regression的一般形式,叫做Softmax regression。Softmax迴歸可以將多分類任務的輸出轉換爲各個類別可能的概率,從而將最大的概率值所對應的類別作爲輸入樣本的輸出類別。

softmax: 先對一項求 e 的指數,再求各項所佔百分比

C:numofoutputZ[l]=W[l]a[l]+b[l]t=eZ[l]a[l]=eZ[l]j=1ctjai[l]=eZi[l]j=1ctij

3.9 訓練一個 Softmax 分類器

Loss Function:

L(y^,y)=j=1cyjlogy^j

Cost Function:
J(W[1],b[1],...)=1mi=1mL(y^(i),y(i))

梯度計算公式:
JZ[l]=dZ[l]=y^y

3.10 深度學習框架

選擇深度學習框架的原則

  • 編程簡單(簡單的開發和部署)
  • 執行速度快
  • 真正開源(擁有良好管理的開源框架)

3.11 TensorFlow

計算 y = x^2 - 10X + 25 中 x 的值使得 y 最小

image

編程示例

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章