引言
领域自适应是迁移学习中的一类重要问题,主要解决当训练集和测试集的数据分布存在偏差时,如何使得训练出的分类器更好的适应测试集上的数据。早期的基于统计学习等浅层模型的做法主要是先设计一套特征提取方法,然后对训练集和测试集的特征进行分布匹配,此时再将分类器用到测试集上会取得更好的预测效果。但是这种分步式的操作效果还是比较有限的,不能同时兼顾数据分布和分类器的训练,要想实现端到端的在数据分布差异约束下进行分类训练,就要依靠神经网络。
近几年来使用深度学习方法解决领域自适应问题的文章有很多,都取得了比较好的效果。不同的方法解决问题的角度不同,本次主要介绍直接在网络结构中嵌入数据分布距离约束的一类算法。
一、DDC
Deep domain confusion: Maximizing for domain invariance
比较早的探索是 Eric Tzeng 等人提出的Deep Domain Confusion (DDC) 算法,该算法的核心思路可以用下图来表示:
文中选择的网络结构是AlexNet,由5个卷积层和3个全连接层组成。图中左侧对应的是有标签的源域数据,右侧对应的是没有标签的目标域数据,两侧共享权重。如果仅使用源域数据对网络进行训练,由于源域和目标域存在分布差异,分类器很难在目标域上有好的表现。
与传统思路不同的是,作者希望将分布匹配和分类器训练同步进行,因此他们在原始的网络结构中直接嵌入了一个低维的自适应层,即图中的fc_adapt。通过这个自适应层将源域和目标域的数据在某一层的输出提取出来并变换到一个低维空间中,再用这个变换的结果计算两个领域中数据间的分布距离。将这个距离作为一个损失项(domain loss)和原本的分类损失(classification loss)相结合,这样在训练过程中就能实现对分类效果和分布匹配的兼顾。整个过程可以归结为下面的损失函数:
其中,第一项 L C L_C LC就是普通的分类损失(如交叉熵),通过源域数据的输入和输出来计算,而第二项则是将源域和目标域的数据作为输入,通过MMD距离约束来减小两者间的分布差异,MMD距离的定义如下:
取平方后的结果可以通过定义核函数来计算:
文章最后还讨论了自适应层应该放在网络的哪个位置以及其维度应该取多少,给出的方案就是通过MMD来进行网格搜索。将数据输入预训练后的模型,计算各层输出的MMD,选择MMD最小的一层并在其后添加自适应层,作者认为如果这一层都能得到比较好的优化,那么网络总体上得到的分布差异都会比较小;之后在64到4096之间给自适应层选择不同的维度并对网络进行训练,选择使得MMD最小的维度作为最终设定。实验结果也证明这样的选择是比较合理的:
二、DAN
Learning transferable features with deep adaptation networks
Mingsheng Long等人提出的Deep Adaptation Networks (DAN) 在DDC之后进行了进一步的探索。这篇文章的根本思想和DDC是相似的,最突出的地方体现在两点:多层和多核。
首先还是先给出DAN的网络结构:
(1)多层自适应。本文选择的基本结构仍然是AlexNet,按照对神经网络的一般认知,深度网络的低层提取到的是更加通用的一般特征,高层得到的是适用于特定任务的特征,根据以往的研究,AlexNet中的三个全连接层(fc6-fc8)都已经和特定任务联系比较密切,当用于其他任务或数据集时会导致较大的误差,因此,像DDC一样只针对某一层进行分布约束是不够的。于是作者提出对最后的三个全连接层都使用MMD进行分布距离约束