领域自适应论文总结系列(一)

引言

领域自适应是迁移学习中的一类重要问题,主要解决当训练集和测试集的数据分布存在偏差时,如何使得训练出的分类器更好的适应测试集上的数据。早期的基于统计学习等浅层模型的做法主要是先设计一套特征提取方法,然后对训练集和测试集的特征进行分布匹配,此时再将分类器用到测试集上会取得更好的预测效果。但是这种分步式的操作效果还是比较有限的,不能同时兼顾数据分布和分类器的训练,要想实现端到端的在数据分布差异约束下进行分类训练,就要依靠神经网络。
近几年来使用深度学习方法解决领域自适应问题的文章有很多,都取得了比较好的效果。不同的方法解决问题的角度不同,本次主要介绍直接在网络结构中嵌入数据分布距离约束的一类算法。

一、DDC

Deep domain confusion: Maximizing for domain invariance
比较早的探索是 Eric Tzeng 等人提出的Deep Domain Confusion (DDC) 算法,该算法的核心思路可以用下图来表示:
领域自适应论文总结系列(一)_第1张图片

文中选择的网络结构是AlexNet,由5个卷积层和3个全连接层组成。图中左侧对应的是有标签的源域数据,右侧对应的是没有标签的目标域数据,两侧共享权重。如果仅使用源域数据对网络进行训练,由于源域和目标域存在分布差异,分类器很难在目标域上有好的表现。
与传统思路不同的是,作者希望将分布匹配和分类器训练同步进行,因此他们在原始的网络结构中直接嵌入了一个低维的自适应层,即图中的fc_adapt。通过这个自适应层将源域和目标域的数据在某一层的输出提取出来并变换到一个低维空间中,再用这个变换的结果计算两个领域中数据间的分布距离。将这个距离作为一个损失项(domain loss)和原本的分类损失(classification loss)相结合,这样在训练过程中就能实现对分类效果和分布匹配的兼顾。整个过程可以归结为下面的损失函数:
在这里插入图片描述

其中,第一项 L C L_C LC就是普通的分类损失(如交叉熵),通过源域数据的输入和输出来计算,而第二项则是将源域和目标域的数据作为输入,通过MMD距离约束来减小两者间的分布差异,MMD距离的定义如下:
领域自适应论文总结系列(一)_第2张图片
取平方后的结果可以通过定义核函数来计算:
领域自适应论文总结系列(一)_第3张图片
文章最后还讨论了自适应层应该放在网络的哪个位置以及其维度应该取多少,给出的方案就是通过MMD来进行网格搜索。将数据输入预训练后的模型,计算各层输出的MMD,选择MMD最小的一层并在其后添加自适应层,作者认为如果这一层都能得到比较好的优化,那么网络总体上得到的分布差异都会比较小;之后在64到4096之间给自适应层选择不同的维度并对网络进行训练,选择使得MMD最小的维度作为最终设定。实验结果也证明这样的选择是比较合理的:
领域自适应论文总结系列(一)_第4张图片

二、DAN

Learning transferable features with deep adaptation networks
Mingsheng Long等人提出的Deep Adaptation Networks (DAN) 在DDC之后进行了进一步的探索。这篇文章的根本思想和DDC是相似的,最突出的地方体现在两点:多层和多核。
首先还是先给出DAN的网络结构:
领域自适应论文总结系列(一)_第5张图片
(1)多层自适应。本文选择的基本结构仍然是AlexNet,按照对神经网络的一般认知,深度网络的低层提取到的是更加通用的一般特征,高层得到的是适用于特定任务的特征,根据以往的研究,AlexNet中的三个全连接层(fc6-fc8)都已经和特定任务联系比较密切,当用于其他任务或数据集时会导致较大的误差,因此,像DDC一样只针对某一层进行分布约束是不够的。于是作者提出对最后的三个全连接层都使用MMD进行分布距离约束,从而使得模型具备更强的迁移能力。至于前边的卷积层,前三层提取到的是更为一般的特征,在预训练之后权重固定,4、5两层则要在预训练的基础上进行fine-tune.
(2)多核自适应。分布匹配主要依靠MMD作为分布距离约束来实现,而MMD的效果依赖于核函数的选择,单一核函数的表达能力是有限的,因此作者提出使用多核MMD (MK-MMD) 来作为损失:
在这里插入图片描述
与该损失对应的核函数 k ( x s , x t ) = ⟨ ϕ ( x s ) , ϕ ( x t ) ⟩ k(x^s, x^t)=\left \langle \phi(x^s), \phi(x^t) \right \rangle k(xs,xt)=ϕ(xs),ϕ(xt)由多个核函数的加权和表示:
在这里插入图片描述
在以上思想的基础上,得出了本文的损失函数:
在这里插入图片描述
仍然由分类损失和分布匹配损失两部分组成,这和DDC是一致的,但是分布损失是在上边提到的多层和多核自适应思想下实现的。
在优化上述损失函数时,MMD的计算复杂度是 O ( n 2 ) O(n^2) O(n2),在数据量较大时所需时间较长,因此作者提出使用MMD的线性近似来简化计算过程:
在这里插入图片描述
其中,在这里插入图片描述
在这里插入图片描述
改进后的损失在反向传播中的梯度可表示为:
在这里插入图片描述
如果选取m个高斯核来计算,每个核函数的形式可以表示为:
在这里插入图片描述
这样梯度中的第二项就可以通过链式法则表示为如下形式:
领域自适应论文总结系列(一)_第6张图片
以上只是对网络参数进行优化的过程,在使用多核学习时还要优化核函数的权重 β \beta β,这里参考了另一篇文章中的做法,要求最大化测试能力最小化Type II 误差:
在这里插入图片描述
在这里插入图片描述
d = ( d 1 , d 2 , . . . d m ) T \textbf{d}=(d_1,d_2,...d_m)^T d=(d1,d2,...dm)T,方差 Q = c o v ( g k ) Q=cov(g_k) Q=cov(gk)
在这里插入图片描述
在这里插入图片描述
从而将 β \beta β的求解转化为二次规划问题:
在这里插入图片描述

三、JAN

Deep transfer learning with joint adaptation networks
在DAN之后,作者认为仍然有可改进的地方。DAN虽然已经对三个全连接层都进行了分布约束,但三个约束之间是相互独立的,相当于只考虑了边缘分布,没有考虑条件分布和联合分布,没有充分对不同层之间的关系进行建模,因此后续又提出了JAN( Joint Adaptation Networks)。JAN的整体网络框架和之前一样:
领域自适应论文总结系列(一)_第7张图片
在这里插入图片描述
损失函数仍然由分类损失和分布距离组成,区别在于这里对于需要进行分布距离约束的所有层进行了联合建模,用到了文中提出的联合距离JMMD.
原始的MMD只针对源域和目标域数据在某一层的输出进行计算:
领域自适应论文总结系列(一)_第8张图片
而JMMD则是将多层的输出联合起来进行计算:
领域自适应论文总结系列(一)_第9张图片
从公式也可以看出两者的差异主要在于JMMD多了一个连乘,也就是每次都把各层输出同时计算进来,直接对联合分布进行建模,从而可以充分考虑不同层之间的相互关系,避免了对边缘分布和条件分布的一些假设。
最后还使用类似DAN中对MMD进行简化近似的方法,将JMMD的计算近似简化到线性时间:
领域自适应论文总结系列(一)_第10张图片
参考文献:
Tzeng E, Hoffman J, Zhang N, et al. Deep domain confusion: Maximizing for domain invariance[J]. arXiv preprint arXiv:1412.3474, 2014.
Long M, Cao Y, Wang J, et al. Learning transferable features with deep adaptation networks[C]//International conference on machine learning. PMLR, 2015: 97-105.
Long M, Zhu H, Wang J, et al. Deep transfer learning with joint adaptation networks[C]//International conference on machine learning. PMLR, 2017: 2208-2217.

你可能感兴趣的:(迁移学习,机器学习,迁移学习,领域自适应,神经网络)