域适应(domainadaptation)
⽂章⽬录
导读
在迁移学习中, 当源域和⽬标的数据分布不同 ,但两个任务相同时,这种特殊的迁移学习叫做域适应 (Domain Adaptation,DA )。因为其任务相同,域适应属于⼀种直推式迁移学习。在计算机视觉中,域适应是⼀个常见要求,因为带有标注的数据集很容易取得,但是获得的数据集和我们最终应⽤的数据集来源的域往往是不同的。那么解决这类问题的思路是什么呢?请看 AI 前线翻译的这篇⽂章,希望能有所启迪。
前⾔
过去⼗年来,计算机视觉领域如盛壮之时的骐骥,⼀⽇⽽驰千⾥。这⼀进展主要归功于卷积神经⽹络不可否认的有效性。如果使⽤⾼质量、带注释的训练数据进⾏训练,卷积神经⽹络(Convolutional Neural Networks,C东北鼢鼠
NN)可以进⾏⾮常精确的预测。例如,在分类设置中,你通常会使⽤⼀种标准的⽹络架构(如 ResNet、VGG 等),并使⽤你的数据集对其进⾏训练。这可能会得到⾮常好的性能。
另⼀⽅⾯,如果你没有为特定问题提供⼿动注释的⼤型数据集,卷积神经⽹络还允许利⽤已经通过迁移
学习训练⼀个类似问题的⽹络的其他数据集。在这种情况下,你可以使⽤⼀个在⼤型数据集上预训练的⽹络,并使⽤你⾃⼰的带注释的⼩型数据集对其⼀些上层进⾏调优。
这两种⽅法,都假定你的训练数据(⽆论⼤⼩)都代表了基本分布。但是,如果测试时的输⼊与训练数据有显著差异,那么模型的性能可能不会很好。举个例⼦,假设你是⼀名⾃动驾驶汽车⼯程师,你想要分割汽车摄像头拍摄的图像,以便了解前⽅的情况(如建筑物、树⽊、其他汽车、⾏⼈、交通信号灯等)。NYC 数据集有很好的⼈⼯⽣成的注释,你可以使⽤这些注释来训练⼀个⼤型⽹络。你在曼哈顿的街道上测试你的⾃动驾驶汽车,⼀切似乎都很顺利。然后你在巴黎街道测试同样的系统,突然情况变得⾮常糟糕。这辆汽车再也⽆法探测到交通信号灯,它看到的汽车也⾮常不⼀样(因为巴黎的出租车没有嘴唇黑紫
黄⾊的),街道也不再那么笔直了。
你的模型在这些场景中表现不佳的原因是问题域发⽣了变化。在这种特殊情况下,输⼊数据的域发⽣了变化,⽽任务域(标签)保持不变。在其他情况下,你可能希望使⽤来⾃相同域的数据(针对相同的基本分布绘制)来完成新任务。同样,输⼊域和任务域可以同时发⽣变化。在这些情况下,域适应 就会来拯救你。域适应是机器学习的⼀个⼦学科,它处理的 场景是,在不同(但相关)的⽬标分布的背景下,使⽤在源分布上训练的模型。通常,域适应使⽤⼀个或多个源域中的标记数据来解决⽬标域中的新任务。因此,源域和⽬标域之间的关联程度通常超好看的重生文
决定了适应的成功程度。
域适应有多种⽅法。在“浅层(不是深度)”域适应中,通常使⽤两种⽅法:重新加权源样本,在重新加权样本上进⾏训练,并尝试 学习共享空间来匹配 源和⽬标数据集的 分布。虽然这些技术也可以应⽤于深度学习,深度神经⽹络 学习的深度特征,通常会产⽣更多的可转移表⽰(⼀般来说,在较底层中具有⾼度可转移的特征,⽽在较⾼层中可转移性就急剧下降了,请参阅 Donahue 等⼈的论⽂ DeCAF: A Deep Convolutional Activation Featurefor Generic Visual Recognition(《DecAF:通⽤视觉识别的深度卷积激活特征》))。在深度域适应 中,我们尝试使⽤深度神经⽹络的这⼀特性。
域适应类别
以下的总结主要是基于 Wang 等⼈的这篇综述论⽂:Deep Visual Domain Adaptation: A Survey(《深度视觉域适应研究综述》),以及 Wilson 等⼈的这篇评论⽂章:Unsupervid Deep Domain Adaptation(《⽆监督深度域适应》)。在这项⼯作宣德年制香炉
中,作者区分不同类型的域适应,取决于任务的复杂性、可⽤的标记 / 未标记数据的数量以及输⼊特征空间的差异。它们特别定义了域适应问题,即任务空间相同,区别仅在与输⼊域的散度(divergence)。根据这个定义,域适应可以是同构(homogeneous)的(输⼊特征空间相同,但数据分布不同),也可以是异构(heterogeneous)的(特征空间及其维度可能不同)。
域适应也可以在⼀个步骤(⼀步域适应(one-step domain adaptation))中发⽣,或者通过多个步骤
发⽣,遍历过程中的⼀个或多个域(多步域适应(multi-step domain adaptation))。在本⽂中,我们将只讨论⼀步域适应,因为这是最常见的域适应类型。
根据你从⽬标域获得的数据,域适应可以进⼀步分类为 监督(supervid)域适应(你确实标记了来⾃⽬标域的数据,尽管这些数据的数量,对于训练整个模型来说还是太⼩了)、半监督(mi-supervid)域适应(你既有已标记的数据,也有未标记的数据)、⽆监督(unsupervid)域适应(你没有来⾃⽬标域的任何标记数据)。
任务相关性
我们如何确定在源域中训练的模型是否可以适应我们的⽬标域呢?事实证明,这个问题并不容易回答,任务相关性仍然是个活跃的研究课题。如果两个任务都使⽤相同的特征进⾏决策,我们就可以将它们定义为相似的任务。另⼀种可能性是,如果两个任务的参数向量(即分类边界)很接近,则将它们定义为相似的(参见 Xue 等⼈的论⽂ Multi-Task Learning for Classification with Dirichlet Process
Priors(《基于 Dirichlet 过程先验的分类多任务学习》))。另⼀⽅⾯,Ben-David 等⼈提出,如果两个任务的数据日本经典动漫
都可以通过⼀组变换F 从固定的概率分布中⽣成,则这两个任务是 F 相关的(参见 Exploiting Task Relatedness for Multiple Task Learning(《利⽤任务相关性进⾏多任务学习》))。
尽管有这些理论上的考虑,但在实践中,可能有必要尝试在⾃⼰的数据集上进⾏域适应,看看是否可以通过使⽤源任务的模型为⽬标任务获得⼀些好处。通常,任务相关性可以通过简单的推理来确定,例如来⾃不同视⾓或不同光照条件的图像,或者在医学领域中来⾃不同设备的图像等。
⼀步域适应技术及其应⽤
⼀步域适应有三种基本技术:
基于散度的域适应
基于对抗的域适应,使⽤⽣成模型(⽣成对抗⽹络,GAN)或域混淆损失函数
基于重建的域适应,使⽤堆叠式⾃编码器(stacked autoencoders,SAE)或⽣成对抗⽹络。
基于散度的域适应
基于散度的域适应,通过 最⼩化源和⽬标数据分布之间的散度准则来实现,从⽽实现 域不变的特征表⽰。如果我们找到这样⼀种特征表⽰,分类器将能够在这两个域上执⾏得同样好。当然,这是假设存在这样⼀种表⽰,⽽这种表⽰⼜假设任务以某种⽅式相关。
最常⽤的四种散度度量是:最⼤均值差异(Maximum Mean Discrepancy,MMD)、相关对齐(Correlation
Alignment,CORAL)、对⽐域差异(Contrastive Domain Discrepancy,CCD)和 Wasrstein 度量。
MMD 是⼀种假设检验,将两个样本映射到⼀个再⽣核希尔伯特空间(Reproducing Kernel Hilbert Space,RKHS),然后通过⽐较特征的均值来检验这两个样本是否属于同⼀分布。如果均值不同,则分布也可能不同。这通常是通过使⽤核嵌⼊技巧并使⽤⾼斯核⽐较样本实现的。这⾥的直觉是,如果两个分布相同,来⾃每个分布的样本你之间的平均下你公司性应该等于来⾃两个分布的混合样本之间的平均相似性。在域适应中使⽤ MMD 的⼀个例⼦,可参见 Rozantv 等⼈的论⽂ Beyond Sharing Weights for Deep Domain
Adaptation(《除共享权重外的深度域适应》)。在这篇论⽂中,双流架构(two-stream architecture)使⽤的权重是不共享的,但通过使⽤分类、正规化和域差异(MMD)损失的组合导致相似的特征表⽰,如下图所⽰。
因此存储容量单位
,设置可以是监督的、半监督的、甚⾄是⽆监督的(在⽬标域中没有分类损失函数)。
CORAL 类似于 MMD,但它试图调整源分布和⽬标分布的⼆阶统计(相关性),⽽不是使⽤线性变换的均值。在 Sun 等⼈撰写的论⽂Deep CORAL: Correlation Alignment for DeepDomain Adaptation(《Deep CORAL:深度域适应的相关对齐》)中,通过使⽤源和⽬标协⽅差矩阵之间的 Frobenius 范数构造可微分的 CORAL 损失函数,在深度学习的环境中使⽤ CORAL。
CCD 也是基于 MMD 的,但也通过查看条件分布来利⽤标签分布。这就确保了联合域特征仍然保留 w.r.t 标签的预测性。最⼩化 CCD 可最⼤限度地减少类内差异,同时使类间差异最⼤化。这需要源域标签和⽬标域标签。为摆脱这种约束,Kang 等⼈撰写的论⽂ Contrastive Adaptation Network for Unsupervid Domain Adaptation(⽆监督域适应的对⽐适应⽹络)提出,在⼀个联合优化⽬标标签和特征表⽰的迭代过程中,使⽤聚类来估计损失的⽬标标签。在此基础上,通过聚类找到⽬标标签,从⽽使 CCD 最⼩化以适应这些特征。
最后,源域和⽬标域中的特征和标签分布可以通过考虑最优传输问题及其对应的距离(即 Wasrstein 距离)来对齐。这是在Damodaran 等⼈的论⽂ DeepJDOT: Deep Joint Distribution OptimalTransport for Unsupervid Domain Adaptation (《DeepJDOT:⽤于⽆监督域适应的深度联合分布优化传输》)中提出的。作者提出通过优化传输来使联合深度特征表⽰与标签之间的差异最⼩化。
基于对抗的域适应
这种技术是尝试通过对抗训练来实现域适应。
⼀种⽅法是使⽤ ⽣成对抗⽹络 来⽣成与源域相关的合成⽬标数据(例如通过保留标签)。然后将这些合成数据⽤来训练⽬标模型。
CoGAN 模型 尝试通过对源分布和⽬标分布使⽤两个⽣成器 / 判别器对来实现这⼀点。对⽣成器和判别器的权重进⾏共享,来学习域不变的特征空间。通过这种⽅式,可以⽣成标记的⽬标哦数据,这些数据可以进⼀步⽤于诸如分类等任务中。
在另⼀个装置中,在 Yoo 等⼈的论⽂ Pixel-Level Domain Transfer(《像素级域迁移》)中,作者提出,尝试通过使⽤两个判别器来学习 源 / ⽬标转换器⽹络:⼀个⽤于确保⽬标数据是真实的,另⼀个⽤于保持源域和⽬标域之间的相关性。因此,⽣成器以源数据为条件。这种⽅法只需要⽬标域中未秦晋之好
标记的数据。
除了当前任务的分类损失函数之外,如果使⽤所谓的域混淆损失函数,我们还可以完全摆脱⽣成器,⼀次性完成域适应。域混淆损失类似于⽣成对抗⽹络中的判别器,因为它试图匹配源域和⽬标域的分布,以“混淆”⾼级分类层。也许这种⽹络最著名的例⼦是 Ganin 等⼈提出的 域对抗神经⽹络(Domai
n-Adversarial Neural Network,DANN)。该⽹络由两个损失函数组成,即分类损失函数和域混淆损失函数。它包含⼀个 梯度反转层(gradient reversal layer)来匹配特征分布。通过最⼩化源样本的分类损失函数和所有样本的域混淆损失函数(同时最⼤化特征提取的域混淆损失函数),这就确保了对分类器⽽⾔,这些样本是⽆法区分的。
基于重建的域适应
这种⽅法使⽤⼀个 辅助重建任务 为每个⽉创建共享表⽰。例如,深度重建分类⽹络( Deep Reconstruction Classification
Network,DRCN)试图同时解决这两个任务:
(i) 源数据的分类
(ii) 未标记⽬标数据的重建
这确保了⽹络不仅能够学习正确识别⽬标数据,⽽且还能够保存⽬标数据的信息。在这篇论⽂ Deep Reconstruction-Classification Networksfor Unsupervid Domain Adaptation(《⽤于⽆监督域适应的深度重建分类⽹络》)中,作者还提到重建管道学习将源图像转换为类似于⽬标数据集的图像,这表明两者都学习了⼀个共同的表⽰⽅式。
另⼀种可能性是使⽤所谓的 循环 GAN。循环 GAN 的灵感来⾃于机器端午节作文400字
翻译中的双重学习概念。这个概念是同时训练两个相反的语⾔翻译器(A-B,B-A)。循环中的反馈信号由相应的语⾔模型和共同的 BLEU 分数组成。使⽤ im2im 框架也可以对图像进⾏同样的处理。在这篇论⽂ Unpaired Image-to-Image Translationusing Cycle-Consistent Adversarial Networks(《使⽤循环⼀致对抗⽹络的不成对图像到图像的转换》)中,作者提出了在不使⽤任何成对图像样本的情况下,如何学习从⼀个图像域到另⼀个图像域的映射。这是通过同时训练分别在两个域中⽣成图像的两个 GAN 来实现的。为了确保⼀致性,引⼊了 循环⼀致性损失函数(cycle consistency loss)。这确保了从⼀个域转换到另⼀个域,然后再转换回来,得到的图像域输⼊的图像⼤致相同。因此,两个成对的⽹络的完全损失函数是两个判别器的GAN 损失函数和循环⼀致性损失函数的总和。
最后,通过将它们的输⼊调整为来⾃另⼀个域的图像上,⽣成对抗⽹络还可以⽤于编码器 - 解码器设置中。在 Isola 等⼈的论⽂ Image-to-Image Translation with Conditional Adversarial Networks(《基于条件对抗⽹络的图像到图像转换》)中,作者提出,条件⽣成对抗⽹络(conditional GAN)是通过调节输⼊上的判别器和⽣成器的输出,来将图像从⼀个域转换到另⼀个域。这可以通过使⽤简单的编码器- 解码器架构来实现,也可以通过使⽤带有跳跃连接(skip-connections)的 U-Net 架构来实现。
结论
深度域适应允许我们将源任务上的特定深度神经⽹络锁学的只是迁移到新的相关⽬标任务上。这种⽅法已经成功地应⽤于图像分类、风格转换等任务。从某种意义上说,就特定的计算机视觉任务所需的训练数据量⽽⾔,深度域适应使我们更接近⼈类⽔平的表现。因此,我认为这⼀领域的进展对整个计算机视觉领域⾄关重要,我希望它最终能引导我们在视觉任务中能够进⾏有效⽽简单的知识重⽤。