第二週 機器學習(ML)策略(2):2.6 定位資料不匹配

我愛AI發表於2020-12-08

目錄

 

第一章、簡介

第二章、定位資料不匹配

2.1、開發集資料比訓練集更難識別,噪聲較多,因此更需要對開發集進行人工錯誤分析

2.2、 解決開發集資料比訓練集資料更難識別的方法思路

2.3、人工合成語音的方式創造更多的訓練集, 讓訓練集資料更接近你的開發集,這樣訓練而來的系統能更好的識別開發集

2.4、人工合成語音的錄製噪聲時間短,可能導致學習演算法對合成的語音過擬合

2.5、汽車影像合成可能過擬合的案例

2.6、小結


第一章、簡介

  • 本文基於吳恩達人工智慧課程做學習筆記、並融入自己的見解(若打不開請複製到瀏覽器中開啟)https://study.163.com/courses-search?keyword=吳恩達
  • 本文第二章將介紹 定位資料不匹配問題,即訓練集與開發集的資料分佈不一樣的情況下帶來的問題(過擬合問題)及其解決方法(人工合成資料)。

 

第二章、定位資料不匹配

 

2.1、開發集資料比訓練集更難識別,噪聲較多,因此更需要對開發集進行人工錯誤分析

 

  • 如果您的訓練集來自和開發集、測試集不同的分佈,如果錯誤分析顯示你有一個資料不匹配的問題,該怎麼辦?
  • 這個問題沒有完全系統的解決方案,但我們可以看看一些可以嘗試的事情。
  • 如果我發現有嚴重的資料不匹配問題,我通常會親自做錯誤分析,嘗試瞭解訓練集和開發集、測試集的具體差異。
  • 技術上,為了避免對測試集過擬合,要做錯誤分析,你應該人工檢視開發集而不是測試集。但作為一個具體的例子,如果你正在開發一個語音啟用的後視鏡應用,你可能要親自檢視看一下來自開發集的樣本的效果,嘗試弄清楚開發集和訓練集到底有什麼不同。
  • 所以,比如說你可能會發現很多開發集樣本噪音很多——有很多汽車噪音,這是你的開發集和訓練集差異之一。
  • 也許你還會發現其他錯誤,比如在你的車子裡的語言啟用後視鏡,你發現它可能經常識別錯誤街道號碼,因為很多導航請求都有街道地址,所以得到正確的街道號碼真的很重要。

 

2.2、 解決開發集資料比訓練集資料更難識別的方法思路

 

  • 當你瞭解開發集錯誤的性質時,你就知道開發集有可能跟訓練集不同或者更難識別。
  • 那麼,如何解決開發集資料更難識別問題?你可以嘗試把訓練資料變得更像開發集一點,或者你也可以收集更多類似你的開發集和測試集的資料。
  • 比如說,如果你發現車輛背景噪音是主要的錯誤來源,那麼你可以模擬車輛噪聲資料,我會在下一張幻燈片裡詳細討論這個問題(解決方法一)
  • 或者你發現很難識別街道號碼,也許你可以有意識地收集更多數字音訊資料(日常我們說的0123456789的數字音訊資料)加到你的訓練集裡(解決方法二)
  • 現在我知道這張幻燈片只給出了粗略的指南,列出一些你可以做的嘗試,這不是一個系統化的過程。
  • 我想這不能保證你一定能取得進展,但我發現這種人工見解,我們可以一起嘗試收集更多和真正重要的場合相似的資料,這通常有助於解決很多問題。

 

2.3、人工合成語音的方式創造更多的訓練集, 讓訓練集資料更接近你的開發集,這樣訓練而來的系統能更好的識別開發集

  • 所以,如果你的目標是讓訓練資料更接近你的開發集,那麼你可以怎麼做呢? 你可以利用的其中一種技術——人工合成資料技術來解決。我們討論一下,在解決汽車噪音問題的場合下,通過語音合成技術達到我們的目標
  • 我們要建立語音識別系統,也許實際上你沒那麼多實際在汽車背景噪音下錄得的音訊,或者在高速公路背景噪音下錄得的音訊。
  • 但是,我們發現可以合成你想要的資料,假設你錄製了大量清晰的音訊,不帶車輛背景噪音的音訊,比如說這可能是你的訓練集裡的一段音訊(如圖2-1所示,這段錄音“the quick brown fox jumps over the lazy dog”)
  • 順便說一下這個句子在 AI 測試中經常使用,因為這個短句包含了從 a 到 z 所有字母,所以你會經常見到這個句子。
  • 但是有了這段錄音之後,你也可以收集一段這樣的汽車噪音(如圖2-1所示),這就是汽車內部的背景噪音,如果你一言不發開車的話,就是這種聲音。
  • 如果你把兩個音訊片段放到一起,你就可以合成出這段錄音的句子“the quick brown fox jumps over the lazy dog”在汽車背景噪音中的效果。
  • 所以這是一個相對簡單的音訊合成例子,在實踐中你可能會合成其他音訊效果,比如混響,就是聲音從汽車內壁上反彈疊加的效果。
  • 所以,通過人工資料合成,你可以快速製造更多的訓練集資料,就像真的在車裡錄的那樣,那就不需要花時間實際出去收集資料,比如說在實際行駛中的車子,錄下上萬小時的音訊。
  • 所以,如果誤差分析顯示你應該嘗試讓你的資料聽起來更像在車裡錄的(即訓練集資料要接近開發集資料,開發集資料包含有噪聲,更加接近實際資料),那麼人工合成那種音訊,然後餵給你的機器學習演算法這樣做,是合理的。

 

此影像的alt屬性為空;檔名為1.png

圖 2-1

 

2.4、人工合成語音的錄製噪聲時間短,可能導致學習演算法對合成的語音過擬合

 

  • 現在我們要提醒一下,人工資料合成有一個潛在問題。
  • 比如說你在安靜的背景裡錄得 10000 小時音訊資料,然後你只錄了一小時車輛背景噪音,那麼你可能將這 1 小時汽車噪音,回放10000次併疊加到在安靜的背景下錄得的 10000 小時資料。
  • 如果你這麼做了,聽起來這個音訊沒什麼問題,但是可能有一個風險就是你的學習演算法對這 1 小時汽車噪音過擬合
  • 特別是如果這組汽車裡錄的噪聲音訊,可能是你可以想象的所有汽車噪音背景的集合,如果你只錄了一小時汽車噪音,那你可能只模擬了全部噪聲的資料空間的一小部分,你可能只從汽車噪音的很小的子集來合成資料,而對於人耳來說,這些音訊聽起來沒什麼問題,因為一小時的車輛噪音對人耳來說,聽起來和其他任意一小時車輛噪音是一樣的。
  • 但你有可能從這整個空間很小的一個子集出發合成資料,神經網路最後可能對你這一小時汽車噪音過擬合。
  • 值得注意的另一種情況是,我不知道收集 10,000 小時的汽車噪音是否可行,這樣你就不用一遍又一遍地回放那 1 小時汽車噪音,你就有 10,000 個小時永不重複的汽車噪音,來疊加到 10000 小時安靜背景下錄得的永不重複的語音錄音。
  • 這是可以做的,但不保證能做到(傻子才會錄10000小時的噪聲語音),但是使用 10000 小時永不重複的汽車噪音而不是 1 小時重複,學習演算法有可能取得更好的效能。
  • 人工資料合成的挑戰在於,人耳是無法分辨這 10000 個小時聽起來和那 1 小時沒什麼區別。所以你最後可能製造出佔噪聲空間的很少部分資料(即只錄制了1個小時的噪聲,一個小時的噪聲只是噪聲空間的很少一部分),但你自己沒意識到。

 

2.5、汽車影像合成可能過擬合的案例

  • 這裡有人工合成資料的另一個例子,假設你在研發無人駕駛汽車,你可能希望,檢測出如圖2-2 A這樣的車,然後用這樣的框包住它。
  • 很多人都討論過的一個思路是,為什麼不用計算機合成影像來模擬成千上萬的車輛呢?
  • 事實上,這裡有幾張車輛照片(如圖2-2),其實是用計算機合成的,我想這個合成是相當逼真的。我想通過這樣合成圖片,你可以訓練出一個相當不錯的計算機視覺系統來檢測車子。
  • 不幸的是,2.4小結介紹的情況也會在這裡出現,比如這是所有車的集合,如果你只合成這些車中很小的子集,對於人眼來說,也許這樣合成影像沒什麼問題。
  • 但你的學習演算法可能會對合成的這一個小子集過擬合,特別是很多人都獨立提出了一個想法,一旦你找到一個電腦遊戲裡面車輛渲染的畫面很逼真,那麼就可以截圖得到數量巨大的汽車圖片資料集。
  • 事實證明,如果你仔細觀察一個視訊遊戲,如果這個遊戲只有20輛獨立的車,那麼這遊戲看起來還行,因為你是在遊戲裡開車,你只看到這 20 輛車,這個模擬看起來相當逼真。
  • 但是,現實世界裡車輛的設計可不只20種,如果你用著 20 量獨特的車合成的照片去訓練系統,那麼你的神經網路很可能對這 20 輛車過擬合,但人類很難分辨出來,即使這些影像看起來很逼真,你可能真的只用了所有可能出現的車輛的很小的子集。

 

此影像的alt屬性為空;檔名為1-1.png

圖2-2

 

2.6、小結

 

  • 所以,總而言之,如果你認為存在資料不匹配問題,我建議你做錯誤分析,或者看看訓練集,或者看看開發集,試圖找出、試圖瞭解這兩個資料分佈到底有什麼不同,然後看看是否有辦法收集更多看起來像開發集的資料作訓練。
  • 我們談到其中一種辦法是人工資料合成,人工資料合成確實有效,在語音識別中,我已經看到人工資料合成,顯著提升了已經非常好的語音識別系統的表現。所以人工合成資料這是可行的。
  • 但是,當你使用人工資料合成時,一定要謹慎要記住你有可能從所有可能性的空間只選了很小一部分去模擬資料,所以這就是如何處理資料不匹配問題。
  • 下來,我想和你分享一些想法,就是如何從多種型別的資料同時學習

 

相關文章