本文主要參考吳恩達的機器學習課程。
一、機器學習中的各種政策:
開發 一個完整的機器學習項目要經曆:使用訓練集訓練模型--->開發集調整模型參數--->測試集測試模型效果--->上線實際使用。
1. 如果模型在訓練集上表現不好,可采取的政策有:
選擇更大的神經網絡(即更複雜的模型),使用AdamOptimizer等替代随機梯度下降法來優化,等等。
2. 如果模型在開發集上表現不好,可采取的政策有:
正則化,dropout(作用相當于正則化), 使用更多的資料作為訓練集,等等
3. 如果模型在在測試集上表現不好,可采取的政策有:
使用更多的資料作為開發集,等等
4. 如果模型在現實應用中表現不好,可采取的政策有:
改變開發集或者損失函數,等等
注:不太建議使用early stopping.
二、 評估名額
1. 常用的評估名額有準确率,F-socre等
2. 實際中,可考慮運作時間等其他名額。
三、 指南
選擇未來期望會用到的、模型表現較好的資料來作為開發集和測試集,即開發集、測試集應和項目上線後實際應用中的資料來自同一個分布(資料源一緻)。反例:不能使用高清圖檔作為開發集和測試集,然後實際應用大多是識别有很多噪聲的圖檔,這樣應用效果可能會不好。
四、訓練集、開發集和測試集的劃分
1. 傳統方式:70%的訓練集、30%的測試集(實際應叫開發集);或者60%的訓練集,20%的開發集,20%測試集
2. 資料量很大(達到百萬以上的級别)時,可考慮98%作為訓練集,1%作為開發集,1%作為測試集。
3. 不建議省略測試集
五、 和人類的水準進行比較:
人類在模型任務上特别擅長, 如果你的模型表現不如人類水準,可以做如下工作:
1. 擷取人工打過标簽的資料
2. 人工分析錯誤原因:為什麼人類作對了?
3. 更好地進行偏差和方差分析:
(1)計算人類的水準和模型在訓練集上的錯誤率和之差deta1,計算模型在訓練集上的錯誤率和開發集上的錯誤率之差deta2;
(2)如果deta1較大,則說明偏差過大(模型可能欠拟合),可考慮的措施有:
訓練更複雜的模型,使用更好的優化算法(Momentum, RMSProp, Adam等), 超參搜尋等。
(3) 如果deta2較大,則說明方差過大(模型可能過拟合),可考慮的措施有:
使用更多的資料;正則化,包括L2,dropout, 資料增強(如圖檔的裁剪/縮放/彩色變換/翻轉), 超參搜尋等。
4. 機器學習在某些領域已經超越了人類的表現