DNN前向、反向傳播及正則化
1.損失函式和啟用函式的選擇
1.1 均方差損失函式+sigmoid啟用函式
假設輸出是連續可導的值
演算法收斂速度慢
1.2 交叉熵損失函式+sigmoid啟用函式
假設輸出是連續可導的值
交叉熵損失函式代替均方差損失函式,改進DNN演算法收斂速度
1.3 對數似然損失函式+softmax啟用函式
處理多分類問題
1.4 梯度爆炸梯度消失+ReLU啟用函式
在反向傳播的過程中,由於我們使用矩陣求導的鏈式法則,有一連串連乘。
- 如果連乘的數字都是小於1,則梯度越來越小,直到消失
解決:調整初始化引數 - 如果連乘的數字都是大於1,則梯度越來越大,導致爆炸
解決:使用ReLU啟用函式
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平滑
-
假定 ,L1的權值每次更新都固定減少一個特定的值,那麼經過若干次迭代之後,權值就有可能減少到0。 。( )。
-
L2的權值更新公式為 ,假設 ,也就是說權值每次都等於上一次的1/2,那麼,雖然權值不斷變小,但是因為每次都等於上一次的一半,所以很快會收斂到較小的值但不為0。
因此
- L1能產生等於0的權值,即產生稀疏的效果。
- L2能迅速得到比較小的權值,但是難以收斂到0,即產生平滑的效果 。
4.2. 整合學習
類似隨機森林,用若干個DNN網路
4.3. dropout正則化
在訓練模型時,隨機去掉一部分隱藏層的神經元
4.4. 資料增強
增加訓練資料
交叉驗證法
- 用於評估模型的預測效能,尤其是訓練好的模型在新資料上的表現,可以在一定程度上減小過擬合。
- 從有限的資料中獲取儘可能多的有效資訊。