Adversarial Discriminative Domain Adaptation

Motivation

  1. 在做區分的任務或者域偏移較大任務上之前的方法比較不那麼令人滿意。例子是:CoGANs。這種方法只在源域和目標域非常相似的情況下(如MNIST和USPS)顯示出優勢,在我們的實驗中,我們很難使它收斂到更大的分布偏移。
  2. 在能夠處理大偏差任務的方法上,大多採用了固定權重的方法來進行訓練(主要就是target domain的分類那邊,基本是源和目標共用一個分類器)。
  3. 其實很多方法都沒有用到GAN的標準的loss。
  4. 現在的方法基本都是說,讓一個映射,將target映射到source ,然後用source的分類器來處理。但是沒有說學習兩個映射,將source /target 都映射了,然後用映射後的來進行分類。

Method

? 論文方法講了很多,其實就是想解決三個問題:

1. 是使用一個基於生成器還是鑒別器的模型
2. 是使用固定的參數還是不固定的參數(對稱的還是非對稱的)
3. loss 函數怎麼選

方法細節

  1. 定義:我們定義了兩個域——源域和目標域,然後定義了兩個映射來體現我們學到的 representation—— M_sM_t ,然後定義了兩個分類器—— C_sC_t
  2. 目標: 使得 M_s( x_s)M_t(x_t) 儘可能接近。然後使得在源域經過 M_s 映射之後學習的 C_s 能直接用於目標域。

  3. 訓練目標域分類器:因為有標籤所以直接上公式就好,就是標準的那種有監督的學習方法:egin{array}{l}{min {M{s}, C} mathcal{L}{mathrm{cls}}left(mathbf{X}{s}, Y_{t}
ight)=}  {mathbb{E}{left(mathbf{x}{s}, y_{s}
ight) simleft(mathbf{X}{s}, Y{t}
ight)}-sum_{k=1}^{K} mathbb{1}{left[k=y{s}
ight]} ] log Cleft(M_{s}left(mathbf{x}_{s}
ight)
ight) quad(1)}end{array}
  4. 但是因為我們的目標域是沒有標籤的,所以怎麼最小化兩個域映射之後的距離的關鍵就是這個參數問題。講了好多的之前的各種各樣的處理的例子,然後回答問題的關鍵:我們採用一部分參數固定的方法(即一部分層的參數使用源域映射的參數)

即:我們可以說是半對稱?(這樣既能達到不是的所有的參數都被限制,又能達到部分對齊的效果)這是一種基於生成器的想法。

  1. 好了我們確定 M_t? 的參數過後,現在的問題就是怎麼選擇這個對抗學習M的loss函數。我們引入兩個東西 M ——域映射 D ——鑒別器,其中鑒別器的標準loss 是

mathcal{L}{mathrm{adv}{D}}left(mathbf{X}{s}, mathbf{X}{t}, M_{s}, M_{t}
ight)=-mathbb{E}{mathbf{x}{s} sim mathbf{X}{s}}left[log Dleft(M{s}left(mathbf{x}{s}
ight)
ight)
ight] -mathbb{E}{mathbf{x}{t} sim mathbf{X}{t}}left[log left(1-Dleft(M_{t}left(mathbf{x}_{t}
ight)
ight)
ight)
ight]

M的loss函數 ,第一種是直接: mathcal{L}{mathrm{adv}{M}}=-mathcal{L}{mathrm{adv}{D}} 就是使用梯度反轉層進行M的優化,可是呢,這個D因為會快速收斂,當他成為一個成熟的D的時候,他的可優化空間比較小,所以這個loss 超級小,就影響了還並沒有get到點的M

第二種是: mathcal{L}{mathrm{adv}{M}}left(mathrm{X}{s}, mathrm{X}{t}, D
ight)=-mathbb{E}{mathrm{x}{t} sim mathrm{X}{t}}left[log Dleft(M{t}left(mathrm{x}_{t}
ight)
ight)
ight] inverted label 這個方法雖然還是有上面的一樣的問題,但是他提供了比較強的loss,梯度消失的問題還是解決得比較好的。但是呢還是其實只是變的 M_t? ,如果兩個域相靠近就會有不穩定的現象。具體的提出在GAN 的論文裡面。

第三種是:

egin{array}{r}{mathcal{L}{mathrm{adv}{M}}left(mathrm{X}{s}, mathrm{X}{t}, D
ight)=}  {-sum_{d in{s, t}} mathbb{E}{mathrm{x}{d} sim mathrm{X}{d}}left[frac{1}{2} log Dleft(M{d}left(mathrm{x}{d}
ight)
ight)
ight.}  {+frac{1}{2} log left(1-Dleft(M{d}left(mathrm{x}_{d}
ight)
ight)
ight) ]}end{array}?

這個方法呢,就綜合考慮了兩個域相互接近的過程,比較穩定。

介紹了這麼多的loss 的優缺點,繼續看下面的。

  1. 但因為我們使用預訓練的源模型作為目標表示空間的初始化,並在對抗性訓練中修正源模型。這樣做,我們有效地學習了一個非對稱映射,在這個映射中,我們修改目標模型以匹配源分布。這與原始的生成對抗性學習環境最相似,生成的空間被更新,直到與固定的實際空間無法區分為止。這與原始的生成對抗性學習環境最相似,生成的空間被更新,直到與固定的實際空間無法區分為止。因此,我們選擇上一節描述的inverted label GAN loss。

所以整個的問題的公式就變成了:

? 過程示意圖:

?


推薦閱讀:
相关文章