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