1. 程式人生 > >deeplearning.ai第二課第一週:深度學習實用技巧

deeplearning.ai第二課第一週:深度學習實用技巧

1 訓練/驗證/測試集

機器學習/深度學習中,一般會把資料集分為訓練集(training set)、驗證集(validation set/development set,dev set)、測試集(test set)三部分。

訓練集用於對模型進行訓練;驗證集用於對單一指標進行確定,如選擇演算法,確定引數;測試集用於對最終的模型效能進行評估。

傳統機器學習中,樣本量有限,可能是100,1000,10000條資料,一般把資料集按照 訓練集:測試機 = 7:3 或者 訓練集:驗證集:測試集 = 6:2:2 的比例進行劃分;但是在深度學習中,樣本集規模很大,沒必要劃分特別大的驗證集和測試集,因此一般劃分比例為 訓練集:驗證集:測試集 = 98:1:1 或者 訓練集:驗證集:測試集 = 99.5:0.25:0.25 進行劃分。

一定要保證驗證集和測試集服從相同的資料分佈。

在很多實際應用中,以計算機視覺任務為例,訓練集都是很多的高清影象,但是驗證集和測試集都是一些使用者隨意拍攝的影象,質量相對差很多。在這些情況下,一定要保證驗證集和測試集符合相同的資料分別。因為,驗證集的目的是根據不同演算法/引數在驗證集上的效能進行演算法/引數的選擇,如果驗證集的資料分佈和測試集的不一致,那麼我們最終依據驗證集選擇的演算法/引數並不能很好的匹配測試集,就會造成模型的實際應用效果較差。

很多時候沒有測試集,只有訓練集和驗證集也無關緊要。這種情況下,在訓練集上訓練不同的演算法/引數,在驗證集上進行測試,以其在測試集上的效能優劣作為選擇依據也是可以的。很多情況下,如果只有訓練集/驗證集,人們也一般就把驗證集叫做測試集。

搭建訓練/驗證/測試集可以加速模型的整合,也可以更有效地衡量模型的偏差和方差,從而幫助我們更有效地選擇合適的方法來優化演算法。

2 偏差&方差

在這裡插入圖片描述

前置條件 貝葉斯最優估計誤差是1% 貝葉斯最優估計誤差是1% 貝葉斯最優估計誤差是15%
訓練集誤差 1% 15% 15% 15%
驗證集誤差 16% 17% 30% 17%
結論 高方差、過擬合 高偏差、欠擬合 高偏差、高方差 很接近最優模型

高偏差且高方差是模型整體結構很簡單,對資料整體擬合程度較差,但同時又對部分資料擬合程度特別高。

結論:

  • 通過對比貝葉斯最優估計誤差和訓練集誤差之間的差值,可以確定是否發生了高偏差(欠擬合);
  • 通過對比訓練集誤差和驗證集誤差之間的差值,可以確定是否發生了高方差(過擬合)。

訓練模型過程中的思考思路:

訓練完的模型偏差較大? ------------- Y -------------> 使用規模更大的網路
|
N
|
訓練完的模型方差較大? ------------- Y ------------> 使用更多的訓練資料/正則化
|
N
|
Done

3 正則化

正則化可以減少模型的方差,防止過擬合

3.1 L2正則化

logistic regression:

引數: w R n x , b R w \in R^{n_x},b \in R

目標: min w J ( w , b ) = min w 1 m i = 1 m y ( i ) log a ( i ) + ( 1 y ( i ) ) log ( 1 a ( i ) ) \min_wJ(w,b) = \min_w\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log a^{(i)} + (1-y^{(i)})\log (1 - a^{(i)})

新增正則化: min w J ( w , b ) = min w 1 m i = 1 m y ( i ) log a ( i ) + ( 1 y ( i ) ) log ( 1 a ( i ) ) + \min_wJ(w,b) = \min_w\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log a^{(i)} + (1-y^{(i)})\log (1 - a^{(i)})+ 正則化項

λ \lambda 是正則化係數,控制正則化的強度,是一個超引數,可以通過不同值在驗證集上的效能進行選擇。
L2正則化: λ 2 m w 2 2 = λ 2 m j = 1 n x w j 2 = λ 2 m w T w \frac{\lambda}{2m}||w||_2^2 =\frac{\lambda}{2m}\sum_{j=1}^{n_x}w_j^2 = \frac{\lambda}{2m}w^Tw ,最終權重傾向於比較平衡且接近於0,最常用;
L1正則化: λ m w 1 = λ m j n x w j    ( w j 0 ) \frac{\lambda}{m}||w||_1 = \frac{\lambda}{ m}\sum_{j}^{n_x}w_j~~(w_j \neq 0) ,最終權重比較稀疏,即包含很多0值。

正則化一般不考慮偏置向量,這是因為如果w相比b,引數量要大得多,若通過新增對w的正則化解決了過擬合問題,那麼忽略b也可以。當然也可以新增b的正則化,只不過一般大家都忽略它。

神經網路
引數: w [ 1 ] , b [ 1 ] ,   , w [ L ] , b [ L ] w^{[1]},b^{[1]},\cdots,w^{[L]},b^{[L]}
目的: min w J ( w [ 1 ] , b [ 1 ] ,   , w [ L ] , b [ L ] ) = 1 m i = 1 m L ( y ^ ( i ) y ( i ) ) \min_wJ(w^{[1]},b^{[1]},\cdots,w^{[L]},b^{[L]}) = \frac{1}{m}\sum_{i=1}^{m}L(\hat{y}^{(i)},y^{(i)})

L2正則化: λ 2 m l = 1 L w [ l ] 2 2 \frac{\lambda}{2m}\sum_{l = 1}^{L}||w^{[l]}||_2^2

矩陣的Frobenius範數: