筆記:Beyond sharing weights for deep domain adaptation

Based on deep learning, instead of sharing weights across source and target domains, this work proposed a two-stream architecture where different streams operate on different domains, with an additional loss function to imply the relationships across domains.
與以往在不同域上共享權重的方式不同,這篇文章提出在不同域上使用不同的權重係數,一個用於源域,一個用於目標域,同時提出一種方式來保持這兩個域上的網絡係數的相關性。
摘要:不同域上的數據往往有不同的特點,因此它們特徵提取往往需要不同的參數。本文基於這種考慮,在domain adaptation的應用上,提出一種兩個分流的網絡結構,一個用於源域,一個用於特徵域,區別於以往在不同域上共享權重(share weights)的結構,這對應了在不同域上採用不同但相關的參數結構。整個結構在文中用下圖表示:
architecture
其中上面的一列對應源域上的網絡,下面的列對應目標域上的網絡結構。爲了保證兩者之間的相關性,添加了layer-to-layer的損失函數 。
在預訓練階段,首先用源域上的數據對源域的網絡結構進行訓練,然後用訓練的結構對網絡的兩個分流進行初始化;在訓練階段,由於網絡每條分支上有不同的損失,傳回來的梯度也就不同,從而對網絡每層的權重進行差異化的更新,同時目標函數中layerwise的損失保證了兩個結構中權重不會有太大區別。下面是整個網絡的損失函數構成:
loss
其中的L(s),L(t)分別對應源域和目標域上標準的分類損失,如果是無監督的domain adaptation,L(t)爲0;L(w)衡量網絡中兩個分流中參數差異帶來的損失。其中r(w)是本文提出衡量網絡權重不同帶來損失的一種方法,下面會具體介紹。基於在分類器之前的一層學到domain invariant的特徵表示,文章基於MMD添加了損失函數L(MMD),這個損失用於最小化兩個分佈之間的距離。需要注意的地方是,對於第一個分類損失L(s,t)以及第三個分佈損失L(MMD),第一個損失是基於分類器的結果,第三個是作用在網絡最後的特徵。對於第二個兩個分流每層之間權重的損失,它的位置對不同數據集是不定的,也就是在某些層兩個分流實際還是之前的方法一樣使用shared權重,這種損失只存在不share權重的層之間。文章作者通過交叉驗證的方式確定第二個損失作用在哪些層。下面從不同損失的角度來介紹本文的內容。
這篇文章與之前方法最大的不同就是它的假設是不同域上,網絡的權重不能share,但是related。這種關係本文通過設計下面的三個損失來表示:
1. L(s,t):它是一個標準的分類器損失形式,對於無監督的情況,這個損失由源域上的標籤信息決定,就是L(s);
2. L(w):衡量兩個分流上每層權重差異所帶來的損失:由於本文的框架基於這樣的假設:兩個分流上每層權重是不同的,但是它們也是相關的。所以這個損失應該一方面可以對兩個矩陣(對應層上的權重)的細微差別insensitive,另一方面也能較好的對大的差異進行約束。矩陣之間常用的正則化項是L2 norm,但這種正則項對於較小的差異也很敏感。於是本文提出在L2 normal上進行一個指數變換,它比嶺迴歸而言對小的損失更加平滑。爲了很好的刻畫兩個分流的不同,基於指數變化,本文進一步引入一個線性變化,線性變化的參數通過訓練階段學習獲得。最終設計的正則項如下:
weightloss
值得一提的是文章還試過用複雜的變換來替換這裏的線性變換,但是效果相比於簡單的線性變換並沒有提高。同時對兩個參數損失的方案進行了對比:一個採用標準的矩陣L2範數定義損失;另一個用上面的r(w)定義,得到的對比結果如下:
compare
3. L(MMD):由於本文是使用的shared classifier結構,需要保證最後兩個網絡上特徵具有domain invariant的特點,作者在分類器的特徵分佈前加上了基於MMD的損失來衡量連個特徵分佈的區別。
訓練階段,首先用源域上的數據對標準的分類網絡(one stream)進行預訓練,用得到的參數對兩個分流進行初始化,然後反向傳播根據上面的代價函數進行網絡參數調整。由於針對每個數據集的網絡結構是不同的,也就是shared層是不一樣的。因此需要交叉驗證來選擇網絡結構。
文章最後給出了在數據集office和mnist-usps上的最優網絡結構(office是基於alexnet,mnist-usps是4層的網絡結構),分別如下:
stra
strb
可以看出,本文提出的第二種損失對於不同數據集的效果是不一樣的,一般而言,對於源域和目標域區別比較大的時候,這種損失能取得較好的效果。
分析:
1) 文章通過two-stream CNN結構來解決domain adaptation問題,與之前的方法相比,它在不同域上使用了不同的網絡參數,然後通過L(w)來保證它們之間的關係。
2) 從網絡結構看,基於不變特徵的損失項應該和domain classifier的作用相同,而對源域和目標域使用not shared but related參數和之前residual net的結構比較類似。它應該對應一個deep residual net版本。這裏面的模型參數基於一個線性變換來計算,這個應該與域之間的關係有聯繫。
3) 本文方法需要通過交叉驗證來確定在two stream中哪些層的參數是shared,哪些層的需要使用not shared but related參數。在使用交叉驗證的方法選擇網絡參數時比較麻煩。

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