在計算機視覺任務中摸索domain adaptation and transfer learning,新手入門淺談心得

文中我們用DA代之domain adaptation,TL代指transfer learning。本人初涉這個領域,若下文心得有誤,望各位看官老爺/娘娘海涵。read with caution :)

故事如何講起呢?

首先明確一個故事背景:我們有Source domain(S)Target domain(T)這兩個東西。

domain這個概念太玄乎了,什麼叫domain?

domain就是三個要素的組合:

input space X:也即feature space,xi in X可以理解爲是一個描述輸入圖像的vector;

output space Y:也即label space,在classfication任務中,yi in Y可以是0,1(binary classification)或者(1,2,。。。,K)(multi-class classification)

probability distribution between X and Y:從X映射到Y的聯合概率分佈(P(x,y))。

此處插播一個很基礎的背景知識:

  • p(x,y)  is joint probability distribution;
  • p(x|y) & p(y|x) are conditional probability distribution;
  • p(x) & p(y) are marginal probability distribution;

在貝葉斯估計的框架下,這幾種概率分佈被賦予了新的意義和名字:

  • p(x) is the evidence or data distribution;
  • p(x|y) is the likelihood;
  • p(y|x) is the posterior distribution;後驗概率,即在驗視feature x之後得到的關於sample的label y的估計;
  • p(y) is the prior distribution;先驗概率,即驗視feature之前(沒看到圖片I就讓你估計I的label)得到的y的估計;

這裏再插播一套比較基礎的背景知識:

機器學習(Machine Learning)是建立在一個core assumption之上的,即:training and testing data are drawn unbiasedly from the underlying (xi,yi)sample space with the same probability distribution

這個core assumption是怎麼來的呢?這可能就要提到ERM(Emprical Risk Minimization)經驗風險最小化算法(Empirical risk =  training error?)。

ERM:

這裏不展開介紹ERM,僅僅說明一下它的內涵就是:機器學習的本質是,通過最小化一個模型在訓練集上的訓練誤差(training error),來確定模型參數,從而“學到”這個模型,即一個機器學習算法的實現其實是一個最優化過程(因爲很多機器學習模型的優化都是non-convex的,所以常常用到SGD這種優化算法)。

那麼,ERM通過union bound和Hoeffding不等式給出了一個基於training error的對generalization error(testing error)的approximation,or upper bound。

這裏的核心在於,training error僅僅是一個approximation of generalization error。而這個generalization error(模型在測試集,即沒見過的新樣本上的表現)纔是我們最終想要的

好了,我們知道Training error最小化不是我們想要的,我們想要最小化generalization(testing)error。

在一個標準的supervised learning框架下,training set和test set都是關於一個task的,是一個整體dataset的簡單split,所以對於traning set和testing set而言,它們的X,Y和P(X,Y)都是穩定的,不變的。

However,目前機器學習面臨的一大核心問題就是labelled data的bottleneck,導致最爲廣泛使用的supervised learning不能夠很好地scale-up。

換言之,不是所有應用都能夠給你提供足夠的labelled data,即成對兒的一大堆(xi,yi),讓你來揮霍,來劃分traing/test set,來訓練龐大參數的learning model。(model太大,數據太小,就很容易overfittin。還是那套嗑兒,數據不夠,就支持不了大模型的監督訓練。)可怕的是,大部分現實中的應用,都很難輕易得到足夠規模的labelled data。

那怎麼scale-up呢?怎麼用小數據來訓練大模型呢?兩條出路:

1. semi/un/weakly-supervised learning;

2. Transfer learning or Domain Adaptation。

我們這裏只談後者好麼。

洋洋灑灑,終於把這邏輯扯會到主題了:

要做DA或者TL,就是強調訓練Domain Source與測試domain Target 不一樣。Source大Target小。如何讓在S上訓的model在T上有很小的test error。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. 什麼是DA和TL:

DA和TL是兩種learning-to-learn的approach,即,我的target task的數據賊不好搞,那我可不可以在一個labelled數據賊好搞且與target task近似的source task上,用source數據訓練一個模型,然後把這個訓練過的模型想辦法adapt到target task上呢?從而回避掉target task數據不足的問題

pre-train + fine-tune就可以理解爲一種實現TL的手段

即,在S上pre-train網絡,用這個pre-trained的參數代替random initialziation,然後在T上fine-tune網絡。常見做法是僅pre-train一個CNN的前幾層。在fine-tune的時候fixed這些層(認爲是general feature extractor),僅僅tune後面幾層(往往是FCs構成的classifier)。

                            

2. DA和TL的區別是什麼:

DA與TL的區別取決於S與T兩個domain的三要素的情況:

所謂change與un-change,指的是S與T之間,相關要素是否有改變。可見,TL是一個比DA更寬泛的概念

3. DA和TL要解決的問題是什麼:S與T之間的domain shift

在S中學,在T中用。在這個把在S中學到的東西“transfer”到T中使用的過程,需要克服S與T dataset or domain之間的domain shift

domain shift體現在S於T domain各自的P(x,y)之間的差別

一共有三類domain shift(取決於兩種不同的joint probability distribution decomposition的方式):

P(x,y) = P(y)*p(x|y):當S與T domain各自的likelihood p(x|y)是相同的,而prior P(y)不同 -------- prior shift;

P(x,y) = P(x)*p(y|x): posterior p(y|x)不同,evidence p(x)相同 --------- concept shift;

P(x,y) = P(x)*p(y|x): posterior p(y|x)相同,evidence p(x)不同 --------- covariat shift

4. 解決DA和TL的主要手段是什麼(之後再展開介紹):

  1. Importance-weighting
  2. Subspace mapping
  3. Finding domain-invariant spaces
  4. Feature augmetnation
  5. Minmax estimators

 

 

 

 

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