怎麼處理數據不匹配問題

在上一篇 的文章中,提到了為了增大數據,可能會引入數據不匹配問題,介紹瞭如何來分析數據不匹配問題。

本篇文章主要介紹如何來處理數據不匹配問題,文章主要內容來自於deeplearning ai視頻教程。

數據不匹配

當我們的訓練集和開發集來自不同分佈時,通過誤差分析,確定發現我們的數據存在數據不匹配問題時,我們應該如何處理?

目前還沒有很系統的方法可以解決這個問題,不過我們可以從下面幾個方面進行嘗試來解決這個問題。

  • 分析訓練集和開發集的差異

通過誤差分析發現我們的數據存在數據不匹配問題時,應該先去觀察訓練集和開發集數據之間的差異,需要注意的是在進行誤差分析的時候不要在測試集上進行分析,以避免算法在測試集上發生過擬合。

下面舉例說明一下,假如你正在開發一個汽車語音導航系統,通過誤差分析發現存在數據不匹配問題時,此時你需要先聽一聽訓練集和開發集的語音,來幫助你分析訓練集和開發集之間的差異。

聽完之後發現,開發集中的語音可能存在較多的噪聲而訓練集中則沒有,當說到街道地址時經常識別錯誤。此時,我們已經知道了開發集數據與訓練集數據的不同之處,發現開發集比訓練集更難識別。這時,可以將我們的訓練集變的更像開發集。比如說,可以試著收集更多的像開發集那樣的數據、收集更多街道地址的語音信息。

  • 人工合成數據
怎麼處理數據不匹配問題

我們在分析訓練集與開發集數據的差異時發現,開發集數據中汽車的語音比較嚴重,而此時我們又無法收集到更多像開發集那樣含有噪音的語音數據。此時可以考慮使用人工合成數據

我們可以通過錄制大量清晰的導航語音數據,然後再收集汽車的噪聲語音,通過將清晰導航語音數據與汽車噪聲進行合成生成類似於開發集那樣含有汽車噪聲的導航語音。

通過這種方式,我們就可以快速製造大量的訓練數據,就像真實場景(開發集)下的數據一樣。

!!注意!!

在使用人工合成數據的時候,有一個地方需要特別注意。假如我現在有10000個小時清晰的導航語音數據,有1個小時的汽車噪聲語音,通過將1小時汽車噪音的語音數據進行回放來疊加作為清晰導航語音數據的背景就能夠獲得10000個小時含有噪聲背景的導航語音數據了。

這樣合成數據,可能會導致一個問題就是算法可能會在這一個小時的噪聲數據上過擬合,最好的做法是儘量收集多的噪音數據然後再疊加到清晰的語音數據中,來提高算法的性能。

因為如果收集的噪聲數據過少,此時我們可能只是模擬了整個空間中一個很小的子集,在人工合成數據的時候應該儘可能多的考慮可能性,避免發生過擬合,人工合成數據目前在語音識別領域已經取得了非常不錯的效果。當遇到數據不匹配問題時,可以考慮使用人工合成數據來進行處理。


最近開通了微信公眾號,在微信公眾號上,分享了一些資料,搜索"Python機器學習之路"關注我即可獲取,有什麼問題歡迎諮詢。


分享到:


相關文章: