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