如果您的訓練集來自於 跟您的開發,測試集不同的分佈 而如果誤差分析顯示 您有資料不匹配問題時,您該怎麼辦? 這沒有完整的系統化解決方案 但我們來看看一些您可以試的事 如果我發現大的資料不匹配問題 我通常會進行手工誤差分析,試著 理解訓練集跟 開發,測試集的不同 為了避免過適於測試集 技術上在誤差分析時 您應該只人工來看開發集 而非測試集 但看一個實際的例子 如果您建立一個 語音啟動後視鏡應用 您會看,或者說如果是語音的話 您會聽您開發集的語音,試著 發覺您個開發集不同於您的訓練集 舉個例子,您會發現 很多開發集例子很吵,有很多汽車的聲音 而這是一種方式您的開發集 不同於您的訓練集 而或許您會發現 另一種類型的誤差 舉個例子,在車子裡的語音啟動後視鏡 您會發現常常誤判 街道號碼,因為有很多 導航查詢用到街道號碼 所以正確地做對 街道號碼是很重要的 當您有這些開發集誤差 的本質洞察時 或者您有開發集 不同於訓練集或者 難於訓練集的洞見 您可以做的是試著找一個方式 或者取而代之,試著去 收集類似於開發跟測試集資料 舉個例子,如果您發現 車子背景噪音是主要的誤差來源 您可以做的是模擬車子的噪音資料 在下一張投影片會講一下您可以如何做 或者您發現您很難辨識街道號碼 或許您可以去嘗試獲取更多的資料有關 人們講到號碼的語音 然後加入您的訓練集 我知道這張投影片只給您 您可以試的很粗淺的準則 這不是一種系統化的步驟 我想,這並不能保證您會得到 您可以改進的洞見 但我發現這種手工的洞見 我們一起試著讓資料在維度上更類似 通常會幫助很多的問題 所以您的目標是讓您的訓練資料 更類似於您的開發集 您可以做些什麼? 您可以用的一件技巧是 人工資料合成,讓我們 用處理車子噪音問題來討論 所以,要建立語音辨識系統 或許您沒有很多語音實際上 在車子裡錄製 有很多車子的背景噪音 高速公路背景噪音等等 但,實際上,有方法來合成它 假設您已經錄製了 很多清楚的語音 沒有車子的背景噪音 所以,這個例子是您或許 在您的訓練集有的語音片段  順便說一下,這句話常常用在人工智慧 來測試,這是一個短句 包含了所有的字母從 A 到 Z 所以您常會見到這個句子 但是給予"快速棕色狐狸跳過懶狗,"的錄音,你 也可以有車子的噪音像這樣 所以那是在車子裡的聲音 如果您在沈默中開車 而如果您拿這兩段語音, 將它們加在一起 您可以合成為 說 "快速棕色狐狸跳過懶狗" 聽起來像  如果您是在有噪音的 車子裡說的話像是 所以,這是一種相對簡單的語音合成例子 實作上,您或許合成 其他語音效果像是 反響也就是 您的聲音從 車子的牆壁回響的聲音 但透過人工資料合成 您或許能夠很快地產生資料的聲音像是 在車子裡錄製,而不需要真的 到外邊去取那麼多的資料 或許上百萬或上萬個小時的 在車子的資料 自己實際一個人開車得來的 所以,如果您的誤差分析 顯示您應該要試著 讓您的資料像是 在車子裡錄製的 那這可能是一種合理的步驟來 合成這樣的資料來 給您的學習演算法 現在,有一個注意事項 在人工資料合成上 我要說的是 假設,您有 10,000 小時的資料 是錄製在安靜的背景中 且假設您只有一小時的車子噪音 所以,您可以試著拿這一小時 車子噪音然後重複 10,000 次 為了要加這個到 10,000 小時 的在安靜背景下的錄音 如果這樣做,這些聲音檔會很完美 到人類的耳朵裡 但有這樣的可能 有這樣的風險,您的學習演算法會 過適於這一小時的車子噪音 而,特別是,如果這組 聲音是您可以在 車子裡錄製的所有聲音 或許是所有您可以想像的 所有車子背景噪音 如果您只有一小時的 車子背景噪音 您或許會模擬在 一組在整個空間很小的子集上 您或許只是從這個空間 很小的子集上合成 而對於人耳 所有這些聲音可能還好, 因為這一小時的車子噪音 聽起來就像其他小時的車子噪音,對於人耳而言 但,在整個空間很小的子集上 合成您的資料 這個神經網路或許會 過適於您僅有的 這一小時的車子噪音 我不知道是否可以 便宜的收集 10,000 小時 的車子噪音 所以您不用重複使用同樣這一小時 的噪音,一直重複, 如果您有 10,000 小時單獨的 車子噪音來加入這 10,000 小時 的單獨的在安靜背景下的錄音 但是有可能,不帶保證 有可能用這 10,000 小時單獨的車子噪音 而不只是一小時 可能造成學習演算法 比較好的表現 而人工資料合成的挑戰 在於對於人耳而言 人類耳朵可以辨別的 這 10,000 小時聽起來 像是這一個小時 所以您最終會建立 非常貧乏的合成資料集 從空間上很小的子集建立 而不知不覺 這是另一個例子 有關人工資料合成 假設您要建立一個自駕車,您想要真正能偵測到 這樣的車輛,然後 放一個框框在外面像這樣 很多人討論的一個想法是, 好, 為什麼不用電腦圖形 來模擬大量的汽車照片? 實際上,這裡有一些車子的照片 是用電腦圖形產生出來的 我想這些圖形實際上相當不錯 我可以想像 像這樣的合成照片 您可以訓練相當好的 電腦視覺系統來偵測車子 很不幸的,我在先前畫的 圖形也適用這種設定 或許這是所有車子的集合 如果您只合成一組 小的子集的這些車子 對於人眼而言 或許這些合成影像 看起來不錯 但您可能過適於 這一組您合成的小集合 特別是,很多人單獨提出 一旦您發現一些電腦遊戲 有很好的電腦圖形汽車 只從這裡面抓取 很大量的車子的資料集 實際上您看這些電腦遊戲 如果這個電腦遊戲 只有 20 種汽車在遊戲中 那這個電腦遊戲看起來很好 因為當您在電腦遊戲中駕駛,您看 這其他 20 種汽車, 它們看起像是很真實的模擬 但這個世界有遠大於 這 20 種單獨設計的汽車 而如果您整個合成訓練集 只有這 20 種不同的車子 那您的神經網路很可能 過適於這 20 種車子 而這很難 讓人類輕易理解 即使這些影像 看起來很真實 您真的只包含了 所有可能車子中的很小一部份 所以總結一下, 如果您有資料不匹配問題 我建議您做誤差分析 或者看一下訓練集 或者看一下開發集,試著去發現 試著去獲得一些洞見 來看這兩種分佈如何不同? 然後看看是否您可以發現一些方式來 獲得更多的訓練資料 比較接近一些開發集 我們談到的一種方式是 人工資料合成 而人工資料合成是可行的 在語音辨識中,我看到人工資料合成明顯的 提高了我們已經做得很棒的 語音辨識系統的表現 所以,它是可行的 但,如果您使用了人工資料合成 要小心跟注意 是否您會不經意的 只從空間上一小部分子集來的 模擬資料 所以這是如何處理資料不匹配 接下來,我想分享您一些想法 如何同時來學習不同種類的資料