1. 程式人生 > >DNN前向、反向傳播及正則化

DNN前向、反向傳播及正則化

1.損失函式和啟用函式的選擇

1.1 均方差損失函式+sigmoid啟用函式

s i g m o i d (

z ) = 1 1 + e
z
sigmoid(z)=\frac{1}{1+e^{-z}}
s i g
m o i d ( z ) = s i g m o i d ( z ) ( 1 s i g m o i d ( z ) ) sigmoid^{'}(z)=sigmoid(z)(1-sigmoid(z))

假設輸出是連續可導的值
演算法收斂速度慢

1.2 交叉熵損失函式+sigmoid啟用函式

假設輸出是連續可導的值
交叉熵損失函式代替均方差損失函式,改進DNN演算法收斂速度

1.3 對數似然損失函式+softmax啟用函式

處理多分類問題

1.4 梯度爆炸梯度消失+ReLU啟用函式

在反向傳播的過程中,由於我們使用矩陣求導的鏈式法則,有一連串連乘。

  • 如果連乘的數字都是小於1,則梯度越來越小,直到消失
    解決:調整初始化引數
  • 如果連乘的數字都是大於1,則梯度越來越大,導致爆炸
    解決:使用ReLU啟用函式 R e L U ( x ) = m a x ( 0 , x ) ReLU(x)=max(0,x)

2.DNN前向傳播

DNN的前向傳播演算法就是利用若干個權重係數矩陣W,偏倚向量b和輸入向量x進行一系列線性運算和啟用運算,從輸入層開始,一層層向後計算,直到輸出層,得到輸出結果
在這裡插入圖片描述

3.DNN反向傳播

DNN的反向傳播演算法就是對DNN的損失函式用梯度下降法進行迭代優化求極小值的過程。

4.DNN的正則化

4.1. L1,L2正則化

範數規則化的兩個作用:

  • 保證模型儘可能的簡單,避免過擬合
    引數值大小和模型複雜度是成正比的。引數過多會導致模型複雜度上升,越複雜的模型,越是會嘗試對所有的樣本進行擬合,甚至包括一些異常樣本點。
  • 約束模型特性,加入一些先驗知識,例如稀疏、低秩​等。

L0範數

L0是指向量中非0的元素的個數。

如果我們用L0範數來規則化一個引數矩陣W的話,就是希望W的大部分元素都是0。即讓引數W是稀疏的。稀疏的好處:

  • 簡化模型,避免過擬合;
  • 引數變少可以提高可解釋性

但是,L0範數的最優化問題是一個NP hard問題,理論證明,L1範數是L0範數的最優凸近似,因此通常使用L1範數來代替。

L1範數

L1範數是指向量中各個元素絕對值之和。

L1正則化之所以可以防止過擬合,是因為它能產生等於0的權值,即產生稀疏的效果。引數值大小和模型複雜度是成正比的。因此複雜的模型,其L1範數就大,最終導致損失函式就大,說明這個模型就不夠好。

L2範數

L2範數即歐式距離。

L2正則化之所以可以防止過擬合,是因為它是讓各個引數接近於0。越小的引數說明模型越簡單,越簡單的模型越不容易產生過擬合現象。

L1稀疏、L2平滑

  • 假定 w i > 0 w_i>0 ,L1的權值每次更新都固定減少一個特定的值,那麼經過若干次迭代之後,權值就有可能減少到0。 w i = w i η w_i=w_i-\eta 。( w i < 0 0 w_i<0時則是增加到0 )。

  • L2的權值更新公式為 w i = w i η w i wi= wi- η * w_i ,假設 η = 0.5 \eta=0.5 ,也就是說權值每次都等於上一次的1/2,那麼,雖然權值不斷變小,但是因為每次都等於上一次的一半,所以很快會收斂到較小的值但不為0。

因此

  • L1能產生等於0的權值,即產生稀疏的效果
  • L2能迅速得到比較小的權值,但是難以收斂到0,即產生平滑的效果 。

4.2. 整合學習

類似隨機森林,用若干個DNN網路

4.3. dropout正則化

在訓練模型時,隨機去掉一部分隱藏層的神經元

4.4. 資料增強

增加訓練資料
交叉驗證法

  • 用於評估模型的預測效能,尤其是訓練好的模型在新資料上的表現,可以在一定程度上減小過擬合。
  • 從有限的資料中獲取儘可能多的有效資訊。