Setting up your Machine Learning 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%

Result

high variance

high bias

high on both

low on both

Train set error

1%

15%

15%

0.5%

Dev set error

11%

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 能有非常好的表現

Last updated