Introduction to Data Distribution Mismatch
Source domain and target domain
我们将源数据(source domain)记为 S={xs,ys},目标数据(target domain)记为 T={xt,yt}。通过在数据集上训练,我们可以得到 ps(ys∣xs),但是在测试上进行预测时,ps(yt∣xt) 并不一定能够得到正确的结果。
Data distribution mismatch
由于 ps(xs,ys)=ps(ys∣xs)ps(xs)pt(xt,yt)=pt(yt∣xt)pt(xt)
因此 data distribution mismatch 分为
- ps(xs)v.s.pt(xt)
- 数据边缘分布的差异
-
- ps(ys∣xs)v.s.pt(yt∣xt)
- 数据集标签的差异,比如人工标注时同一张图片可能有两个结果
-
Domain adaptationb
例如在 classification 问题中,假如训练集和测试集之间有较小的差异,可以通过正则化等方式来解决 overfitting 的问题。但是如果训练集和测试集的数据完全不同,那么就需要使用 domain adaptation,使得在训练集上得到的 classifier 在测试集上能够使用。
Different domains
Different homogeneous domains
训练和测试的数据可能来源不同,虽然在人看来差异不大,但是;计算机提取出的特征可能差别较大。这导致了 source domain 和 target domain 的不同。

Different heterogeneous domains
有时候数据的类型可能就完全不同。

Application of domain adaptation
- Autonomous driving:自动驾驶采集到的图像会随时间,场景等改变
- Medical diagnosis:医学数据通常为不能共享的隐私数据,而不同的病人之间差异又比较大。
- Video surveillance:监控摄像头需要在成本和性能之间做 tradeoff,我们希望在某一种摄像头上采集到的数据训练得到的模型能够应用于所有摄像头上。
Domain Adaptation Method
domain adaptation 可以按如下方式分类:
- Traditional era
- Projection to common subspace
- Sample selection
- Early deep era
- Deep feature + traditional method
- Deep network + traditional idea
- Batch normalization based
- Adversarial learning
- GAN era
Projection to common subspace
将 source 和 target 都投影到同一空间,使得数据分布相近。需要考虑的问题:如何进行投影、如何度量数据分布的差异。
Domain Invariant Projection (DIP)
source domain 和 target domain 分别记为:
Xs=[x1s,x2s,…,xnss]Xt=[x1t,x2t,…,xntt]
DIP 中使用两个分布中心点的距离来衡量两个分布的差异。
DIP 的基本思想为:先使用投影矩阵处理数据,然后再用投影函数 ϕ 来进一步投影(ϕ 和 kernel trick 中的函数相似,都是使用核函数实现从低维到高维的投影)。
d(WTXs,WTXt)2=∥ns1i=1∑nsϕ(WTxis)−nt1i=1∑ntϕ(WTxit)∥2=tr(KWL)
式中:
KW=[KssKtsKstKtt]Li,j=⎩⎨⎧ns21,nt21,−nsnt1,if i,j∈Sif i,j∈Totherwise
于是 DIP 可以写成:
minWs.t.tr(KWL)WTW=I.
在得到了 W 之后,ϕ(WTXs) 和 ϕ(WTXt) 就有相近的分布。
Transfer Component Analysis (TCA)
与 DIP 相反,TCA 是先使用核函数,然后再用矩阵投影。
首先
d(Xs,Xt)2=tr(KL),
其中
K=[KssKtsKstKtt]Li,j=⎩⎨⎧ns21,nt21,−nsnt1,if i,j∈Sif i,j∈Totherwise
记 ϕ~(Xst)≡K−21K,则 K 可以写成:
K=ϕ~(Xst)Tϕ~(Xst)
ϕ~(Xst) 称为 fake representation。引入矩阵 W~ 对其进行操作
K~=(ϕ~(Xst)TW~)(W~Tϕ~(Xst))=KWWTK
其中 W=K−21W~。然后利用 tr(KL~)=tr(KWWTKL)=tr(WTKLKW),得到最后优化目标为:
Wmins.t.tr(WTKLKW)WTW=I.
Subspace Alignment (SA)
可以理解为先将向量投影到子空间,然后再做对齐操作。比如有数据集:Xs=[x1s,x2s,…,xnss]Xt=[x1t,x2t,…,xntt] 分别通过 PCA 之后得到投影矩阵 Ps 和 Pt。然后再引入矩阵 M 缩小 Ps 和 Pt 之间的差距:
==Mmin∥MPs−Pt∥F2Mmin∥MPsPsT−PtPsT∥F2Mmin∥M−PtPsT∥F2
⇒M=PtPsT
然后选择子空间中比较主要的几个成分,得到 Pˉs 和 Pˉt,此时 M=PˉtPˉsT。那么最终有
Xˉs=PˉtPˉsTPˉsXsXˉt=PˉtXt
CORrelation ALignment (CORAL)
之前的方法对齐的都是一阶信息,该方法则是对齐二阶信息。记 Ct 和 Cs 分别为 Xt 和 Xs 的协方差矩阵。我们对 source domain 上的数据做变换,有 ATXs,从而得到新的 C^s
那么我们的目标为:
Amin∥C^s−Ct∥F2=Amin∥ATCsA−Ct∥F2
对协方差矩阵做特征值分解:Cs=UsΣsUsTCt=UtΣtUtT
该优化目标有闭式解:
A∗=UsΣs−21UsTUt[1:r]Σt[1:r]21Ut[1:r]Tr=min(rank(Cs),rank(Ct))
Sample selection
Kernel Mean Matching (KMM)
同样考虑样本中心距离:
d(Xs,Xt)2=∥ns1i=1∑nsϕ(xis)−nt1i=1∑ntϕ(xit)∥2
而 model selection 方法的目标是给不同的 source domain 样本分配不同的权重,直观上,距离 target domain 近的权重就大,反之更小。该得到的权重将被使用于后续的模型训练,这里以SVM为例:
- step 1: 得到权重
Step l:βimin∥ns1i=1∑nsβiϕ(xis)−nt1i=1∑ntϕ(xit)∥2
- step 2:训练模型
w,b,ξimins.t.21∥w∥2+Ci∑βiξiyi(wTϕ(xi)+b)≥1−ξi,∀i,ξi≥0,∀i.
这种方法可以形象地理解为:

距离 target domain 更近的数据上挂的秤砣更大,因此分类器更向 target domain 一方倾斜。
Selective Transfer Machine (STM)
该方法将 KMM 的两步直接合并为一步。还是以 SVM 为例:
w,b,ξi,βimins.t.21∥w∥2+Ci∑βiξi+∥ns1i=1∑nsβiϕ(xis)−nt1i=1∑ntϕ(xit)∥2yi(wTϕ(xi)+b)≥1−ξi,∀i,ξi≥0,∀i,βi≥0,i∑βi=1.
相当于直接将两个目标函数相加。优化的算法为:
- 固定 w,更新 βi,此时为一个 Quadratic Programming (QP) problem
- 固定 βi,更新 w,记为解决带权重的 SVM 问题。
Domain Adaptation SVM (DASVM)
- 初始状态:只考虑 source domain 上的有标签数据(target domain 的标签是我们要求的)
- 迭代:
- 使用当前数据做 SVM
- 将 target domain 上那些置信度较高的样本赋予标签,加入数据集
- 将 source domain 上那些置信度较低的样本从数据集中除掉
- 最终只剩下 target domain 的数据,并且已经得到了标签
Summary
下图展示了 sample selection 和 feature projection 这两种方法的关系:一者是在数据维度操作;另一者是在特征维度操作。

Learning to transfer
这个方法是对前面方法的选择。即:当我们有一个 source domain S 和一个 target domain T 的时候,该如何选择 domain adaptation 的方法 W。

Learning to transfer 是通过计算之前每次 domain adaptation 的提升 l,来学习一个 f,希望能够预测 li=f(Si,Ti,Wi)。那么在出现新的 source domain 和 target domain 时,就可以选择一个合适的 domain adaptation 的方法:
W∗=argWmaxf(SNe+1,TNe+1,W)