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:
引數:
目標:
新增正則化: 正則化項
是正則化係數,控制正則化的強度,是一個超引數,可以通過不同值在驗證集上的效能進行選擇。
L2正則化:
,最終權重傾向於比較平衡且接近於0,最常用;
L1正則化:
,最終權重比較稀疏,即包含很多0值。
正則化一般不考慮偏置向量,這是因為如果w相比b,引數量要大得多,若通過新增對w的正則化解決了過擬合問題,那麼忽略b也可以。當然也可以新增b的正則化,只不過一般大家都忽略它。
神經網路:
引數:
;
目的:
L2正則化:
矩陣的Frobenius範數: