博客 | Machine Learning Yearning 要點筆記

Andrew Ng. 的新書終於出完了。薄薄一百多頁的小冊子,翻下來其實是一堆實操經驗集合。感覺還是有一定借鑑意義的,按照我自己的理解簡單地整理如下,也不展開說了。有過實際經驗的肯定心裏有數。

  1. 新成果的驅動因素:數據,算力
  2. 數據集的劃分:val & test
  3. val & test 應當來自相同的分佈
  4. how large? 足夠區分算法之間的(精度)差異
  5. 建立單一的評估指標,並通過不斷迭代以優化和滿足之
  6. 初始化 val & test 數據並建立 metrics,但要逐漸完善它
  7. 快速建立系統並迭代而不是一開始精心準備“完美”的東西
  8. 錯誤分析:查看 val 集中的錯誤樣例,評估提升性能的所需,並行地嘗試所有 ideas(節省時間,評估改進的作用)
  9. val 集糾錯——隨系統改善決定是否糾錯
  10. val 集較大時,分成兩部分:一部分用來查錯(較小的)(eyeball),一部分用來調參(blackbox),二者不能重合(防止對後者過擬合。eyeball
  11. 集應該大到讓你瞭解主要的錯誤類別(所以必須隨機)
  12. 偏差和方差:對訓練集的擬合程度和在測試集上的表現
  13. 過擬合和欠擬合
  14. 對比最優錯誤率(貝葉斯錯誤率,如以人爲基準的系統)/進行偏差&方差分解,找到當前需要側重解決的問題
  15. 可避免偏差較大,則增加模型的容量;方差大則增加訓練數據集規模
  16. 偏差-方差權衡通常是困難的
  17. 減小偏差的方法:增加模型規模,基於錯誤分析改進輸入(特徵),減少正則化,修改模型架構
  18. 對訓練集的錯誤分析:如何提升模型的表現/擬合能力(通過改進輸入)
  19. 減小方差的方法:增加數據,正則化,早停,特徵選擇,減少模型規模(慎用),基於錯誤分析改善輸入(同上),修改模型架構(同上)
  20. 方差&偏差診斷:觀察 learning curve(侷限:新增數據難以用於評估)
  21. learning curve 使用:對比 dev error,train error 和期望 error
  22. 對小樣本數據需要極其謹慎
  23. 與人類水平的表現比較的意義:人類標籤容易獲取數據,可以利用人類的直覺/知識,以人類的性能去評估最優錯誤率和設置期望
  24. 計算機超過人類的任務的特點:難以獲得標籤,人類的直覺/知識不管用,難以獲得最佳錯誤率和合理的期望錯誤率
  25. 如何定義人類的表現:設定專家級別的錯誤率爲期望錯誤率。理由參考22:獲得專家標註的數據;獲取專家的直覺和知識;作爲最優準確率是合理的。也可根據系統的提升進度逐步設置更高的人類參考基準(使用標註數據的成本不同)
  26. 超越人類的表現:算法不如人類時提升較快,超過人類後提升變慢。算法超過人類後仍可繼續發展,如從人類處獲得比算法轉換質量更高的數據、利用人的知識和直覺加強對處理方法的理解、將人的最佳表現作爲研發的期望,以及,“智能”系統的開發是沒有止境的,輸入變化任務隨之變化,人能適應這些變化而機器不能。因此仍需將人作爲開發中重要的參考基準
  27. 何時需在不同分佈的數據上進行訓練和測試:將額外獲得的大量數據加入訓練集作爲輔助訓練樣本(但不要期待過高的提升)
  28. 是否使用全部數據?根據使用的模型做出決定,以及“外部”數據是否與任務相關、是否與基礎訓練集“高度”一致
  29. 加權數據:爲不同數據設置不同的訓練權重
  30. 訓練集到驗證集的泛化問題:欠擬合(通常可避免),過擬合,數據不匹配(train vs. val/test)。可設定四個數據集用於評估:訓練集,訓練子集,開發集,驗證集。後兩者應來自相同分佈,用於評估泛化能力。訓練子集用於跟蹤訓練進度
  31. 確定偏差、方差和不匹配錯誤:根據29中不同子集上的表現做出判斷
  32. 人工合成數據:疊加(混音),剪接,加噪等
  33. 優化驗證:判斷問題出在優化過程還是目標函數上
  34. 強化學習的通常模式(略)
  35. 端到端學習的缺點:小數據上表現差,無法應對過於複雜的系統(應分模塊)
  36. 構建管道:按功能,按特性,按效率。從簡單到複雜,從底層到高層
  37. 分模塊的錯誤檢查
  38. 定位錯誤所在:逐個環節檢查輸入輸出。設定“完美”的輸入/輸出以檢查某環節上的錯誤
  39. 每個環節的表現與人類水平比較,逐步提升
  40. 有時每個環節工作良好,但整體表現差:跟管道的設計有關。整合模塊/環節的方式也可能有問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章