查看原文
其他

【综述专栏】Domain Adaptation基础概念与相关文章解读

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

作者:yearn

地址:https://www.zhihu.com/people/zyf-98-4


01

Domain Adaptation Foundations

传统ML:训练集数据集独立同分布,作为transfer-learning的子问题,最好先了解一下transfer-learning。
https://zhuanlan.zhihu.com/p/270593259
在domain Adaptation 的问题中,常见的setting如下,目标域与源域分布不同,域上执行的任务相同(比如都是分类任务),而且目标域没有或者只有少量的标签,这也就造成了unsupervised或者semi-supervised的问题。这里的主要内容是关于同质的,也就是target和source的数据类型一致。


02

Domain Adaptation Methods Overview

我们的target只有少量或者根本没有标签,因此分类器(或其他model)一般是在source domain上进行训练的,而我们的目标是target domain得到的特征也能输入该分类器,并得到很好的效果,那么自然而然我们需要让两个domain的特征尽可能接近。但是由于domain shift,传统model提取的target和source domain的特征差距很大,因此这里的解决方案是将两个不同的feature space投影到同一个。

2.1: Discrepancy-based methods

使用预定义的统计量,计算taget/source domain的距离,希望在统计上的距离尽可能的接近。这一部分的改进通常是找各种不同的统计量和不同的计算方法。

2.1.1 Deep Domain Confusion [1](MMD)-2014

两个loss,分类与domain loss,重点在于MMD这个东西,减小两个DNN学到的feature之间的距离,同时保证source domian分类器本身的性能。

2.1.2 Deep Adaptation Networks[2](DAN)-2015

相比于上一篇MMD,DAN在多个层上计算MMD距离

2.1.3 CORAL, CMD

CORAL: 使用second-order moment计算距离(DDM是一个均值的概念,即first-order),
CMD:更加延伸,使用了k-order moment计算距离

2.2: Adversarial-based methods*

通常有一个domain的分类器,如果分类器很强,特征仍然能够混淆它,说明我们学到的特征基本在同一个特征空间了。

2.2.1 Simultaneous Deep Transfer Across Domains and Tasks[3]

setting:semi-supervised
他的主要贡献就在于两件事情
  1. Maximum Domain Confusion:使用域分类器使得提取的target/source特征尽可能接近。做法就是交替优化两个矛盾的目标:
    1. 固定住特征提取器,使得domain分类器得到的结果尽可能接近真实值。
    2. 固定住domain分类器,优化特征提取器,使得分类器不能分辨图片来自哪个domain。
  2. Transfer Label Correlation:对于拥有相同标签的源域/目标域数据,希望他们输出的label的分布尽可能相同(交叉熵)。具体来说
    1. 将source domain中所有属于C类的图片的输出分布求和得到该类的输出分布  ,
    2. Target Domain中有C标签的数据可以得到输出分布  ,希望这两个分布越接近越好。
最终的损失函数就是分类损失+domain confusion loss+soft label correlation loss,

2.2.2 Domain Adversarial Training of NN(DANN)

setting:unsupervised
https://zhuanlan.zhihu.com/p/270593259
与2.2.1的联系:使用了gradient reversal layer避免了上面分步训练的情况,不需要fix一个去训练另一个。
每一次训练分成三步
  1. sample source,进行图片分类与域分类。
  2. sample target,进行域分类。
  3. 域分类器的梯度逆转传播

2.2.3 PixelIDA

setting:unsupervised,从model的功能来看,他可以分为三个部分
  1. 一个生成器,输入噪声与原图像,生成该图像在目标域的图像。
  2. GAN的判别器,判断图像的真假,提高图片质量。
  3. 分类器,不同domain的图片输入进来需要得到同一个分类结果。
那为什么是“pixel”呢?上图中不同domain差距非常大,直接长得都不一样了,但是通常长相还是比较类似的(high-level的结构还是比较像的),主要是图像光照,颜色不太一样(low-level的特征),这才是这篇文章关注的点。

2.3: Reconstruction-based methods

这里的问题是,我们如何知道我们提取的特征包含了足够的信息:使用重构损失,如果能重构的很好,说明信息很充分。(?重构不也包含了domain shift吗)

Deep Separation Networks--NIPS 2016

亮点:disentanglement, shared/exclusive features
  • 私有的encoder抽取domain-specific的特征,共享的encoder抽取的特征则是domain-invariant的。
  • 我们使用共享encoder提取的特征进行分类。
他的训练过程还是蛮有意思的,首先为了disentanglement,我们需要private/shared encoder提取出来的特征相似度尽可能小,所谓的相似度其实就是向量内积。所以这里对两个  的特征矩阵求向量内积再求F范数之和。
类似的我们最大化encoder抽取的source/target domain之间的距离(上面的MMD距离就可以)。最后,我们求出来的feature必须包含足够的信息(可以重构回原有的图像),因此我们会给一个重构损失(source和target都需要计算重构损失),然后source domain再额外计算一个分类损失即可。


03

DA Applications

3.1 Image to Image Translation

类似于cycle-GAN的形式,https://zhuanlan.zhihu.com/p/52583263

3.2 Semantic Segmentation

3.2.1 AdaptSegNet

有标签的仿真数据(游戏街景)与无标签的真实数据(真实街景),结构非常简单,就是网络共享参数,source domain的分割结果可以直接计算分割损失,source+target图像的分割结果通过分类器计算判别损失,希望两个domain的分解结果分布尽可能近。

3.2.2 CBST

提出了pseudo label的概念,迭代训练,终于摆脱了之前固化的框架。自步学习分为以下两个步骤
  • 先使用source domain的数据训练一个比较好的分割器,使用分割器对target domain的img进行分割(打标签),挑选我认为可信的label在target上进行监督训练。
    • 首先我们每个pixel都会输出它属于哪一类的概率,我们将softmax之后概率最大的那个类别拿出来,放入一个数组中。
    • 将所有pixel最大预测概率组成的数组进行排序,根据超参数  选前  的label作为可信的label。
    • 可信的label作为监督信号计算loss。
  • 优化目标函数
    • 源域:与ground truth直接计算交叉熵。
    • 目标域:
      • 与pseudo label计算交叉熵。
      • L1正则化:避免pseudo label全部都是0.
但是这里会有一些问题,对于一些很难分辨的类,我们的pseudo label总是指向其他类或者概率很低,那么我们永远没有机会对这些类进行优化。作者提出了class-balanced 的训练方法,即每个类维护一个array:

除此之外,作者还引入了一个比较强的先验:即很多类他们出现在图中的特定位置,比如天空,地面等,因此如果我们分类分到地面,而且位置在图像下侧左右,显然他的置信度比出现在图上方高,因此通过先验对pseudo label进一步精调。
https://www.cnblogs.com/zi-wang/p/13070322.html

3.3 Person Re-id--SPGAN

https://zhuanlan.zhihu.com/p/115061674
  1. 两个不同的域 duke 与 market1501。只有源域拥有标签。comptuer:SPGAN两个不同的域 duke 与 market1501。只有源域拥有标签。
  2. 目的是将源域的风格transfer到目标域的风格来进行训练、
因为要保持图片ID,在CycleGAN中引入了孪生网络。在训练过程中Cycle-GAN学习两个域的映射函数,孪生网络约束映射函数的空间。对于CycleGAN而言,有三个损失
  1. Adversarial loss:从源域  转到目标域  ,  与目标域风格尽可能接近,或者相反,反正这里是提升分类器  识别自己domain图像的能力。
  2. Cycle Loss:从源域  转到目标域  再转回源域  ,  尽可能像。
  3. Target Domain Identity Constraint: 源域的图像  丢进  仍然是  。

SiaNet: contrastive loss,转过去之后同一个id的图像要尽可能像,不同id的图像则要保持比较远。
其中是一对输入,d是两个输入的embeddings的欧式距离,i表示是否是positive pairs。输入向量的选择:对positive pairs,选择迫使网络把两个图片拉近;对negative pairs,选择

04

Common Trick

  1. Disentanglement:可解释,可控制
  2. Adversarial Training:学习域无关特征
  3. 最小化target/source之间的域差异:共享隐变量空间
来源视频:
https://www.youtube.com/watch?v=-DQBMAULXX8&ab_channel=Hung-yiLee

05

Theory Analysis[4]

https://zhuanlan.zhihu.com/p/50710267
Domain Adaptation理论分析
https://blog.csdn.net/a358463121/article/details/86627290
https://zhuanlan.zhihu.com/p/50710267
我们用如下的数学形式刻画在二分类任务上的Domain Adaptation问题。首先,我们将输入集记为  ,标注空间是一个概率空间,因为是二分类问题,我们的标注集就是  区间。在  上,我们定义一个domain是由  所构成的一个对。其中,  是一个分布函数,刻画输入集XX上每个样本的出现概率,而  是一个标签函数,  ,表示从输入集到标注集的一个映射,其中, ,可以是  区间内的任意实数值,表示样本  的标签为1的概率。一般而言,我们用字母  区分源域(Source Domain)和目标域(Target Domain),而两个域的数学表示分别记为  和  .
给定两个域之后,我们希望学习一个函数  预测输入所对应的标签,我们把model学到的函数  称之为一个假设(hypothesis),将  的差距记作
在源域上我们记作  ,但是通常我们的样本数目是有限的,因此我们对上式进行估计得到  ,同样也可以得到 。接着就需要设计一个度量准则,度量通过  映射到特征空间的特征分布 之间的距离。这个距离必须满足的条件是:能通过有限个样本数据计算。
这边找到距离叫  距离,如下:
其中花体  是波莱尔集,  是其一个子集。意思就是取遍所有的子集,找出在 、 上的概率差的最大值。
给  一个具体的取值,
则此时的  距离可记作  距离:
给一个简单的例子,如下:
两个高斯分布分别代表源域和目标域的特征分布。由于要取上确界,所以找到的集合  为  。
 距离的基础上,再定义  距离:
 ,  ,  XOR operator(直观理解一下就是,同一个  同一个  ,两个概率分布预测值的最大差距)
简单例子如下:
于是,  可以用下面的界限定:
其中,函数集合  只要取的比 集合 复杂即可,这个很容易达到,我们只需把神经网络设计的复杂一些就行。
从最后的式子来看,如果我们能一个在复杂度足够(能够实现比异或更复杂的操作)的函数类中,找到一个函数  ,使得  将来自于  的特征  都判为1,将来自于  的特征  都判为0的概率最大,那么我们就能得到  的上界。
其实这边的  就是最开始图中红色的那部分网络  啦!
好了,有了度量准则,那么下面就要介绍最重要的一个定理了。
Theorem: Let R be a fixed representation function from  to  ,  is a binary function class, for every  :
where,
这个定理说的是,我们训练得到的分类函数  在目标域数据上的错误率,被三个项所限定。第一项是  在源域上的错误率。第二项是通过  将源域、目标域数据都映射到特征空间后,两者特征分布的距离, 即 距离。第三项作为常数项,表示假设空间的合理程度(当假设空间  一旦给定,  就是一个常数项,因此无需过多关注)。那么,有没有办法让域之间的距离变得尽可能小呢?一个很自然的想法是通过特征空间过渡,如果我们设计两个映射,第一个映射将源域与目标域都映射到一个特征空间,在这个特征空间上,源域与目标域无法区分。然后我们再在特征空间上构造分类器,这样就能有效解决域适应问题。
这就是adversarial DA的思想
可以看出,要降低  ,表示函数  (即  )承担两项任务,需要降低  在源域上的错误率,还需要减小  距离。而 (即  )承担一项任务目标,就是降低在源域上的错误率。
对于  (即),要做的就是尽量能取到  中的上确界,让自己尽量能代表这个距离。其实,我个人想法,这边严格来说并不存在对抗,  并不是一个坏蛋想要增大我们的错误率,它只是在默默的做自己本职的工作,想取到上确界,让自己能代表这个 距离。而也不是去妨碍去取上确界,而且想减小上确界本身。
到此,三个网络为什么这么设计应该就很清楚了叭!(至少我觉得讲清楚了233333,当然,最重要的定理的证明我省略了,有兴趣看下面参考的论文。)
  • 实际计算
如果引入VC维那一套关于泛化误差的理论,可以得到如下结论:
 以  概率成立
 是经验损失,可以通过有限数据计算。
 是源域数据个数,  是VC维的维数,  是自然底数。
 以  概率成立。
可以通过给定数据计算。 表示源域和目标域数据个数。
最终,我们的误差界由下式界定:
  • 定理证明
Theorem: Let R be a fixed representation function from  to  ,  is a binary function class, for every  :
where,

proof:
令  表示特征空间  中被  判为类别1的那些特征的集合。
则有:
这里的  是亦或,也就是  意见不一致的特征组成的集合,即:
所以为什么不等式(1)成立?因为第一项  是  的错误率,包含  意见一致时的判断错误的情况,第二项是意见不一致时的概率,包含 意见不一致时  判断错误的概率。所以  所有判断错误的概率,都包含在后面两项中!
继续往下推:
这一步就没什么好说的了,就是一个数的绝对值大于等于其本身。
不等式(2)的第二项  是在源域上,  意见不一致的概率。一旦意见不一致,那么必然有一方是错的,所以这项必然小于  和  的错误率之和:
根据上文
所以不等式(2)的第三项
所以综合不等式(1-4),有:
定理得证。

参考

[1] https://arxiv.org/abs/1412.3474

[2] http://proceedings.mlr.press/v37/long15

[3] https://zhuanlan.zhihu.com/p/30621691

[4] http://www.fenghz.xyz/Domain-Adaptation-A-Survey/


本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。

直播预告



“综述专栏”历史文章



更多综述专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存