跳至主要内容

Setting up Application

這篇文章涵蓋如何設定一個機器學習應用,包括訓練 / 驗證 / 測試資料集的比例,訓練和測試資料集的分布不同時對結果的影響,以及如何尋找偏差和變異之間的平衡。此外,我們還討論了在大數據深度學習時代,建構更大的神經網路和取得更多資料對於偏差和變異之間的影響。

Train / Dev / Test sets

  • 在以前的 machine learning 資料不多 (100 ~ 10000 筆)
    • 拆成 60 / 20 / 20 的 train / dev / test sets 差不多
    • dev set = cross validation set = development set (名詞不同而已)
  • 而現今的 big data 時代 (1000000 筆)
    • dev set 只是為了評估不同演算法的效率 (10000 筆就夠)
    • test set 只是要評估 classifier 的效果如何 (10000 筆就夠)
    • 所以現在在分配三者的量時,可能會採取
      • 98 / 1 / 1 甚至是 99.5 / 0.25 / 0.25

Mismatched train / test distribution

  • 開發時的 train data 和 dev/test data 最好來自同一個 distribution
  • 例如 train data 使用網路抓取的高解析圖片
  • test data 則使用用戶手機拍下的低解析圖片
  • 這會讓整個測試結果不佳,也會讓流程變慢

Bias / Variance

  • 假設訓練看貓照片時,人眼辨識錯誤率為 0%
Resulthigh variancehigh biashigh on bothlow on both
Train set error1%15%15%0.5%
Dev set error11%16%30%1%
  • train 的很好但 dev 測試很差,代表 overfit
  • train 的很爛 dev 也一樣爛,代表 underfit
  • train 的很爛 dev 又更爛,代表 overfit + underfit
  • train 的很好 dev 也很好,代表完美
  • 這些測試建立在人眼錯誤率為 0% (稱作 optimal error)
  • 測試結果會隨著 optimal error 的改變而有所不同

Basic Recipe for Machine Learning

  • 從 bias 和 variance 可以找出對應解法
  • High bias (bad training set performance) ?
    • 建構更大的 neural network
    • Train longer
    • (NN architecture search) (maybe not work)
  • High variance (bad dev set performance) ?
    • 取得更多 data
    • Regularization
    • (NN architecture search) (maybe not work)

Bias vs. Variance tradeoff

  • 在 machine learning 時代
    • bias 降低,variance 就會變高,反之亦然。
  • 但在 big data deep learning 時代
    • 建構更大 nn 可以降低 bias 而不影響其他因素
    • 取得更多 data 可以降低 variance 而不影響其他因素
      • 但需要有一個很棒的 regularization implementation
    • 這也是為什麼 deep learning 在 supervised learning 能有非常好的表現