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