【遷移學習】Agile Domain Adaptation——一種平衡運算資源和速度的深度遷移學習方法

Agile Domain Adaptation

背景

在現在的遷移學習工作中,一直有一個矛盾:準確率和運算成本之間的矛盾。在神經網絡面對一個個的樣本進行分類時,有的樣本可能和訓練數據非常相似,用很少的層數就可以分類出來,但有的可能和神經網絡所見到的訓練樣本差別比較大,需要提取深層特徵才能良好的分類。對於簡單目標,進行深度特徵提取就比較浪費運算資源了。所以有了這個工作。

領域自適應是遷移學習領域中一個非常熱門的方向,其本意是用來解決訓練集數據和實際應用時採集的數據的分佈不同,導致模式識別系統效果不好,所以需要一類方法來自適應的來適應不同的應用環境。

現階領域自適應方法大體上可以分成兩個種類:傳統方法和深度的方法。傳統方法着重於遷移技術,比如數據分佈的適應。深度的方法一遍着重於特徵的提取,另一方面着重於通過端對端的方法來使知識自適應。在這些工作中無論是傳統的方法還是深度的方法,都忽略了一個問題是我們不能將目標域中的數據以相同的處理流程來處理。在目標域中不同的數據分佈和源域之間的相似性是不同的,數據分佈相似的數據更容易被遷移,而數據分佈差異較大的部分應當使用更多的運算能力來處理。如圖1,有一部分數據和源域數據相似程度很高,我們可以認爲數據分佈比較相近,另一部分數據相似度較低,則分佈相差較大同樣分類難度更大。

在這裏插入圖片描述
圖1

實現

現有的深度學習模型有一個特點,網絡淺層的神經結構往往會學習出一些比較泛化局部的特徵,而深層的網絡往往會學習出比較全局的深層特徵,對於相關的深度遷移學習模型也類似(如DAN,Deep adaption Networks),對於二者分佈比較相近的數據用比較淺層的模型就可以處理了,對於數據分佈差異比較大的數據,可以用整個模型。這種思想考慮到了源域數據和目標域數據之間不同數據的分佈差異,而不是把全部的數據都一股腦的送到同一個模型當中。具體結構如圖二。

在這裏插入圖片描述
圖2
要實現這樣一個網絡主要需要解決兩個問題:

  1. 得到一個具有多個出口的深度遷移網絡,確定損失函數,同時可以進行正常的訓練(可以用BP算法)。
  2. 確定一個評價準則,可以在實際應用中知道多個分類輸出口哪一個是最優的,到了哪一個出口後面的就不需要在求了。

損失函數確定

在源域上,一個端到端的神經網絡訓練問題可以有如下的損失函數:
Lsup=1nsi=1nsJ(f(xs,i),ys,i)\mathcal{L}_{\mathrm{sup}}=\frac{1}{n_{s}} \sum_{i=1}^{n_{s}} J\left(f\left(\mathbf{x}_{s, i}\right), \mathbf{y}_{s, i}\right)
這種優化方法,隨着損失函數的降低,可以使模型在源域上的效果更好,但是無法使訓練出的模型在目標域上有更好的表現,所以需要考慮到源域和目標域的損失情況。
Lexit e=Lsup +λLtran \mathcal{L}_{\text {exit }_{e}}=\mathcal{L}_{\text {sup }}+\lambda \mathcal{L}_{\text {tran }}
和普通模型不同的是,在這個模型中有多個輸出分類,所以需要考慮每一個端的優化問題。
L=ϵ=1mwϵLexitϵ\mathcal{L}=\sum_{\epsilon=1}^{m} w_{\epsilon} \mathcal{L}_{\mathrm{exit}_{\epsilon}}
整體的損失函數形式就如上面所示,在實際中w可以都變成1,這可以認爲是對每一個出口的重視程度都相同。
上面只是形式化了整個損失函數的結構。在這個工作當中,損失函數具體使用的是cross-entropy。
J(y^,y)=1CcCyclogy^cJ(\hat{\mathbf{y}}, \mathbf{y})=-\frac{1}{|C|} \sum_{c \in C} y_{c} \log \hat{y}_{c}
其中y^\hat{\mathbf{y}}是預測結果。
y^=softmax(f(x))=exp(f(x))cCexp(f(x)c)\hat{\mathbf{y}}=\operatorname{softmax}(f(\mathbf{x}))=\frac{\exp (f(\mathbf{x}))}{\sum_{c \in C} \exp \left(f(\mathbf{x})_{c}\right)}
在這裏,使用cross-entropy是經過深思熟慮的,這種方法的特性使得後面可以很好的區分哪一個出口的數據已經足夠好不需要繼續求解下面的出口了。
在遷移學習的部分,遷移部分的損失採用多核MMD。定義如下:
MMD(Xs,Xt)=1ns2i=1nsj=1nsk(xs,i,xs,j)2nsnti=1nsj=1ntk(xs,i,xt,j)+1nt2i=1nsj=1nsk(xt,i,xt,j)\begin{aligned} \operatorname{MMD}\left(\mathbf{X}_{s}, \mathbf{X}_{t}\right) &=\frac{1}{n_{s}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} k\left(\mathbf{x}_{s, i}, \mathbf{x}_{s, j}\right) \\-& \frac{2}{n_{s} n_{t}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{t}} k\left(\mathbf{x}_{s, i}, \mathbf{x}_{t, j}\right) \\ &+\frac{1}{n_{t}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} k\left(\mathbf{x}_{t, i}, \mathbf{x}_{t, j}\right) \end{aligned}
其中k()k(\cdot)是希爾伯特核。
原始數據特徵x上計算MMD,而最小化上式在匹配域自適應層生成的激活時是隱含的。在遷移學習中,鼓勵域適應層生成的源激活和目標激活保持良好的對齊,以便層參數可以由兩個域共享。因此,這裏顯式地最小化了層激活上的MMD 設Zsl\mathbf{Z}_{s}^{l}Ztl\mathbf{Z}_{t}^{l}分別表示層l從源域和目標域生成的激活量,層激活量的MMD計算公式爲:
Ltran=1ns2i=1nsj=1nsl=1Lkl(zs,il,zs,jl)2nsnti=1nsj=1ntl=1Lkl(zs,il,zt,jl)+1nt2i=1nsj=1nsl=1Lkl(zt,il,zt,jl)\begin{aligned} \mathcal{L}_{\mathrm{tran}} &=\frac{1}{n_{s}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} \prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{s, i}^{l}, \mathbf{z}_{s, j}^{l}\right) \\ &-\frac{2}{n_{s} n_{t}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{t}} \prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{s, i}^{l}, \mathbf{z}_{t, j}^{l}\right) \\ &+\frac{1}{n_{t}^{2}} \sum_{i=1}^{n_{s}} \sum_{j=1}^{n_{s}} \prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{t, i}^{l}, \mathbf{z}_{t, j}^{l}\right) \end{aligned}
等價於:
Ltran=2nsi=1ns/2(l=1Lkl(zs,2i1l,zs,2il)+l=1Lkl(zt,2i1l,zt,2il))2nsi=1ns/2(l=1Lkl(zs,2i1l,zt,2il)+l=1Lkl(zt,2i1l,zs,2il))\begin{array}{c}{\mathcal{L}_{\operatorname{tran}}=} \\ {\frac{2}{n_{s}} \sum_{i=1}^{n_{s} / 2}\left(\prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{s, 2 i-1}^{l}, \mathbf{z}_{s, 2 i}^{l}\right)+\prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{t, 2 i-1}^{l}, \mathbf{z}_{t, 2 i}^{l}\right)\right)} \\ {-\frac{2}{n_{s}} \sum_{i=1}^{n_{s} / 2}\left(\prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{s, 2 i-1}^{l}, \mathbf{z}_{t, 2 i}^{l}\right)+\prod_{l=1}^{L} k^{l}\left(\mathbf{z}_{t, 2 i-1}^{l}, \mathbf{z}_{s, 2 i}^{l}\right)\right)}\end{array}
計算過程如下:

在這裏插入圖片描述

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