本文主要介绍域自适应(Domain Adaptation)中的对抗域自适应方法(Domain Adversarial Learning)。
域自适应的算法不仅包括对抗域自适应方法,还包括
这些在迁移学习文献综述 Transferability in Deep Learning: A Survey 中进行了详细介绍,后续也会为这些方法推出相关的介绍文章。
对抗域自适算法的理论基础可以参考姐妹篇文章迁移学习:域自适应理论简介Domain Adaptation Theory。
本文力求用通俗的语言介绍对抗域自适应方法最重要的几个算法的设计以及它们的改进。 因此,不了解域自适应理论不影响阅读本文。
域自适的核心问题是解决数据分布不一致对机器学习模型性能的影响。
大部分机器学习模型通常会假设训练集和测试集来自相同的数据分布,这在人工打标并处理过的数据集上通常是能满足的。
然而如果让我们的目光不再局限在各种已经存在标注的数据后,而是扩展到全世界无数传感器、摄像头以及社交网络用户每天产生的海量数据时,我们就会发现标注数据是少数,与标注数据的分布不一致的无标注数据才是大部分数据的常态。
比如在野外部署了大量的摄像头来检测野生动物的行为[1],但是往往只有部分地区部分时间段的数据存在着标注。而在不同的数据中,摄像机角度、背景、植被、颜色和动物分布存在巨大差异,这导致在标注数据上训练的模型无法很好地泛化到其他地区或者未来产生的数据上。
上述场景的抽象描述就是无监督域适应的学习设定。给定从不同的数据分布P和Q中采样得到的有标注数据集 widehat{mathcal{S}}={(mathbf{x}_i^s, mathbf{y}_i^s)}_{i =1}^{n}和无标数据集 widehat{mathcal{T}}={mathbf{x}_i^t }_{i=1}^{m },无监督域自适应希望能学到一个在分布Q上性能尽可能好的模型。
以下简单总结了域自适应的文献中经常会出现各种和分布相关的概念。 区分这些定义可以帮助你更好地理解不同域自适应算法的动机以及它们的异同。
分布(Distribution) 指的是数据所有可能出现的值,以及在这些值上出现的概率。
分布偏移(Distribution Shift) 指的是训练集和测试集的分布P和Q出现了差异,即Pneq Q。常见的分布偏移可分为:
目前学术界关注最多的就是协变量偏移和标签偏移,因为它们相对容易解决。
在实际问题中出现的往往是上述情况的混合。比如在野生动物监测应用中,不同摄像头的拍摄背景和动物本身的分布都不同,此时边缘分布P(X)和标签分布P(Y)都随着数据域发生了变化。
对抗域自适应方法的核心想法是学习足够好的表示(representation),使得在表示层面降低不同数据分布的差异。
领域对抗神经网络 (Domain Adversarial Neural Network,DANN)[2]是域自适应使用最为广泛的方法之一。 它的核心想法就是在表示层面减少边缘分布P(X)和Q(X)的差异。
生成对抗网络Generative Adversarial Net (GAN)[3]引入了一个判别器来刻画真实的数据分布和生成的数据分布之间的差异。受到GAN的启发,DANN使用域判别器(Domain Discriminator)D来区分不同数据域产生的特征,
域判别器的准确率就刻画了两个数据域边缘分布的差异,然后特征生成器(Feature Generator)psi的目标就是努力欺骗域判别器,从而减少边缘分布的差异。
DANN隐含的假设是不同的数据域之间只存在协变量偏移P(X)neq Q(X),但是这是在许多实际问题中很难满足的假设,因此后续不断地提出改进(见本文的第3部分)。
需要指出的是,DANN基于的理论是mathcal{H}Deltamathcal{H}-Divergence,而后者推导的前提是二分类问题以及0-1损失,因此直接将DANN推广到多分类问题以及回归问题是没有理论保证的(详细解释参考迁移学习:域自适应理论简介Domain Adaptation Theory)。
直观地讲,在多分类问题中使用DANN存在的问题是——即使判别器被成功地欺骗,依然无法保证源域和目标域的特征分布是对齐的。因为很可能是不同类的特征(比如源域上的狗和目标域上的猫的特征)被拉近,尤其是类别数较多的时候。
避免上述问题的一个直接思路是让不同类的特征分别拉近,即显式地减少条件分布P(X|Y)和Q(X|Y)的距离。
然而目标域上的类别标签是未知的。因此条件对抗神经网络 (Conditional Adversarial Neural Network,CDAN)[4]在训练域判别器的时候使用模型的预测mathbf{y}代替条件分布中的标签,
让域判别器看到模型的输出,本质上增强了域判别器的区分能力。而为了欺骗加强后的域判别器,特征生成器不得不将每个类别的特征分别拉近。因此CDAN在类别数多的分类问题上会获得更好的迁移效果。
还有一种比较极端的拉近数据分布的方法,是直接对齐两个数据域的输出分布。
这里隐含的假设是标签偏移完全不存在,即P(Y)=Q(Y)。 理想情况下,模型在不同数据域上的输出分布也应该是一致的,但是由于源域和目标域之间存在的协变量偏移P(X)neq Q(X),使得模型的输出分布并不一致。 反过来思考,只要鼓励模型在不同数据域上的输出分布尽可能一致,就可以间接地拉近两个数据域的边缘分布。
在实际的分类应用中,数据域之间不存在标签偏移的假设几乎不可能成立。此外,相比于特征空间,输出空间丢失了太多的信息,因此只是约束输出空间的分布一致,并不能保证两个数据域的边缘分布被正确地拉近。因此,标签空间的对齐在大部分任务中是不合适的。
但是也有例外的情况,比如实例分割(Semantic Segmentation)这种像素级别的分类任务。 在这些任务中,输出空间本身包含丰富的信息,例如相邻的像素往往具有相同的类别,而这些信息在不同的数据域之间是相通的。因此, Adapt-SegMap[5]训练域判别器来区分实例分割模型的输出是来自源域还是来自目标域,同时鼓励特征生成器对齐目标域和源域的输出分布,这种方式反而比在特征空间进行对抗域自适应效果更好。
尽管对抗域自适应方法在常见的域自适应数据集上(Office-31,Office-Home以及VisDA2017)的效果很显著, 但在实际应用中它依然存在着若干不足,这里简单罗列四点。
域自适应的效果非常依赖于特定的假设。 Office-31这种数据集是人为构造出来的干净数据集,因此Office-31很好地满足了只存在协变量偏移的假设。但是在IWILDCAM-WILDS[1]这种真实应用的数据集上,无标注目标域是真的不存在人工标注,因此协变量偏移和标签偏移的存在都是无法避免的。而当标签分布不一致的时候,对抗训练极容易将不同数据域的不同类别的特征拉近,导致对抗域自适应反而会起到负作用。
因此在介绍不同算法的过程中,我们总是强调了它所基于的假设。这也是机器学习中没有免费午餐定理很好的一个例子——不同问题中的假设不同,因此没有哪种域自适应算法可以在所有问题上都有最好的效果。
当数据中不满足对抗域自适应算法所期望的假设时,一种直接的想法是,重新构造源域和目标域,使得它们尽可能满足算法的假设。
比如重要性加权对抗网络(Importance Weighted Adversarial Nets, IWAN)[6] 的动机就是挑选合适的数据参与对抗训练。 具体的,IWAN训练了两个域判别器,一个依然是用来学习域无关的表征,另外一个用来挑选合适的数据。让第二个域判别器感到困惑的数据往往属于源域和目标域上共享的类,这些数据应该参与到域对抗训练中,而第二个域判别器能够成功区分开的数据点很有可能属于源域上才有的类别,因此不应该参与到域对抗训练中。
IWAN
相比于统计距离(比如DAN[7],JAN等),基于域判别器学习得到的距离需要更多的数据(不论是源域还是目标域)。因此在数据量相对较少的场景下,反而是基于统计距离的域自适应方法效果更好。 强调相对的原因是,数据量相对的多少不仅取决于总的数据量,还取决于类别数,比如DomainNet数据量虽然大,但是类别数也多,导致在DomainNet上反而是DAN比DANN效果更好。
对抗域自适应在回归问题上是没有理论保证的(解释见Domain Adaptation Theory)。直观上的理解是,回归问题中,特征的分布在整个空间是离散且弥漫的,那么 即使判别器被成功地欺骗,依然无法保证源域和目标域的特征按照相同的标签被拉近。
同时在实验上,域对抗自适应的方法在回归问题上表现也不好[8]。
尽管对抗域自适应在特征空间减少了不同数据域的分布差异,从而增强了特征的迁移性(Transferability),但它可能牺牲掉特征的判别性(Discriminability)。比如在分类问题里,将对抗域自适应后的特征固定住,在其上训练分类器的难度是增加的。
谱分析表明[9],对特征进行SVD分解后,最大的奇异值一般对应不同数据域之间共享的知识,而其他特征值则往往对应领域特定的知识。尽管这些特征向量可能会包含判别信息,但是依然会在域对抗训练中受到惩罚,从而削弱了判别性。 为了权衡模型的判别性和迁移性,批量光谱惩罚( Batch Spectral Penalization)惩罚最大的奇异值,从而相对增强其他特征值来提高判别性。
在一些复杂的应用,上述几个问题是同时存在的。比如在目标检测的域自适应中
因此在目标检测中使用对抗域自适应需要一些特别的设计[10],我们会在下一篇文章中展开介绍。
本文主要参考Transferability in Deep Learning: A Survey[11]中的章节3.2.2 Domain Adversarial Learning。感兴趣的读者可以阅读原文。
本文中提到的大部分算法都可以在
中找到代码实现。
链接:文献综述 | Paper List | 算法库Github | 算法库网站
深度迁移系列文章目录
上一篇
下一篇