【TL學習筆記】1:領域自適應(Domain Adaptation)方法綜述

1 遷移學習的直觀理解

人類容易在類似的任務上利用先前的經驗,比如學過自行車就很容易學會摩托車,學會打羽毛球也能幫助學習打網球,學過小提琴也會對學習二胡有幫助。也就是把一個領域上學習的知識遷移到另一個領域上,目的也是讓計算機有舉一反三的能力(大概是實現AGI的一個重要的坎),或者是去嘗試充分利用已經訓練過的某個領域的知識來解決當前的任務(這樣可以解決數據少的問題)。

在遷移學習中要強調源域(Source Domain)源任務(Source Task)目標域(Target Domain)目標任務(Target Domain) 的概念。在普通機器學習方法裏,源域和目標域是一樣的,就是訓練的是什麼數據測試的也是這個領域的數據(比如“攝像頭捕捉的行人圖片”);源任務和目標任務也是一樣的,即希望模型能做什麼事情,訓練的就是做這件事(比如“分類貓和狗”)。而在遷移學習中源域和目標域可能是不一樣的,源任務和目標任務也可能是不一樣的(甚至可能一個是分類一個是迴歸),我的理解是源域-目標域、源任務-目標任務至少有一對不一樣才能稱爲遷移學習。

2 遷移學習的種類

2012年的SJ Pan的綜述裏將遷移學習按照有標記的樣本的情況分爲下面三大類,可以解決不同的問題。
在這裏插入圖片描述

3 領域自適應簡述

Domain Adaptation是一種源任務和目標任務一樣,但是源域和目標域的數據分佈不一樣,並且源域有大量的標記好的樣本,目標域則沒有(或者只有非常少的)有標記的樣本的遷移學習方法。這樣就是怎麼把源域上從大量的有標記樣本中學習的知識遷移到目標域上,來解決相同的問題,而目標域上能利用的大多隻有沒有標記的樣本。

這裏要解釋一下“數據分佈不一樣”是什麼意思,就比如下圖中(a)組是不同來源的自行車和筆記本電腦的照片,有從購物網站下載的,也有數碼相機拍的生活照,也有網絡上獲取的照片等,它們雖然都表達自行車和筆記本電腦,但是數據分佈是不同的。
在這裏插入圖片描述
比如用(b)組的門牌號數據集SVHN去訓練模型,去提取SVNH和MNIST的特徵,然後將其可視化到一個平面內,是下圖左邊的樣子,藍色點是源域(SVNH)的樣本,紅色的點是目標域(MNIST)的樣本,也就是說直接在源域上訓練得到的分類器的分類邊界無法很好的區分目標域的樣本。而領域自適應這種遷移學習方法想達到的效果就是下圖右邊這樣,讓源域和目標域中的樣本能對齊,這樣模型就能在目標域上很好的使用了。
在這裏插入圖片描述

4 DA的研究方向

在領域自適應裏面也會細分出很多方向。如果源域和目標域距離太大(比如源域是文字,目標域是圖像),就可能需要進程多步的遷移,將這個非常大的遷移劃分成一步一步的小段遷移,這就是下圖中的多步領域自適應(Multi-step DA) 通過選擇合適的中間域來轉換成一個個單步領域自適應(One-step DA),這樣就只要去研究單步遷移怎麼做。

然後單步遷移又可以根據源域和目標域數據情況可以分成同質(Homogeneous,即數據空間一樣,只是數據分佈不一樣)和異質(Heterogeneous,數據空間都不同)兩種。
HomogeneousXS=XT, P(XS)P(XT)HeterogeneousXSXT \begin{aligned} Homogeneous & \Rightarrow \mathcal{X_S = X_T, \ P(X_S) \neq P(X_T)} \\ Heterogeneous & \Rightarrow \mathcal{X_S \neq X_T} \end{aligned}

接下來,在同質或者異質的DA中又分別可以根據目標域數據的打標籤情況分爲監督的、半監督的、無監督的DA。學術界研究最多的是無監督的DA,這個比較困難而且價值比較高。
在這裏插入圖片描述

5 DA方法的種類

傳統的的ML方法是最小化損失:
min 1ni=1nL(xi,yi,θ) min \ \frac{1}{n} \sum_{i=1}^{n} L(x_i, y_i, \theta)

基於特徵的自適應(Feature Adaption)是將源域樣本和目標域樣本用一個映射Φ\Phi調整到同一個特徵空間,這樣在這個特徵空間樣本能夠“對齊”,這也是最常用的方法:
min 1ni=1nL(Φ(xis),yis,θ) min \ \frac{1}{n} \sum_{i=1}^{n} L(\Phi(x_i^s), y_i^s, \theta)

基於實例的自適應(Instance Adaption)是考慮到源域中總有一些樣本和目標域樣本很相似,那麼就將源域的所有樣本的Loss在訓練時都乘以一個權重wiw_i(即表示“看重”的程度),和目標域越相似的樣本,這個權重就越大:
min 1ni=1nwiL(xis,yis,θ) min \ \frac{1}{n} \sum_{i=1}^{n} w_iL(x_i^s, y_i^s, \theta)

基於模型參數的自適應(Model Adaption)是找到新的參數θ\theta',通過參數的遷移使得模型能更好的在目標域上工作:
min 1ni=1nL(xis,yis,θ) min \ \frac{1}{n} \sum_{i=1}^{n} L(x_i^s, y_i^s, \theta')

如果目標域數據沒有標籤,就沒法用Fine-Tune把目標域數據扔進去訓練,這時候無監督的自適應方法就是基於特徵的自適應。因爲有很多能衡量源域和目標域數據的距離的數學公式,那麼就能把距離計算出來嵌入到網絡中作爲Loss來訓練,這樣就能優化讓這個距離逐漸變小,最終訓練出來的模型就將源域和目標域就被放在一個足夠近的特徵空間裏了。

這些衡量源域和目標域數據距離的數學公式有KL Divergence、MMD、H-divergence和Wasserstein distance等。

6 深度學習中的DA方法

注意,以下三種方法主體都屬於5中基於特徵的自適應方法。

6.1 基於差異的方法

例如經典的用於無監督DA的DDC方法,它是使用MMD(Maximum Mean Discrepancy) ,即找一個核函數,將源域和目標域都映射到一個再生核的Hilbert空間上,在這個空間上取這個兩個域數據分別作均值之後的差,然後將這個差作爲距離。用這個方法訓練網絡的Loss是:
L=LC(Xs,y) + λlLLM(Dsl,Dtl) \mathcal{L} = \mathcal{L}_C(X_s, y) \ + \ \lambda \sum_{l \in L} \mathcal{L}_M(D_s^l, D_t^l)

其中第一項就是源域之前的模型的Loss(比如分類任務就是分類Loss),然後第二項是在指定層ll上的MMD距離之和,乘了個表示重要性的係數λ\lambda。在訓練時有兩個網絡,一邊是源域的,一邊是目標域的,它們共享參數,然後在較深的某些層去計算MMD距離,然後按上面的公式那樣加在一起作爲整個模型的Loss。


這個DDC方法有很多改進,比如DAN(ICML,2015) 就是用了多個核函數的線性組合,並且在多個層上計算MMD距離

RTN(NIPS,2016) 前半部分還是DAN,但是光靠DAN特徵未必能對齊的那麼好,所以在之前直接接源域分類器的地方改成了一個殘差結構,用來學習源域和目標域分類器的差異。這種方法就是相當於在DAN上補充了5中基於模型參數的自適應方法。

還有JAN(arXiv,2016) 裏提出了一個JMMD(聯合分佈的MMD),通過優化這個JMMD能讓源域和目標域特徵和標籤的聯合分佈更近,這樣效果更好。

6.2 基於對抗的方法

RevGrad(ICML,2015) 的基本思路就是用GAN去讓生成器生成特徵,然後讓判別器判別它是源域的還是目標域的特徵,如果判別不出來就說明在這個特徵空間裏源域和目標域是一致的。

下圖中綠色部分是一個特徵提取器,源域和目標域數據都扔進去,它就是用來生成(或者叫提取)特徵的,然後紫色部分是對源域數據的特徵做分類的分類器,紅色部分是對源域數據和目標域數據的特徵做判別的判別器,這個判別器要不斷增強(能很好的判別是源域的還是目標域的特徵),同時生成器也要增強,讓生成出來的特徵能混淆判別器的判別,這樣最後生成(提取)出的特徵就是源域和目標域空間裏一致的了。
在這裏插入圖片描述
這個可以用GAN的最小化-最大化的思想去訓練,也可以用論文中的梯度反轉層(Gradient Reversal Layer) 的方法,就是在上圖中白色空心箭頭的位置加了個梯度反轉層,在前向傳播的過程中就是正常的網絡,即最小化Loss讓紅色部分的判別器性能更好,再反向傳播的過程中把梯度取負,即優化綠色部分的特徵提取器,來儘量讓紅色部分的判別器分不清特徵是源域的還是目標域的。這個方法就是一個訓練技巧。


對於它的改進有CAN(CVPR,2018),它把深度網絡連續的若干層作爲一個block,這樣劃分成幾個block,然後對每個block加一個判別器。它提出希望在網絡高層的block中的特徵和域的信息無關,因爲最後要得到的就是不區分源域和目標域數據的網絡;而希望在網絡的低層的block中的特徵和域的信息有關,因爲底層在提取邊緣信息,希望這些邊緣信息能更好提取目標域的特徵。

還有MADA(AAAI,2018)。之前的方法都是源域和目標域的類別都是相同的這些,但是有時候源域和目標域類別不一定相同,比如目標域類別可以是源域類別的子集。這個方法就是提出不應該是域到域的對齊,而是應該精細到類別到類別的對齊。這種方式就是隻在最後一層用判別器,但是對於每個類別都單獨使用一個判別器,這種就是引入語義信息(類別信息)的對齊,能讓特徵空間對齊的更好。但是因爲在無監督的DA裏目標域樣本沒有標籤,所以這裏要用源域分類器去對目標域樣本輸出屬於每個類的概率,屬於哪個類的概率更大就讓那個類的判別器發揮更大的作用。這種方法就是相當於在RevGrad上補充了5中基於實例的自適應方法。

6.3 基於重構的方法

DRCN(2016,ECCV) 如下圖結構,左側是一個Encoder,也是將源域和目標域樣本都扔進去生成特徵用的,然後對於源域特徵用一個分類器去分類,這樣使得Encoder生成的特徵能夠很好的區分源域的樣本(即是一個比較好的特徵),對於目標域特徵用一個Decoder去解碼,使得能儘量還原目標域的樣本。這樣下來生成的特徵所在的特徵空間在源域和目標域樣本上比較近。

在這裏插入圖片描述
DSN(NIPS,2016) 將源域和目標域的樣本分別拆分成兩部分,一部分是兩個域私有的Encoder,即嘗試編碼各自域中特定的信息,另一部分是兩個域共有的Encoder,顯然想到得到的就是這種共有特徵。在分類時儘量讓私有的特徵和共有的特徵正交,這樣體現出它們更不相關,兩個域各有一個損失LdifferenceL_{difference}。還要保證私有特徵和共有特徵通過Decoder能儘可能還原出之前的樣本,兩個域各有一個損失LreconL_{recon}。還要保證兩個域生成的共有特徵儘可能相像,對應一個損失LsimilarityL_{similarity}。訓練好後,用源域樣本(生成的共有特徵)訓練一個分類器,這個分類器在目標域上也有較好的性能。
在這裏插入圖片描述

參考閱讀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章