2017CVPR--Adversarial Discriminative Domain Adaptation 對抗判別域適應
ADDA是當前域適應方法中較為出色的一種,同時也是一種典型的asymmetric transformation。看了一些關於該論文的筆記,覺得不夠通俗,於是自己總結了一下,也希望可以幫助大家稍微理解一點。
論文地址:https://arxiv.org/abs/1702.05464
背景
生成對抗學習是現今一種很具前景的方法,生成器通過將源域分佈不斷的更新改進,使源域分佈近似於目標域分佈甚至是等同於目標分佈,從而讓域判別器無法識別出資料是來自哪一域。域適應是遷移學習的一部分,遷移學習則是想利用類似於目標分佈的源分佈,從中遷移出對目標任務分類有益的“知識”,或者是將源分佈與目標分佈對映到“共同特徵空間”,完成對目標任務的無監督/半監督/少樣本學習等。由此可見,對抗學習和遷移學習有太多明眼人看得出來的“勾搭”,如此,何不將二者融合,完成Learning大業?是的,對抗學習與遷移學習的融合是當前遷移學習領域中的一個熱點,一些方法通過將對抗學習用於無監督域適應,確實減少了源域和目標域之間的差異,並提高了泛化能力,但是其中也存在一些改進的地方,比如CoGAN對源域和目標域之間不太相似的情況下表現的不太滿意、使用梯度反轉在判別器訓練前期會收斂的很快,但會導致梯度的逐漸消失、使用權值共享的對稱對映(Symmetric mapping)使得源分類器表現很棒,但是在多源域的情況下表現就不好。因此提出了一個簡易而有效的ADDA框架,並在MNIST, USPS, 和 SVHN資料集上超越了當時的state-of-the-art效果。
解決思路
作者認為之前不同的演算法主要不同於設計:1.是否使用生成或者是判別基礎模型 2.使用何種損失函式(優化) 3.是否在域間分享權值(源域和目標域對映)。 如下圖:
而作者也從這幾個部分詳細的介紹了ADDA。
一、源域和目標域對映
如何最小化源域和目標域對映的距離是一個開放的問題,因此,第一步是將這些對映引數化。無監督域適應通常認為目標判別任務是一些分類任務,以前的域適應方法一般是在域間建立域適應判別模型。通過一個判別基礎模型,輸入影象被對映到對判別任務(例如影象分類)有用的特徵空間中,例如在數字識別中,可能是一個標準的LeNet模型。而對於將域適應和對抗模型相結合的例子,Liu和Tuzel使用了兩個生成對抗網路完成MNIST到USPS的遷移,並取得了很好的效果,這些生成模型使用隨機噪聲作為輸入以在影象空間中生成樣本,然後,網路中的對抗判別器的中間特徵被用來訓練一個目標任務分類器。這些特徵空間啊,中間特徵啊,就是對源域的對映結果,而完成這些對映的引數即對映的引數化。
一旦確定了源域的對映引數化 ,我們就必須決定如何引數化目標對映 。通常,目標對映幾乎總是在特定功能層(架構)方面與源域匹配(比如模型中的某些結構類似、將模型間的引數繫結),但是不同的方法已經提出了各種正則化技術。所有的方法都使用源對映來初始化目標對映引數,但是不同的方法在目標域和源域對映之間使用了不同的約束條件,即 ,而目的是通過約束源域對映和目標對映,來完成最小化源域和目標域之間的距離。
而常用的一種約束是源域和目標域之間的層級相等:
這些相等約束可以在卷積網路框架中通過權值共享很容易實現。通過限制所有的網路層,這樣可以強制源域和目標域對映保持一致,學習這樣的對稱轉換(symmetric transformation)可以節省模型中的引數(因為目標對映和源域對映引數基本一致)。然而因為這種約束比較粗魯,通常使得優化條件較差,失去了一些特定域特徵,這導致了在使用一個網路處理來自兩個不同域的圖片的情況下表現不太理想。
而另一種方法則是學習一種非對稱性變換(asymmetric transformation):只對網路層中的某一部分加以限制,從而強制部分對齊。Rozantsev表示部分權值共享也可以產生有效的適應性。
二、損失函式選擇(Adversarial losses對抗損失)
當目標對映引數化確定以後,就可以使用對抗損失來學習實際映射了。存在很多種不同的對抗損失函式可以選擇,而每種損失函式都有他們自己獨特的使用場景。所有的對抗損失都使用一種標準的分類損失$\mathcal{L}_{adv_D} $來訓練對抗判別器:
然後,不同的是在訓練對映中使用的損失函式 ,《Domainadversarial training of neural networks》中梯度反轉層中直接使用最大最小化判別器損失來優化對映:
而直接進行梯度反轉是有問題的,因為在訓練判別器早期收斂的較快,從而導致了梯度消失。將該式子分為兩個獨立的式子,一個用於生成器,一個用於判別器,其中
保持不變,而
變為:
這樣與minimax損失有著相同的固定點屬性,但是為目標對映提供了更強的梯度。稱這種經過修改的損失函式為"GAN loss function"。到此,已經為源域和目標域使用了獨立的對映,並且只對抗的學習了 ( 被固定)。這與GAN的設定是類似的,其中真實影象分佈保持固定,生成分佈通過學習以匹配它。GAN損失函式是生成器模擬另一個不變分佈的標準選擇。
三、ADDA
在上述的三個選擇:是否選擇生成或判別基礎模型,是否權值共享,使用何種對抗損失函式,ADDA使用了一個判別基礎模型,權值不共享和標準的GAN損失。框架流程如下圖所示:
首先,作者選擇了一個判別基礎模型,因為假設生成令人信服的域內樣本所需的大部分引數與判別適應任務無關。大多數之前的對抗適應性方法也因為這個原因直接在判別空間中優化。
接下來,將源域和目標域對映通過解開權值完成獨立。這是一種更具有靈活性的學習方式,因為它允許更多的域特定特徵被提取出來用以學習。由於目標域是沒有標籤可用的,因此,沒有權值共享,如果不注意正確的初始化和訓練程式,目標模型有可能會導致學習退化的現象。可以這麼理解,如果源和目標沒有約束,根據對抗損失各自學習的話,很有可能會產生類似於震盪效果的學習,即學習的退化,也不容易找到最優點,因此,在ADDA中,對網路增加了一個約束,這個約束就是對源模型進行預訓練(圖中的第一個),並且在對抗適應性中固定源模型引數(圖中的第二個)來完成,這樣可以將源模型作為一個參照,通過損失梯度傳遞,將經過對映的目標域資料分佈逐漸逼近源對映後的資料分佈,以至於判別器無法區分源域和目標域。
通過這樣做,可以有效的學習到一個非對稱對映,其中,通過修改目標模型以致於匹配源分佈。這與原始的生成對抗學習設計很相似,其中生成空間被更新直到判別器無法分辨。因此,也選擇了GAN損失函式。ADDA對應的無限制優化如下: