1. 程式人生 > >43.人工資料合成 翻譯自 吳恩達新書-Machine Learning Yearning

43.人工資料合成 翻譯自 吳恩達新書-Machine Learning Yearning

你的語⾳識別系統需要更多聽起來在車裡錄製的語音資料。相對於收集那些在開車的時候錄製的音訊,有⼀個更簡單的方法獲取這些資料:通過人工合成數據。

假設你已經獲得足夠的汽車/馬路噪音的音訊片段。你可以從多個網站上下載這些資料。如果你已經有很多安靜環境下錄製的訓練樣本。你可以選出其中⼀個音訊片段,然後給它加上背景噪⾳,這樣你就獲得了⼀個聽起來好像在嘈雜的車上錄製⾳頻。

用這種方法,你可以合成大量的資料,就好像是收集了大量在車裡錄製的語音。

更廣泛的說,在⼀些應用場景中,人工資料合成讓你可以創造⼀個龐大的資料集來充分的匹配開發樣本集。用貓咪檢測器作為第二個例子。你會意識到開發樣本集中很多會有運動模糊,這是因為手機使用者在照相的時候都會出現輕微的抖動。

你可以從網上找到沒有模糊的圖片組成訓練集,然後加上⼀些模擬的運動模糊。

要記得人工資料合成也有它的挑戰:有時候,合成的資料在人看來很真實,但是在機器看來就沒有那麼真實了。例如,假設你有1000個小時的語⾳訓練資料,但是隻有1個小時的汽車噪音資料。在合成數據的時候,如果你在訓練樣本集中1000個小時的原始資料中,總是重複的使用這1個小時的汽車噪音,最後你就得到⼀個有很多重複噪音的合成數據集。對於人來說可能並不能聽出有失真的情況,畢竟所有的汽車噪音對我們來說都沒有太大的區別,但是機器學習演算法卻可能因為這重複的1個小時的汽車噪音變得過擬合。那麼,演算法就很難泛化到其他新的有背景噪音的音訊片段上,當汽車噪音和原來不同的時候,演算法就會遇到識別的麻煩。

另⼀種相似的情況,假設你有1000個小時的汽車噪音,但是這些音訊只來自10種不同的汽車。這種情況下,演算法很可能會對這10種汽車過擬合,可能在處理其他型別車子的聲音時效能表現的很差。不幸的是,這些問題很難會被注意到。 人工資料合成 再舉⼀個例⼦,假設你正在建造⼀計算機視覺系統來識別車子。假設你有⼀個夥伴在視訊遊戲公司,有幾種車子影象模型。為了訓練你的演算法,你會用這些模型來生成車子的合成影象。即使這些合成的圖片看起來非常真實,這個方法很能還是不能很好的工作。所有視訊遊戲的場景中可能只用到20種左右的車子的設計,如果你在玩遊戲,你很可能根本不會注意到你看到的都是重複的車子,很多隻是車子顏色不同。也就是說,這些車子在你看來都很真實。但是和馬路上真實在開動的車子相比,也就是在開發/測試集中的樣本相比,這些20種型號的車子只是世界上車子型別裡很小很小的⼀部分。如果你用20種型號的車子來合成了100000個測試樣本,你的系統會對這20種車子過擬合,系統會無法泛化,也就無法在開發/測試樣本集中識別出其他車子的設計。

在合成數據的時候,要有意識的提醒自己是不是真的合成出了有代表性的樣本。儘量避免使用那些能夠被學習演算法識別出人工合成的痕跡,比如所有資料都是從20種車子合成而來,或是所有的音訊樣本都是僅由1個小時的汽車噪音而來。這個建議實際上很難遵守。當合成資料時,我們的團隊有時會在產生資料之前花上好幾個星期在⼀些重要的細節上,來保證合成的資料可以足夠接近真實的資料分佈。如果你想正確的獲知這些細節,你必須提前就接觸非常大量的訓練樣本集。