李宏毅机器学习——领域适应Domain Adaptation
代碼:李宏毅機器學習作業11——Transfer Learning,Domain Adversarial Training_iwill323的博客-CSDN博客
目錄
domain shift(域的轉變)
問題出現的原因
類型
?domain adaptation 面臨的情況
少量有標注的目標領域資料:微調
大量無標注的目標領域資料:Feature Extractor
如何找到Feature Extractor: domain adversarial training(域對抗訓練)
Considering Decision Boundary
在target Domain上只有很少量且沒有標注的數據
沒有目標領域資料:Domain Generalization
Universal Domain Adaptation
domain shift(域的轉變)
當訓練資料和測試資料存在不同的分布時,在訓練資料上訓練出來的模型在測試資料上面可能就會壞掉,這樣的情況叫做domain shift(域的轉變)。比如在黑白的數字上面訓練一個模型,直接用到彩色的數字上,得到的正確率會低到只有 57%。涉及到域的轉變就是領域自適應學習,就是將在A domain上學到的東西應用到B domain上,類似于transfer learning(在A任務上學到的技能可以用到B任務上)。
問題出現的原因
類似于Anomaly Detection,如果對Source Data中沒有出現過的(或稱Abnormal的)test data做測試,那麼model大部分都會因為不熟悉這個data而可能性能很差。
下面將model拆成Feature Extractor(上半部)和Classifier(下半部)來作例子:?
整個Model在學習Source Data的時候,Feature Extrator因為看過很多次Source Data,所以所抽取出來的Feature可能就頗具意義,例如像圖上的藍色Distribution,已經將圖片分成各個Cluster,所以這個時候Classifier就可以依照這個Cluster去預測結果。
但是在做Target Data的時候,Feature Extractor會沒看過這樣的Data,導致輸出的Target Feature可能不屬於在Source Feature Distribution上,這樣的Feature給Classifier預測結果顯然就不會做得好。
類型
domain shift有三種類型:
- 輸入分布變化。原始domain和目標domain的輸入資料不一樣,導致輸出幾率的變化。
- 輸出的分布變化。在訓練資料上面每一個數字出現的幾率都是一樣的,但是在測試資料上面可能每一個輸出的機率是不一樣的。
- 輸入跟輸出雖然分布可能是一樣的,但它們之間的關係變了。比較罕見
domain adaptation 面臨的情況
領域自適應可能面臨四種情況(針對掌握的目標領域資料而言):
1、少量有標注的目標領域資料
2、大量無標注的目標領域資料
3、少量無標注的目標領域資料
4、沒有目標領域資料
另外,也許在 Target Domain 上有一大堆的資料,那些資料也都有Label,就不需要做 Domain Adaptation,直接拿 Target Domain 的資料來訓練就好了
少量有標注的目標領域資料:微調
處理思想:先用原始資料訓練一個模型,然后用目標資料對模型進行微調,類似于BERT。
處理遇到的困難:只用目標資料來微調,一定要注意在微調時不要讓模型過擬合了,一般在target domain的資料上不用跑太多iteration,跑太多輪就容易過擬合。只稍微跑個兩三個Epoch就足夠了,把 Learning Rate 調小一點,讓fine tune前跟fine tune后的模型參數不要差很多
大量無標注的目標領域資料:Feature Extractor
這種情境蠻符合在真實的系統上有可能會發生的情境
處理思想:訓練一個Network作為Feature Extractor(特征提取器),使用feature extractor將兩個領域相同的部分提取出來,剔除掉不同的部分。下圖例子中,Feature Extractor 可以學到無視顏色這件事情,把顏色的資訊濾掉,不管是來自 Source Domain還是來自 Target Domain 的圖片,只要通過 Feature Extractor 以后得到的 Feature 有一樣的分布,那么后面的模型就會因為輸入是正常的output而發揮正常的作用
如何找到Feature Extractor: domain adversarial training(域對抗訓練)
可以把一般的 Classifier分成 Feature Extractor和Label Predictor 兩個部分。比如將前 5 層算是 Feature Extractor,后 5 層算是 Label Predictor,這個層數是一個超參數,需要進行調整得到。(下圖中紅色和藍色的點)。訓練時,把Source Domain 和 Target Domain的圖片丟到這個Image Classifier,希望Feature Extractor 的 Output 看起來要分不出差異。
藉由 Domain Adversarial Training 技術實現。訓練一個domain classifier,它是二元分類器,用來判斷輸入向量是來自於 Source Domain還是來自於 Target Domain。Feature Extractor 學習的目標就是要去想辦法騙過這個 Domain Classifier。
并且label predictor要正確分辨圖片中是什么數字,這樣對Feature Extractor的輸出進行了限制,比如Feature Extractor不能看到什麼東西永遠輸出零向量,雖然這樣能騙過 Discriminator。因此,feature extractor抽取的特征既要讓domain classifier無法區分兩個domain,又要讓label predictor能區分Source Domain中的圖片。
Label Predictor 的參數叫θp,Domain Classifier 的參數叫做θd,Feature Extractor 的參數叫做θf。
Label Predictor對實際的分類任務進行分類,分類結果與實際分類之間的CrossEntropy記為L(Source Domain 上的 Image分類),Domain Classifier對Feature Extractor得到的feature進行二元分類,判斷來自哪個Domain,分類結果與實際分類之間的Loss記為Ld。
訓練目標:
- Label Predictor找到θp,讓L越小越好
- Domain Classifier 找到θd,讓Ld越小越好
- Feature Extractor找到θf,既能讓LabelPredictor分類準確,減小L,又能讓盡量讓DomainClassifier難以分辨,增大Ld。所以Feature Extractor 的Loss定義為L-Ld,找到θf使之盡可能小。
但是L-Ld這個式子存在問題,本來是想用 -Ld來表示讓classifier分不清向量來源,但是把source誤判為target,把target誤判為source,這也能實現min-Ld。但是這個式子是有用的,只不過未必是最好的方法,還有待探究。
結果如下圖表格的第二行
Considering Decision Boundary
希望兩個domain的分布更加接近——讓target domain 的data盡量避開 source domain中得到的分界點boundary,離boundary越遠越好,于是讓不同類別的“輸出”之間差異盡可能地大,盡可能地集中在某一類別上
有一個知名的方法叫做 DIRT-T,還有另外一個招數叫Maximum Classifier Discrepancy
?
在target Domain上只有很少量且沒有標注的數據
不只沒有 Label而且 Data 還很少,比如說只有一張而已。有一個方法叫做 Testing Time Training。
沒有目標領域資料:Domain Generalization
對 Target Domain 一無所知,這個時候不叫 Domain Adaptation,通常就叫 Domain Generalization,在 Testing 的時候,不管來什麼神奇的 Domain,它都可以處理。
分成兩種狀況。一種狀況是訓練資料非常地豐富,包含了各式各樣不同的 Domain,假設要做貓狗的分類器,現在訓練資料裡面有真實的貓跟狗的照片,有素描的貓跟狗的照片,然后有這個水彩畫
的貓跟狗的照片,期待模型可以學到如何彌平 Domain 間的差異,測試資料是卡通的貓跟狗,模型可以處理
另外一種,假設訓練資料只有一個 Domain 呢,而測試資料有多種不同的 Domain,使用的思想類似于data augumentation,產生多個domain的資料,利用多個domain資料訓練出來的模型更強。
Universal Domain Adaptation
source資料和target資料不一定有相同的標簽。實線的圈圈代表Source Domain 裡面有的東西,虛實線的圈圈代表 Target Domain 裡面有的東西。
- Source Domain 裡面的東西比較多,Target Domain 裡面的東西比較少
- Source Domain 裡面的東西比較少,Target Domain 的東西比較多
- 可能兩者雖然有交集,但是各自都有獨特的類別
當有不一樣的label的時候怎么辦呢:通用領域自適應Universal Domain Adaptation,參見下面引用的文獻。
參考:Notion – The all-in-one workspace for your notes, tasks, wikis, and databases.
總結
以上是生活随笔為你收集整理的李宏毅机器学习——领域适应Domain Adaptation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让Fireball CodeEditor
- 下一篇: influxdb的retention p