Domain adaptation 与 Domain generalization

一、Domain adaptation (DA)

1. 基本介绍

1. 什么是domain?:
一堆数据服从相同的分布。
2. Domain adaptation 研究的问题
给了一个training set 这个set可能是由一个或多个domain 构成的,给定的testing set的domain与training set是不同的。利用training有Label 的数据训练模型,使得这个模型在testing数据上也可以使用,并且取得良好的效果。

在经典的机器学习中,当 源域目标域 数据分布不同,但是两者的任务相同时,这种 特殊 的迁移学习就是域自适应(Domain Adaptation)。

上面含义若看不太懂,简要解释如下:我们一般都是假设训练集和测试集分布一致,但是在实际中,训练集和测试集其实分布会有差异,因为测试场景非可控,因此存在测试集和训练集分布有很大差异的情况,这时候训练好的模型在测试集上效果却不理想,为解决这样的问题,出现了迁移学习。 简单举例来说:我们熟知的人脸识别,如果用东方人人像来训练,最后用于识别西方人,那当然性能会明显下降。
3. Domain adaptation 的解决思路
解决Domain adaptation问题主要的思路就是将source训练好的模型能够用在target上,域适配问题最主要的就是如何减少source和target不同分布之间的差异。

域适配包括无监督域适配和半监督域适配,前者的target是完全没有label的,后者的target有部分的label,但是数量非常的少。

这里主要介绍基于深度学习的方法,在我们已知finetuning之后,其实很容易想到,将在有标签的域A上训练好的模型用在无标签或者少量标签的域B上,中间的操作只需要改变输入,但是这种方式就会由于域A和域B数据分布不同导致效果并不一定会非常好,如果有方式能够减少A和B的差异,那就可以用同一个模型来跑A和B的数据。

2. Shallow DA

  • 样本自适应 Instance adaptation :对源数据每一个样本加权,学习一组权重使得分布差异最小化,然后重新采样,从而逼近目标域的分布。源域总有一部分数据类似于目标域,找到那部分数据就可以了,越像的数据,给的权重就越大。
  • 特征自适应 Feature adaptation:将源域和目标域投影到公共特征子空间,这样两者的分布相匹配,通过学习公共的特征表示,这样在公共特征空间,源域和目标域的分布就会相同。将源域和目标域提取到一个共同的特征空间中,使他们之间足够近,足够对齐,目标域的性能就可以提升。
  • 模型自适应 Model adaptation:考虑目标域的误差,对源域误差函数进行修改。假设利用上千万的数据来训练好一个模型,当我们遇到一个新的数据领域问题的时候,就不用再重新去找几千万个数据来训练,只需把原来训练好的模型迁移到新的领域,在新的领域往往只需相对较少的数据就同样可以得到很高的精度。实现的原理则是利用模型之间存在的相似性。

Domain adaptation 与 Domain generalization_第1张图片
以下是三种自适应的公式表达
Domain adaptation 与 Domain generalization_第2张图片

3. Deep DA

在深度DA中,DA大部分是特征自适应(Feature adaptation)。

fine-tune(微调):冻结预训练模型的部分卷积层(通常是靠近输入的多数卷积层),训练剩下的卷积层(通常是靠近输出的部分卷积层)和全连接层。

卷积神经网络的核心:
1)浅层卷积提取基础特征,即信息是更general, 更边缘的信息,如边缘,轮廓等基础特征。
2)深层卷积提取抽象特征,如整个脸型。越深层,提取的特征就越是特定的某个任务,即特征中融入了很多domain的信息,其特征更适用于源域而不适用目标域。

3.1 关于Fine-tune的一个实验

3.1 .1 实验操作
  1. 使用Dataset A,在一个固定的网络结构上进行训练得到model A(下图第一行绿色)
  2. 再使用Dataset B,在相同的网络结构上训练得到model B(下图第二行紫色)。
  3. 固定model B的前3层,在Dataset B上训练得到B3B(下图第三行上半部分),不固定model B的前3层,在Dataset B上训练得到B3B+(下图第三行下半部分)
  4. 同理固定/不固定model A的前三层,在Dataset B上训练得到A3B/A3B+(下图第四行)。
    Domain adaptation 与 Domain generalization_第3张图片
3.1 .2 实验现象解释
  1. 对于BnB(2)而言,原来训练好的B模型的前两层直接拿来就可以用,而且不需要调整,不会对精度造成影响。从3层开始有点下降,到了第4~5层,模型精度开始下降,然而到了6-7层,模型精度又奇迹般地回升了!这是为什么呢?

作者说明如下:对于一开始精度下降的4~ 5层,确实是到了这一步,feature变得specific了,但是都是从B数据训练来的,就算4~ 5层的特征specific,那不也是数据B的特征吗?为什么会下降呢?作者认为:**中间连续层之间存在一定的相互适应调整关系,这种关系是复杂而又脆弱的,这种关系不能够仅仅通过上层学习到,所以在3层开始,我们固定底层,导致网络无法进行上下之间的相互适应调整,使得3层之后的层无法进行很好地协调而学习到相对于task很specific的特征,使得精度开始下降。**而到了6~7层,精度又回升了,这是因为网络一共就8层,你把6层都固定住了,基本上整个特征学习也被固定住了,因此精度和原来的B不会相差太多。因此作者认为:神经网络中间特征层的连续协调关系要强于最顶和最下层的,这是之前文献所没有注意到的。

  1. 对于BnB+来说(3),模型精度没有什么变化,说明finetune对模型没有损失,并且训练时间还可减少,对训练有促进作用。

  2. 对AnB来说,直接将网络的前两层迁移到B,固定住,貌似对精度不会有什么影响,这说明AlexNet的前两层学习的特征是很基础,很泛化的,因此可以直接从A迁移到B而不损失精度。到了4~ 5层,精度开始大幅下降,而到了6~ 7层,精度出现小小上升然后又下降,这是为什么呢?根据BnB的结论,我们认为这种下降由两个因素导致:1)中间层之间具有相互适应协调的依赖关系。 2)特征太specific了,导致迁移到B上特征不适用

  3. 再看AnB+,加入了finetune之后的模型,在任何时候表现都很好,甚至比base B的表现还好,这又一次说明finetune对模型有很好的促进作用!
    Domain adaptation 与 Domain generalization_第4张图片

3.1 .3 实验结果
  • 神经网络的前3层基本都是general feature,进行迁移的效果会比较好;
  • 深度迁移网络中加入fine-tune,效果会提升比较大,可能会比原网络效果还好;
  • Fine-tune可以比较好地克服数据之间的差异性;
  • 深度迁移网络要比随机初始化权重效果好;
  • 网络层数的迁移可以加速网络的学习和优化。

3.2 Discrepancy-based DA

衡量两个domain之间的相似性
Domain adaptation 与 Domain generalization_第5张图片

3.2.1 DDC (Deep Domain Confusion)

问题:两类数据的分布不同,source训练好的分类器在target不一定适用
解决方案:在训练的时候能够同时减小source和target分布的差异,来让网络学习到更有迁移性的特征。

如何减小差异:神经网络中额外加入一个适配层和域误差损失来自动的学习一些特征表达。主要还是利用MMD,假设映射函数为 ϕ \phi ϕ,可以采用的优化目标如下,第一项是优化监督分类器,第二项是缩小domain之间的差异。
L = L C ( X L , y ) + λ M M D 2 ( X S , X T ) L = L_C(X_L,y)+\lambda MMD^2(X_S,X_T) L=LC(XL,y)+λMMD2(XS,XT)

适配层增加在哪里,维数取多少:MMD能够帮助来选择放层的位置以及决定层的维数,所以相关参数的确定就通过MMD来得到。 1.经过计算source和target在网络的不同层的特征表达之间的MMD数值,最后确定放在了fc7(倒数第二层)。2.第一个经过计算source和target在网络的不同层的特征表达之间的MMD数值,最后确定维度(512维)。

Domain adaptation 与 Domain generalization_第6张图片

3.2.2 DAN

在DDC的基础上进行了改进:

  1. 多个全连接层(最后三层)算domain之间的MMD loss以降低domain之间的差异。
  2. 网络浅层进行特征映射的时候,使用更加复杂的高斯核的组合MMD(多核MMD)。具体实现中采用了多核MMD,根据核技巧和多核的无偏估计,能够将复杂度变成O(n),且可以正常使用SGD的方式来优化
    Domain adaptation 与 Domain generalization_第7张图片

3.3 Adversarial-based DA

3.3.1 DANN( Domain Adversarial Neural Network ,又称 RevGrad 2016)

解决方案:针对无监督域的自适应,提取出源域和目标域同分布的特征(绿色部分),在特征上学习分类(蓝色)。方法是利用对抗学习的思想迫使提取的特征同分布(粉色部分),而且满足分类要求。
Domain adaptation 与 Domain generalization_第8张图片
目标函数:提取的特征满足两个要求:1)可以分类,所以该特征可以使得分类器分类损失最小;2)源域目标域特征同分布,这要求判别器难以判别样本来自哪个域,需要最大化判别器的损失。这两个损失要求相反,那就增加一个梯度反转层来实现域判别器梯度的反转。

从以上介绍,可以看出Feature Extractor和Domain Classifier是两个对抗的部分,因此自然也是一个minimax的问题。将以上三个部分的参数分别记为 θ f , θ y , θ d \theta_{f},\theta_{y},\theta_{d} θf,θy,θd,因此得到下面优化目标:

E ( θ f , θ y , θ d ) = Σ i ∈ S L y i ( θ f , θ y ) − λ Σ i ∈ S ∪ U L d i ( θ f , θ d ) E(\theta_{f},\theta_{y},\theta_{d})=\Sigma_{i\in S}L^{i}_{y}(\theta_{f},\theta_{y})-\lambda\Sigma_{i\in S\cup U}L^{i}_{d}(\theta_{f},\theta_{d}) E(θf,θy,θd)=ΣiSLyi(θf,θy)λΣiSULdi(θf,θd)

其中 i ∈ S i \in S iS表示样本来自源域, L y i L^{i}_{y} Lyi代表的是分类损失,比如Multi-Class Cross-Entropy, L d i L^{i}_{d} Ldi表示Domain Classifier分类的损失(具体做法是源域的样本的Domain Label为0,目标域样本的为1,训练一个二分类器,采用Binary Cross Entropy损失)。

那么优化过程就是下面所示的迭代过程:
在这里插入图片描述
为了避免迭代优化,DANN引入了一个梯度反转层(Gradient Reversal, RevGrad),主要是在Domain Classifier的梯度回传的过程中加一个反向操作,使得优化过程可以不用迭代。

特征可视化结果:
Domain adaptation 与 Domain generalization_第9张图片

3.3.2 MADA

问题:目标域是源域的子集,无法直接进行聚类。

解决方案:应该精细到类别与类别的对齐。只在网络最后一层加判别器,但是是有多个判别器,每一个判别器对应一个子类

网络介绍:看蓝色箭头部分:目标域进入到源域的分类器中得到分类概率,这个分类概率对目标域的feature进行加权,实现语义信息的对齐。举个栗子:如果target域的一幅图像经过之前训练好的源域的网络中,网络会对它所属类别进行归类。=> 引入语义的对齐

Domain adaptation 与 Domain generalization_第10张图片Domain adaptation 与 Domain generalization_第11张图片

3.3.4 Weighted Adversarial Nets

3.4 Reconstruction-based DA

待续。。。

二、Domain generalization

待续。。。

三、二者之间的异同

  • Domain adaptation :是一种将源任务和目标任务一样,但源域和目标域的数据分布不一样,并且源域有大量的标记样本,目标域则没有(或很少)标记样本的迁移学习方法。DA在训练中,源域和目标域数据均能访问(无监督DA中则只有无标记的目标域数据)。
  • Domain generalization: 主要做的就是通过多个标注好的源域数据,学习一个通用的特征表示,并希望该表示也能应用于未见过的相似样本,即目标域数据,即使目标域一个数据都没有。故训练过程中,我们只能访问若干个用于训练的源域数据,测试数据是不能访问的。

毫无疑问,DG是比DA更具有挑战性和实用性的场景:毕竟我们都喜欢“一次训练、到处应用”的足够泛化的机器学习模型。

DA与DG比较

  • DA不够高效,每来一个新域,都需要重复进行适应,而DG只需训练一次;
  • DA的性能比DG的性能要高,由于使用了目标域的数据;
  • DA的强假设是目标域的数据是可用的,显然有些情况是无法满足的,或者代价昂贵。
  • DA关注如何利用无标注的目标数据,而DG主要关注泛化性

参考文献:

  1. How transferable are features in deep neural networks
  2. 迁移学习之Domain Adaptation
  3. 文献阅读·80-DANN(RevGrad)
  4. Understanding Transfer Learning (B)
  5. Domain Generalization Notes

你可能感兴趣的:(深度学习,机器学习,深度学习,人工智能)