Machine Learning Yearning40~43

1.當訓練數據有兩個分佈數據,測試數據只有其中一個分佈數據,這時後如果測試數據錯誤率比我們預期的要高,那麼可以從以下方面進行檢查:1,在訓練數據效果不好,這時主要問題是訓練數據分佈的高的可以避免的bias的存在;2,如果訓練集表現較好,但是對於和訓練集具有相同分佈的未見過的數據(此處不是驗證集或者測試集)效果不好,那麼是因爲高的variance;3,如果訓練集效果好,對於和訓練集具有相同分佈的未見過的數據效果也好,但是對於測試集效果不好,那麼是因爲數據不匹配,數據不匹配就是,訓練數據和測試數據不匹配。
對於第三種情況,我們舉個例子。
人類水平錯誤率很低。而我們的系統:1%的訓練數據錯誤率;1.5%的與訓練數據分佈相同的網絡未見過的數據的誤差率;10%的測試數據誤差率。那麼在這種情況下,就是數據不匹配問題。解決辦法就是使得訓練數據和測試數據儘量相似。
2.爲了診斷我們算法是出於1~3哪種情況,我們需要這麼做。我們將能夠得到的訓練數據分爲2部分,一部分拿來訓練,一部分當作“Training dev”。所以現在,我們有4部分數據。
Training set:實際拿來訓練的,網絡數據和用戶上傳的數據。
Training dev set:分佈和訓練集(網絡數據和用戶上傳的數據)一樣,數量較小,只要能夠評估我們的算即可。
Dev set:和測試數據(用戶上傳)分佈相同,結果是我們期望的。
Test set:和驗證數據(用戶上傳)分佈相同,結果是我們期望的。
通過上邊4種,我們現在可以評估:訓練誤差;評估training dev set;評估驗證集和測試集。
3.以下有幾種不同的情況:假設人類表現接近0%。
A,
• 1% error on the training set.
• 5% error on training dev set.
• 5% error on the dev set.
結論,我們需要減少high variance。
B,
• 10% error on the training set.
• 11% error on training dev set.
• 12% error on the dev set.
我們要解決high avoidable bias。
C,
• 10% error on the training set.
• 11% error on training dev set.
• 20% error on the dev set.
我們需要解決high avoidable bias和數據不匹配,但是並沒有出現high variance。
所以我們需要明白我們的算法遭受了哪種問題,我們才能針對性的解決。
4.當我們出現數據不匹配問題怎麼辦?
那麼我們首先要明白:1,搞明白訓練數據和測試數據之間的具有差異性的性質;2,儘量找到和測試數據相匹配的訓練數據。
誤差分析的目的是明白訓練數據和測試數據之間的巨大不同,是這個差異導致了數據的不匹配。如果不能收集數據,那就很難解決數據不匹配問題。
就是根據現象,找到原因,提出辦法。
5.我們可以通過人工合成數據。
比如,如果我們有汽車在路上的噪聲音頻,還有人在安靜的房間裏的語音,我們需要收集人在騎車裏的數據,那麼,我們將這兩個合起來就是人在汽車裏說話。
有些情況下,人工數據合成可以匹配驗證集。就是,觀察驗證集數據的情況,根據驗證集數據,對不同分佈的訓練集進行數據處理,達到和驗證集數據相似的效果。比如,驗證集裏邊有運動模糊的圖片,那麼我們通過處理訓練數據,使得訓練數據的部分圖片達到類似的效果。
當然,人造數據是有挑戰的,比如,人看起來數據造的和真的差不多,但是對於計算機來說可能不同。
當我們合成數據時,我們需要不斷的提醒自己,我們是否在真的合成具有代表性的樣本,從而防止過擬合。如果我們使用一輛車裏邊錄得聲音,和100個安靜說話的聲音,那麼合成的訓練數據將將只包含這一種車裏邊的噪聲,網絡會對這個車裏邊的聲音過擬合。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章