對遷移學習中域適應的理解和3種技術的介紹
域適應是計算機視覺的一個領域,我們的目標是在源數據集上訓練一個神經網絡,并確保在顯著不同于源數據集的目標數據集上也有良好的準確性。為了更好地理解域適應和它的應用,讓我們先看看它的一些用例。
我們有很多不同用途的標準數據集,比如GTSRB用于交通標志識別,LISA和LARA dataset用于交通信號燈檢測,COCO用于目標檢測和分割等。然而,如果你想讓神經網絡很好地完成你的任務,比如識別印度道路上的交通標志,那么你必須首先收集印度道路的所有類型的圖像,然后為這些圖像做標注,這是一項費時費力的任務。在這里我們可以使用域適應,因為我們可以在GTSRB(源數據集)上訓練模型,并在我們的印度交通標志圖像(目標數據集)上測試它。
在很多情況下,很難收集數據集,這些數據集具有訓練魯棒神經網絡所需的所有變化和多樣性。在這種情況下,在不同的計算機視覺算法的幫助下,我們可以生成具有我們需要的所有變化的大型合成數據集。然后在合成數據集(源數據集)上訓練神經網絡,并在真實數據集(目標數據集)上測試它。
為了更好地理解,我假設我們對目標數據集沒有可用的標注,但這不是唯一的情況。
因此在域適應方面,我們的目標是在一個標簽可用的數據集(源)上訓練神經網絡,并在另一個標簽不可用的數據集(目標)上保證良好的性能。
分類pipeline
現在讓我們看看如何實現我們的目標。考慮以上圖像分類的例子。為了從一個域適應到另一個域,我們希望我們的分類器能夠很好地從源數據集和目標數據集中提取特征。由于我們已經在源數據集上訓練了神經網絡,分類器必須在源數據集上表現良好。然而,為了使分類器在目標數據集上表現良好,我們希望從源數據集和目標數據集提取的特征是相似的。因此,在訓練時,我們加強特征提取,為源和目標域圖像提取相似的特征。
成功的域適應
基于目標域的域自適應類型
根據目標域提供的數據類型,域適應可分為以下幾類:
- 監督 — 你已經標記了來自目標域的數據,目標域數據集的大小比源數據集小得多。
- 半監督 — 你既有目標域的標記數據也有未標記數據。
- 無監督的 — 你有很多目標域的未標記樣本。
域適應技術
主要采用三種技術實現任意域適應算法。以下是域適應的三種技術:
- 基于分布的域適應
- 基于對抗性的域適應
- 基于重建的域適應
現在讓我們逐個來看每種技術。
基于分布的域適應
基于散度的域適應原理是最小化源與目標分布之間的散度準則,從而得到域不變性特征。常用的分布準則有對比域描述、相關對齊、最大平均差異(MMD),Wasserstein等。為了更好地理解這個算法,讓我們先看看一些不同的分布。
在最大平均差異(MMD)中,我們試圖找出給定的兩個樣本是否屬于相同的分布。我們將兩個分布之間的距離定義為平均嵌入特征之間的距離。如果我們有兩個在集合X上的分布P和Q。MMD通過一個特征映射來定義,: X→H,這里H再生核希爾伯特空間。MMD的公式如下:

為了更好地了解MMD,請查看以下描述:如果兩個分布的矩相似,則它們是相似的。通過使用kernel,我可以對變量進行變換,從而計算出所有的矩(一階,二階,三階等)。在潛在空間中,我可以計算出矩之間的差值并求其平均值。
在相關對齊中,我們嘗試對源和目標域之間的相關(二階統計量)進行對齊,而不是使用MMD中的線性變換對均值進行對齊。
訓練時
推理時
上面的結構假設源域和目標域有相同的類別。在上述架構中,在訓練過程中,我們最小化了兩種損失,分類損失和基于散度的損失。分類損失通過對特征提取器和分類器的權值進行更新,確保獲得良好的分類性能。而散度損失則通過更新特征提取器的權值來保證源域和目標域的特征相似。在推理過程中,我們只需將目標域圖像通過神經網絡。
所有的分布通常是非參數而且是人工的數學公式,不是專門針對數據集或我們的問題的,如分類,目標檢測,分割等。因此,這種基于分布的方法并不能很好地解決我們的問題。但是,如果分布可以通過數據集或問題來學習,那么它將比傳統的預定義分布表現得更好。
基于對抗的域適應
為了實現基于對抗性的域適應,我們使用GANs。這里我們的生成器是簡單的特征提取器,我們添加了新的判別器網絡,學習區分源和目標域的特征。由于這是一個雙人游戲,判別器幫助生成器產生的特征對于源和目標領域是不可區分的。由于我們有一個可學習的判別器網絡,我們學習特定于我們的問題和數據集的特征提取,這可以幫助區分源和目標域,從而幫助生成器產生更魯棒的特征,即,不能很容易區分的特征。
訓練時,在源域上
訓練時,在目標域上
假設是分類問題,我們使用兩種損失,分類損失和判別器損失。分類損失的目的已在前面說明。判別器損失有助于判別器正確地區分源域和目標域的特征。這里我們使用梯度反向層(GRL)來實現對抗性訓練。GRL block是一個簡單的block,它在反向傳播時將梯度乘以-1或一個負值。在訓練過程中,為了更新生成器,我們有來自兩個方向的梯度,首先來自分類器,其次來自判別器。由于GRL的存在,判別的梯度乘以一個負值,導致訓練生成器的效果與判別器相反。例如,如果優化判別器損失函數的計算梯度為2,那么我們使用-2(假設負值為-1)來更新生成器。通過這種方式,我們試圖訓練生成器,使其生成即使是判別器也無法區分源域和目標域的特征。GRL層在許多域適應的文獻中都有廣泛的應用。
基于重建的域適應
這是基于圖像到圖像的轉換。一個簡單的方法是學習從目標域圖像到源域圖像的轉換,然后在源域上訓練一個分類器。我們可以用這個想法引入多種方法。圖像到圖像轉換的最簡單模型可以是基于編碼器-解碼器的網絡,并使用判別器強制編碼器 — 解碼器網絡生成與源域相似的圖像。
訓練時
測試時
另一種方法是使用CycleGANs。在Cycle GAN中采用了基于兩種編解碼器的神經網絡。一個用于將目標轉換為源域,另一個用于將源轉換為目標域。我們同時訓練了生成兩個域(源域和目標域)圖像的GANs。為了保證一致性,引入了循環一致性損失。這可以確保從一個域轉換到另一個域,然后再轉換回來,得到與輸入大致相同的圖像。因此,兩個配對網絡的總損失和是判別器損失與循環一致性損失的和。
總結
我們已經看到了三種不同的技術,可以幫助我們實現或實施不同的域適應方法。它在圖像分類、目標檢測、分割等不同任務中都有很大的應用。在某些方面,我們可以說,這種方法類似于人類如何學習視覺識別不同的東西。我希望這個博客能讓你了解我們是如何思考不同的域適應pipelines的。
英文原文:https://levelup.gitconnected.com/understanding-domain-adaptation-63b3bb89436f