现有两个数据集,

\[\mathcal{D}_s=\{(x^s_i,y^s_i)\}_{i=1}^{m} \]

\[\mathcal{D}_t=\{x^t_j\}_{j=1}^{n} \]

源域(Source Domain) \(\mathcal{D}_s\) 和目标域(Target Domain) \(\mathcal{D}_t\) 的数据经验分布不一样,但是任务是相同的。
任务是 利用源域中已有的知识(标签信息)去学习目标域的样本的类别

如现在有两堆数据,一堆是真实的动物照片,一堆是手绘动物的照片。两个数据集的风格是明显不一样的,它们的分布也是明显存在偏差的。如果我们直接在真实的动物照片上训练一个分类器,然后直接用在手绘动物的照片的分类上,性能必然是比较差的。
每个领域都有自己特有的知识,而这些特有的知识对其它领域反而是一种干扰

在UDA任务中,我们需要寻找一种“共有特征”。如在上面的照片中,对于真实的猴子和手绘的猴子,我们需要提炼出猴子的共有特征,如脸庞的形状,毛发的颜色等,摒弃一些领域自己特有的特征,如图片的背景,构图差异等。
假设我们现在有一个特征抽取器 \(f:\mathcal{X}\mapsto \mathcal{Z}\) ,可以抽取出“共有特征”,则根据这个 \(f\) ,我们可以构建出两个新的数据集,

\[\mathcal{D}_s=\{(z^s_i=f(x^s_i),y^s_i)\}_{i=1}^{m} \]

\[\mathcal{D}_t=\{z^t_j=(x^t_j)\}_{j=1}^{n} \]

\(\mathcal{D}_s\) 相当于我们的训练集,而 \(\mathcal{D}_t\) 就是我们的测试集。我们在训练集 \(\mathcal{D}_s\) 上直接训练一个分类器,然后用分类器对 \(\mathcal{D}_t\) 进行分类任务,即可完成UDA任务。

我们把“共有特征”称作“领域不变特征”。

下面我们回顾一下一个重要的工具叫做最大均值差异,利用它就可以抽取领域不变特征。

最大均值差异(Maximum Mean Discrepancy, MMD)

细节请参考我以前的帖子

  • 浅谈Maximum Mean Discrepancy (MMD)
  • 核均值嵌入(KME, kernel mean embeddings)
  • 再生核Hilbert空间(RKHS)
  • MMD用于检验两堆数据是否来源于同一个分布,

    \[\mathcal{D}_s=\{x_i\}_{i=1}^{m}\sim P \]

    \[\mathcal{D}_t=\{y_j\}_{j=1}^{n} \sim Q \]

    MMD用于检验 \(P=Q\)

    MMD的经验公式为,

    \[\widehat{\text{MMD}}(P,Q)^2=\frac{1}{m^2}\sum_{i,j} k(x_i,x_j)+\frac{1}{n^2}\sum_{i,j} k(y_i,y_j)-\frac{2}{mn}\sum_{i,j}k(x_i,y_j) \]

    用这个公式可以衡量两个分布之间的“距离”,如果MMD=0,则两个分布是一样的,如果MMD很大,说明两个分布明显是不一致的。
    \(k(x,y)\) 是核函数,常见的核包括

    \[k(x,y)=\exp \left(-\frac{\|x-y\|^2}{\delta} \right) \]

    拉普拉斯核:

    \[k(x,y)=\exp \left(-\frac{\|x-y\|}{\delta} \right) \]

    基于MMD的领域自适应方法

    模型的基本结构很简单,包括一个特征抽取器 \(G_f:\mathcal{X}\mapsto \mathcal{Z}\) 和一个特征分类器 \(G_y:\mathcal{Z}\mapsto\mathcal{Y}\) 。该模型与传统的分类模型是一致的, \(f(x)=G_y(G_f(x))\)
    现在我们有两个数据流,一个是输入源域数据 \(x^s\) ,经过 \(G_f\) 变成特征 \(z^s\) ,然后经过 \(G_y\) 变成类概率 \(\hat y^s\) 。我们源域有真实的标签 \(y^s\) ,所有我们可以构建一个分类loss函数,

    \[L_y=\frac{1}{m}\sum_{i=1}^{m}L(f(x_i^s),y_i^s) \]

    其中 \(L\) 是交叉熵损失。这个与传统的分类任务没有任何区别。

    下面,还有一个更重要的任务,就是寻找“领域不变”的特征。
    经过特征抽取器 \(G_f\) ,我们把所有的源域样本和目标域样本映射到特征空间,

    \[Z^s=\{z^s_1,z^s_2,\cdots,z^s_m\}\sim P \]

    \[Z^t=\{z^t_1,z^t_2,\cdots,z^t_n\}\sim Q \]

    我们的目标是寻找一种领域不变特征,即让分布 \(P\) \(Q\) 之间的“距离”越来越少,让两个分布一样,即可说明我们找到了源域和目标域一个共同的表示空间。

    我们可以用MMD来衡量P和Q之间的距离,并希望在训练过程中, \(G_f\) 能学习这样一组特征,使得MMD越来越小.
    所以我们可以构造这样一个loss函数,

    \[L_A = MMD(Z^s,Z^t) \]

    联合以上两个loss,我们可以联合训练一个简单的领域自适应模型,

    \[L=\frac{1}{m}\sum_{i=1}^{m}L(f(x_i^s),y_i^s) + \lambda MMD(Z^s,Z^t) \]

    所存在的问题

    这类方法存在一个非常明显的问题,就是 你很难保证你抽取出来的领域不变特征能够包含类别信息。如在上面猴子的例子中,抽取出来的领域不变特征可能并不包含猴子的关键特征,不能通过这些特征辨别出它是一只猴子还是一只猩猩。这一类能够“辨识”类别的特征有一个专用的名字叫做 判别特征

    这些领域不变的方法有一个假设前提:
    假设 \(P(Z)\) \(Q(Z)\) 是相似的,则有 \(P(Y|Z)\) \(Q(Y|Z)\) 也是相似的。
    实际上,很多时候这个假设前提并不能够被保证。

    因此现在很多UDA方法开始探索对齐条件分布 \(P(Y|Z)\) \(Q(Y|Z)\) 来寻找 判别特征 。我们下面将会详细的介绍几种典型的方法。