2.6 处理数据不匹配问题-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
| 2.5 不匹配數據劃分的偏差和誤差 | 回到目錄 | 2.7 遷移學習 |
處理數據不匹配問題 (Addressing Data Mismatch)
如果您的訓練集來自和開發測試集不同的分布,如果錯誤分析顯示你有一個數據不匹配的問題該怎么辦?這個問題沒有完全系統的解決方案,但我們可以看看一些可以嘗試的事情。如果我發現有嚴重的數據不匹配問題,我通常會親自做錯誤分析,嘗試了解訓練集和開發測試集的具體差異。技術上,為了避免對測試集過擬合,要做錯誤分析,你應該人工去看開發集而不是測試集。
但作為一個具體的例子,如果你正在開發一個語音激活的后視鏡應用,你可能要看看……我想如果是語音的話,你可能要聽一下來自開發集的樣本,嘗試弄清楚開發集和訓練集到底有什么不同。所以,比如說你可能會發現很多開發集樣本噪音很多,有很多汽車噪音,這是你的開發集和訓練集差異之一。也許你還會發現其他錯誤,比如在你的車子里的語言激活后視鏡,你發現它可能經常識別錯誤街道號碼,因為那里有很多導航請求都有街道地址,所以得到正確的街道號碼真的很重要。當你了解開發集誤差的性質時,你就知道,開發集有可能跟訓練集不同或者更難識別,那么你可以嘗試把訓練數據變得更像開發集一點,或者,你也可以收集更多類似你的開發集和測試集的數據。所以,比如說,如果你發現車輛背景噪音是主要的錯誤來源,那么你可以模擬車輛噪聲數據,我會在下一張幻燈片里詳細討論這個問題。或者你發現很難識別街道號碼,也許你可以有意識地收集更多人們說數字的音頻數據,加到你的訓練集里。
現在我知道這張幻燈片只給出了粗略的指南,列出一些你可以做的嘗試,這不是一個系統化的過程,我想,這不能保證你一定能取得進展。但我發現這種人工見解,我們可以一起嘗試收集更多和真正重要的場合相似的數據,這通常有助于解決很多問題。所以,如果你的目標是讓訓練數據更接近你的開發集,那么你可以怎么做呢?
你可以利用的其中一種技術是人工合成數據(artificial data synthesis),我們討論一下。在解決汽車噪音問題的場合,所以要建立語音識別系統。也許實際上你沒那么多實際在汽車背景噪音下錄得的音頻,或者在高速公路背景噪音下錄得的音頻。但我們發現,你可以合成。所以假設你錄制了大量清晰的音頻,不帶車輛背景噪音的音頻,“The quick brown fox jumps over the lazy dog”(音頻播放),所以,這可能是你的訓練集里的一段音頻,順便說一下,這個句子在AI測試中經常使用,因為這個短句包含了從a到z所有字母,所以你會經常見到這個句子。但是,有了這個“the quick brown fox jumps over the lazy dog”這段錄音之后,你也可以收集一段這樣的汽車噪音,(播放汽車噪音音頻)這就是汽車內部的背景噪音,如果你一言不發開車的話,就是這種聲音。如果你把兩個音頻片段放到一起,你就可以合成出"the quick brown fox jumps over the lazy dog"(帶有汽車噪聲),在汽車背景噪音中的效果,聽起來像這樣,所以這是一個相對簡單的音頻合成例子。在實踐中,你可能會合成其他音頻效果,比如混響,就是聲音從汽車內壁上反彈疊加的效果。
但是通過人工數據合成,你可以快速制造更多的訓練數據,就像真的在車里錄的那樣,那就不需要花時間實際出去收集數據,比如說在實際行駛中的車子,錄下上萬小時的音頻。所以,如果錯誤分析顯示你應該嘗試讓你的數據聽起來更像在車里錄的,那么人工合成那種音頻,然后喂給你的機器學習算法,這樣做是合理的。
現在我們要提醒一下,人工數據合成有一個潛在問題,比如說,你在安靜的背景里錄得10,000小時音頻數據,然后,比如說,你只錄了一小時車輛背景噪音,那么,你可以這么做,將這1小時汽車噪音回放10,000次,并疊加到在安靜的背景下錄得的10,000小時數據。如果你這么做了,人聽起來這個音頻沒什么問題。但是有一個風險,有可能你的學習算法對這1小時汽車噪音過擬合。特別是,如果這組汽車里錄的音頻可能是你可以想象的所有汽車噪音背景的集合,如果你只錄了一小時汽車噪音,那你可能只模擬了全部數據空間的一小部分,你可能只從汽車噪音的很小的子集來合成數據。
而對于人耳來說,這些音頻聽起來沒什么問題,因為一小時的車輛噪音對人耳來說,聽起來和其他任意一小時車輛噪音是一樣的。但你有可能從這整個空間很小的一個子集出發合成數據,神經網絡最后可能對你這一小時汽車噪音過擬合。我不知道以較低成本收集10,000小時的汽車噪音是否可行,這樣你就不用一遍又一遍地回放那1小時汽車噪音,你就有10,000個小時永不重復的汽車噪音來疊加到10,000小時安靜背景下錄得的永不重復的語音錄音。這是可以做的,但不保證能做。但是使用10,000小時永不重復的汽車噪音,而不是1小時重復學習,算法有可能取得更好的性能。人工數據合成的挑戰在于,人耳的話,人耳是無法分辨這10,000個小時聽起來和那1小時沒什么區別,所以你最后可能會制造出這個原始數據很少的,在一個小得多的空間子集合成的訓練數據,但你自己沒意識到。
這里有人工合成數據的另一個例子,假設你在研發無人駕駛汽車,你可能希望檢測出這樣的車,然后用這樣的框包住它。很多人都討論過的一個思路是,為什么不用計算機合成圖像來模擬成千上萬的車輛呢?事實上,這里有幾張車輛照片(下圖后兩張圖片),其實是用計算機合成的,我想這個合成是相當逼真的,我想通過這樣合成圖片,你可以訓練出一個相當不錯的計算機視覺系統來檢測車子。
不幸的是,上一張幻燈片介紹的情況也會在這里出現,比如這是所有車的集合,如果你只合成這些車中很小的子集,對于人眼來說也許這樣合成圖像沒什么問題,但你的學習算法可能會對合成的這一個小子集過擬合。特別是很多人都獨立提出了一個想法,一旦你找到一個電腦游戲,里面車輛渲染的畫面很逼真,那么就可以截圖,得到數量巨大的汽車圖片數據集。事實證明,如果你仔細觀察一個視頻游戲,如果這個游戲只有20輛獨立的車,那么這游戲看起來還行。因為你是在游戲里開車,你只看到這20輛車,這個模擬看起來相當逼真。但現實世界里車輛的設計可不只20種,如果你用著20量獨特的車合成的照片去訓練系統,那么你的神經網絡很可能對這20輛車過擬合,但人類很難分辨出來。即使這些圖像看起來很逼真,你可能真的只用了所有可能出現的車輛的很小的子集。
所以,總而言之,如果你認為存在數據不匹配問題,我建議你做錯誤分析,或者看看訓練集,或者看看開發集,試圖找出,試圖了解這兩個數據分布到底有什么不同,然后看看是否有辦法收集更多看起來像開發集的數據作訓練。
我們談到其中一種辦法是人工數據合成,人工數據合成確實有效。在語音識別中。我已經看到人工數據合成顯著提升了已經非常好的語音識別系統的表現,所以這是可行的。但當你使用人工數據合成時,一定要謹慎,要記住你有可能從所有可能性的空間只選了很小一部分去模擬數據。
所以這就是如何處理數據不匹配問題,接下來,我想和你分享一些想法就是如何從多種類型的數據同時學習。
課程板書
| 2.5 不匹配數據劃分的偏差和誤差 | 回到目錄 | 2.7 遷移學習 |
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的2.6 处理数据不匹配问题-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.5 数据不匹配时,偏差和方差的分析-
- 下一篇: 2.7 迁移学习-深度学习第三课《结构化