遷移學習——樣本不匹配問題
  • 機器學習策略-不匹配的訓練和開發/測試資料

1.訓練和測試資料不匹配的問題

深度學習對訓練資料的需求很大,當你收集到足夠多帶標籤的資料,構成訓練集時演算法效果最好,這導致很多團隊用盡一切辦法收集資料,然後把它們堆到訓練集裡 讓訓練的資料量更大,即使有些資料 甚至是大部分資料,都來自和開發集、測試集不同分佈.下面解釋一些方法來處理訓練集和測試集存在差異的情況。
Example1
假設你要開發一個識別貓的機器學習系統,其中 需要識別的是使用者手機上傳的貓的圖片 這些圖片往往清晰度低,取景不專業,識別度低。由於你的應用使用者數還不多,也許你只收集到1w張使用者上傳的照片,但通過爬蟲挖掘網頁,你可以下載到海量貓圖,也許你從網際網路上下載了超過20w張貓圖,而你真正關心的演算法表現是 你的最終系統,處理來自應用程式的這個圖片分佈時 效果好不好,因為最後,你的使用者會上傳類似右邊這些圖片,你的分類器必須在這個任務中表現良好,現在你就陷入困境了,因為你有一個相對小的資料集,只有1w個樣本來自那個分佈,而你還有一個大得多的資料集來自另一個分佈,圖片的外觀和你真正想要處理的並不一樣,但你又不想直接用這1w張圖片 因為這樣,你的訓練集就太小了,使用這 20 萬張圖片似乎有幫助。但是,困境在於這20w張圖片並不完全來自你想要的分佈。
這裡寫圖片描述
參考:https://blog.csdn.net/JUNJUN_ZHAO/article/details/79167505
https://blog.csdn.net/u013555719/article/details/78452053

Solution1:
將20W張高清圖片與1W張使用者手機上傳的模糊圖片混合,隨機分配到訓練,開發和測試集中。假設你已經確定開發集和測試集中各包含2500個樣本,訓練集包括205000個樣本。
這種方式很大的壞處在於:對於開發集的2500個樣本,大部分來自於網上下載的高清圖片.這並不是你真正關心的資料分佈。由數學期望我們計算出大約有200K/210K=2381張圖片來自高清資料集,有10K/210K=119張圖片來自於使用者上傳圖片即真正應該關心的資料。
所以這種方式的結果是系統的大部分工作是優化網上下載的高清圖片.這並不是我們需要的分佈.
這種方式不推薦使用
方法1:
將兩組資料合併到一起,總共得到 21萬張圖片樣本。將這些樣本隨機分配到訓練、開發、測試集中。
好處:三個集合中的資料均來自於同一分佈;
壞處:我們設立開發集的目的是瞄準目標,而現在我們的目標絕大部分是為了去優化網上獲取的高清晰度的照片,而不是我們真正的目標。
這個方法不是一個好的方法。

Solution2:
為了避免Solution1中帶來的問題,我們將使用網上的高清圖片200K張圖片和5K張來自使用者手機的上傳圖片作為 訓練集,而 開發集 和 測試集 都是2500張不同的手機圖片。
這種方式的好處在於:開發集和測試集中的圖片來與使用者上傳的手機圖片,這才是你係統真正關心的重點。
方法二:
訓練集均是來自網上下載的20萬張高清圖片,當然也可以加上5000張手機非高清圖片;對於開發和測試集都是手機非高清圖片。
好處:開發集全部來自手機圖片,瞄準目標;
壞處:訓練集和開發、測試集來自不同的分佈。
從長期來看,這樣的分佈能夠給我們帶來更好的系統效能。

2.不匹配分佈的偏差和方差

對於訓練集和開發/測試集來自不同的分佈的情況而言,我們計算偏差和方差的方法不同。
Notice:
演算法只見過訓練集資料,沒見過開發集資料
開發集資料來自不同的分佈
需要辨清開發集上的誤差有多少是因為演算法沒看到開發集中的資料導致的<方差>,多少是因為開發集資料分佈本身就不一樣<資料不匹配>。
Solution:
1)定義一個新的資料train-dev set 從訓練集中抽取資料,和訓練集資料來自同一個資料分佈,但是不用於訓練資料。
2)分別將分類器在訓練集/訓練-開發集/開發集上執行,獲取其準確率資訊
1.假如在訓練集上誤差為1%,在訓練-開發集上誤差為9%,在開發集上誤差為10%。
分類器在訓練集和訓練開發集上誤差差距較大,這表明演算法沒有識別沒有看到過的資料,這表明分類器本身方差較大。
分類器在訓練-開發集和開發集上誤差差距不大,表明演算法誤差的差距不是主要由於資料 分佈不一樣 導致的。

2.假如在訓練集上誤差為1%,在訓練-開發集上誤差為1.5%,在開發集上誤差 為10%。
分類器在訓練集和訓練開發集上誤差差距較小,這表明分類器本身方差不大
分類器在訓練-開發集和開發集上誤差差距很大,表明演算法誤差的差距主要 由於 資料不匹配 導致的。

綜上:也就是增強資料的多樣性,域適應能力。

3.定位資料不匹配

如果你的訓練集和開發/測試集來自不同的資料分佈,並且誤差分析的結果表明你有一個資料不匹配的問題,這個問題沒有標準的解決方案,但是我們可以嘗試一些可以做的事情。
Suggestion:
做誤差分析,並且瞭解訓練集和開發/測試集的具體差異.
人為加工訓練集(人工合成資料),使其和開發/測試集更加相近,或者收集更多的類似於開發/測試集的資料。
當使用人工資料合成時,一定謹記有可能人工合成的資料只是從所有可能性的空間選取了很小一部分去模擬資料。


注:博眾家之所長,叢集英之薈萃。