天天看點

部落格 | 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. 有時每個環節工作良好,但整體表現差:跟管道的設計有關。整合子產品/環節的方式也可能有問題。