日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【TL学习笔记】1:领域自适应(Domain Adaptation)方法综述

發布時間:2023/12/16 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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,數據空間都不同)兩種。
Homogeneous?XS=XT,P(XS)≠P(XT)Heterogeneous?XS≠XT\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} HomogeneousHeterogeneous??XS?=XT?,?P(XS?)?=P(XT?)?XS??=XT??

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

5 DA方法的種類

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

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

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

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

如果目標域數據沒有標簽,就沒法用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)+λ∑l∈LLM(Dsl,Dtl)\mathcal{L} = \mathcal{L}_C(X_s, y) \ + \ \lambda \sum_{l \in L} \mathcal{L}_M(D_s^l, D_t^l) L=LC?(Xs?,y)?+?λlL?LM?(Dsl?,Dtl?)

其中第一項就是源域之前的模型的Loss(比如分類任務就是分類Loss),然后第二項是在指定層lll上的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}Ldifference?。還要保證私有特征和共有特征通過Decoder能盡可能還原出之前的樣本,兩個域各有一個損失LreconL_{recon}Lrecon?。還要保證兩個域生成的共有特征盡可能相像,對應一個損失LsimilarityL_{similarity}Lsimilarity?。訓練好后,用源域樣本(生成的共有特征)訓練一個分類器,這個分類器在目標域上也有較好的性能。

參考閱讀

  • 深度遷移學習綜述

總結

以上是生活随笔為你收集整理的【TL学习笔记】1:领域自适应(Domain Adaptation)方法综述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。