深度學習第二週--第三課超參數調優、Batch正則化理論

前言

參考念師
在本篇文章中,將瞭解機器學習中的超參數調優、batch正則化及深度學習框架。
主要包括:

  • 超參數調試經驗
  • 深層神經網絡中隱藏層的歸一化
  • batch正則化
  • softmax分類迴歸問題
  • 深度學習框架簡介

超參數調試經驗

超參數有哪些?

  • α\alpha:學習率
  • β\beta:momentum梯度下降法
  • β1=0.9,β2=0.999,ξ=108\beta 1=0.9,\beta 2=0.999,\xi=10^{-8}:adam優化算法
  • 網絡層數
  • 每層中神經元數量
  • decay_rate:學習速率衰減速度
  • mini-batch size

參數調優?

  • 機器學習:兩點構成平面,在平面上均勻選擇一系列電,並找其中最優點。

這個方法在參數較少的時候比較實用。
在這裏插入圖片描述

  • 深度學習:兩點構成平面,在平面上選擇一系列點,先使用對數標尺,然後隨機選擇,最後由粗粒度到細粒度。
    在這裏插入圖片描述

爲何要使用對數標尺?
以調試超參數學習速率爲例子,假設α\alpha=0.0001,…,1。此時,如果隨機選擇,大約會有90%的點落在0.1到1之間,而只有10%的點在0.0001到0.1之間,所以使用對數標尺,
在這裏插入圖片描述

r = -4 * np.random.rand()
a = 10 ** r

爲何要隨機選擇?
因爲在深度學習中,無法確定哪些超參數的影響更大,而隨機選擇點,可以達到在每個維度上有更多的值進行選擇,從而得到相對更好的結果。
步驟

  • 首先在整個空間中隨機選擇一系列點,並找出其中的相對較優點集中的區域。
  • 在該區域中隨機選擇一系列點,並找出其中的相對較優點集中的區域。
    在這裏插入圖片描述

討論:指數加權平均中的參數β\betaβ\beta取值範圍在0.90.999,則1-$\beta$取值範圍在0.00010.1之間。

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

建議

  • 隨着數據集或樣本等的變化,之前已經調整好的參數可能在一段時間後不再適應,因此每個幾個月建議重新調整/測試一下參數。
  • 參數訓練的兩種方式:1、babysitting適應於有足夠大的數據但是沒有充足的計算資源的情況,每次訓練一個模型,並在訓練的過程中不斷觀察結果並隨時進行參數調整。2、在有充足的計算資源情況下,可以同時訓練某模型在不同的參數情況下的效果,然後從中選擇合適的超參數對應的模型。

深層神經網絡中隱藏層的歸一化

原理

將模型的最優值範圍變得更規範,提高訓練過程,更快找到最優值。通常對z[l]z^{[l]}歸一化

公式

假設z[l]z^{[l]}包含元素爲z[1],,z[m]z^{[1]},\dots,z^{[m]}
u=1miz[i]u = \frac{1}{m}\sum_i z^{[i]}
σ=fraclmi(ziu)2\sigma=fraclm \sum_i(z_i - u)^2
znorm[i]=z[i]uσ2+ξz_{norm}^{[i]}=\frac{z^{[i]}-u}{\sqrt{\sigma^2+\xi}}
z~[i]=Υznorm[i]+β\tilde z^{[i]}=\Upsilon z_{norm}^{[i]}+\beta

batch正則化

原理

將模型的最優值範圍變得更規範,提升訓練速度,更快找到最優值。

其它原因

  • 魯棒性強:在每個隱藏層進行歸一化有助於削弱之前層的一些特殊值變化帶來的影響,從而保證整個神經網絡有更強的魯棒性。
  • 起到正則的效果:batch歸一化常與mini-batch方法結合,因爲每次迭代只是由其中一部分數據得到,存在一定程度的波動。通過添加一定程度的噪聲(均值、方差),可以起到與dropout類似的效果。

流程圖

在這裏插入圖片描述
通過輸入x得到z之後,先進行batch歸一化後再去計算a。每一層中需要訓練的參數除了w、b,還新增了β,Υ\beta,\Upsilon。在實踐中,batch歸一化通常與mini-batch結合使用。
注意:
在上述討論中,始終圍繞mini-batches方法來學習batch歸一化基本理論和實踐,在應用或測試的過程中,每次傳入的值可能是一個樣本,而不是mini-batch,因此,在測試中,每次輸入只有一個樣本,計算均值和方差沒有意義,爲了將網絡應用於測試,我們需要使用指數加權平均法來估算均值和方差:根據訓練集中的數據來估算整個樣本集的均值和方差,然後在測試中,直接使用訓練樣本集估算得到的均值和方差。

softmax分類迴歸問題

意義?

解決多分類問題

公式

z[L]=w[L]a[L1]+b[L]z^{[L]}=w^{[L]}a^{[L-1]}+b^{[L]}
t=ez[L]a[L]=ez[L]j=1Ctit=e^{z^{[L]}}a^{[L]}=\frac{e^{z^{[L]}}}{\sum_{j=1}^C t_i}
舉例講解:
假設:
z[L]=[5,2,1,3]z^{[L]}=[5,2,-1,3]
則:
t=[e5,e2,e1,e3]=[148.4,7.4,0.4,20.1]t=[e^5,e^2,e^{-1},e^3]=[148.4,7.4,0.4,20.1]
j=14ti=148.4+7.4+0.4+20.1=176.3\sum_{j=1}^4 t_i=148.4+7.4+0.4+20.1=176.3
a[L]=[148.4/176.3,7.4/176.3,0.4/176.3,20.1/176.3]=[0.842,0.042,0.002,0.114]a^{[L]}=[148.4/176.3,7.4/176.3,0.4/176.3,20.1/176.3]=[0.842,0.042,0.002,0.114]
如何對softmax網絡進行訓練?
L(y^,y)=j=1Cyilogy^jL(\hat y,y)=-\sum_{j=1}^C y_i log \hat y_j
假設y=[0,1,0,0],而y^=[0.3,0.2,0.1,0.4]\hat y=[0.3,0.2,0.1,0.4],則
L(y^,y)=y2logy^2L(\hat y,y)=-y_2 log \hat y_2
如果希望L儘可能小,則y2y_2儘可能大,對於一個batch來說,代價函數J應該怎麼計算呢?
J(w,b)=1mi=1mL(y^(i),y(i))J(w,b)=\frac{1}{m}\sum_{i=1}^mL(\hat y^{(i)},y^{(i)})

深度學習框架簡介

在這裏插入圖片描述
如何選擇框架?

  • 易用,易編程
  • 計算效率高
  • 是否會長時間開源
  • 支持的語言
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章