论文阅读《Beyond Sharing Weights for Deep Domain Adaptation》

Background & Motivation

这篇文章发在 PAMI 2019 版本的 Related Work 可以作为跨域学习2019之前的综述来看,写的十分详细。

  • Classical Domain Adaptation

常用做法是用 target 数据调整 source 上训练好的分类器,比如 SVM、决策树。另一种做法是学习 source 和 target 之间的度量,也可以理解为 source 和 target 之间线性或者非线性的变换。即找到两个域在特征空间内的表征,用这些变换来“对齐”他们。还有一种做法是使 source 和 target 数据的分布更相似,提出了许多量化方法(这些方法之后的 Deep Domain Adaptation 也在用),比如 MMD。MMD 被用在一些浅层的神经网络中,衍生出了一些变体:多核 MMD 等。

The MMD has been used to re-weight [24], [25] or select [26] source samples such that the resulting distribution becomes as similar as possible to the target one. 

还有一些做法旨在可以跨域共享的一些特征,这就变为了优化的问题。这些做法使用手动设计的特征作为待优化的初始表征,比如 SIFT、SURF 等。

  • Deep Domain Adaptation

在深度学习的方法中,有人使用 DeCAF 特征来代替之前手动设计的特征,甚至不用任何形式的 adaptation。有人提出异构学习的形式,即 source 和 target 的特征不同,但是需要带标注的 target 数据。之后还有 Siamese architecture 的方法、使用 auto-encoder 来学习 source 和 target 之间变换的方法及其变体 bi-shifting auto-encoders 等。还有方法将 MMD loss 引入到深度学习中,来缩小 source 和 target 表征之间的距离及其各种各样的变体(CORAL loss、Joint Distribution Discrepancy loss)。还有加入了额外的 domain classifier 的方法,不同域的数据用不同的分类器来识别。以上都是监督学习的方法,也有将半监督学习和子监督学习引入到 Domain Adaptation 中,比如对比学习的方法。

以上这些方法都是用一个结构来提取 source 和 target 的特征,这两个域数据的权重相同。也可以理解为都是想学习到两个域之间 domain-invariant feature,然而这篇文章认为 domain-invariant feature 有损模型的辨别能力。这是本文的 Motivation,与其学习 domain-invariant feature,还不如直接建模 domain shift。

因此本文提出了一个紧凑、高效的方法来建模 source 和 target 之间的相似和不同,包含两个网络结构,相互影响相互制约来避免对 source 和 target 其中一个域的过拟合。也有一些与本文相似的方法,但是要么过于繁琐,要么直接使用同一个网络结构,要么两个网络结构之间的参数完全毫不相干。而作者认为两个网络结构对应层的参数虽然没有完全相同,但他们是相关的。本文的方法会自动地决定哪些层会共享权重,而哪些层不用。

Approach

本文探索了在 target 有监督和无监督两种情况下的方案,提出的网络结构如下:

允许对应层的参数不一致,但是也不希望对应层的参数相差较大,因此为模型的每一层加上 MMD 损失。模型总的损失函数为

其中 Ls 和 Lt 为分类损失,如 logistic loss、hinge loss 等。当在无监督方案下,Lt 的值为0。

剩的两个都是正则项 regularizer,分别为 weight regularizer 和 unsupervised regularizer。

Weight Regularizer

Lw 是两个分支结构对应层之间参数的损失,这个损失只会施加到 set Ω 中的层上:

This set Ω is problem-dependent and, in practice, can be obtained automatically by comparing the MMD values for different configuration.

其中 rw 可以直接采用两个分支结构参数的 L2 距离:

但是这种方法简单粗暴(跟我的想法一致。。。我用的 KL 散度),不能很好地建模 domain shift,因此文章不惩罚 source 和 target 之间的线性变换或者加上指数函数,这样的话比如第一层的光照变化就不会被惩罚:

a 和 b 是可学习的参数,并且每一层的 a 和 b 都不同。

While simple, this parameterization can account, for example, for global illumination changes in the first layer of the network.

从实验结果看加上指数函数的线性变换更好一些。下图是可视化了两个分支第一层参数,可以看出参数已基本呈线性相关,加入指数函数为模型参数赋予了更大的自由度,在遵从线性相关的基础上。

Unsupervised Regularizer

LDD 编码了域差异,提出了两种计算 ru 的方法,第一种是 MMD,第二种是增加了一个 domain classifier。

  • MMD

MMD 是先将数据映射至再生希尔伯特空间,再计算了两个集合距离的平均值。

其中 fsi 和 ftj 分别是 source 分支和 target 分支最后一层的特征,其中 Φ 是映射函数,通常我们不知道,因此使用核函数:

where the dependency on the network parameters comes via the fsi` and where k(·,·) is a kernel function. fsi`是啥看没太懂。

  • Adversarial Domain Confusion(domain classifier)

构建了一个 domain classifier,动机是如果模型最后输出的特征表示是 domain invariant 的,那么这个 domain classifier 的精度就会很低,因为分辨不出来究竟是哪个域的。此时 ru 是:

构建 domain classifier 的方法是引进一个小的神经网络:

ΘDC 是网络的参数而 f 是一张图片模型输出的表征。通过交叉熵损失函数来训练 ΘDC:

yn 是域标签,0是 source,1是 target。这时总的损失函数变为:

下面这段看不太懂,似乎是解释了为啥是 1-yn。

As can be seen from its last term, Eq. (14) maximizes the confusion between the domains, which is important in our case, as we use exactly the same classification layer for both source and target images.

Experiment

对不同的任务,网络结构也不同。

Drone Detection

这个任务的网络结构即为上面的 Fig.1。因为网络结构简单,每个分支只有五层结构,作者枚举了这些层共享或者不共享参数的情况。。。

发现前三个卷积层的参数不共享,后两个全连接层的参数共享,在使用加入了带有指数函数线性变换的 Lw 使模型的 MMD 值最低。这个任务上各个损失函数的消融实验:

哪些层共享参数哪些层不共享的消融实验:
 

In other words, one only needs to collect 5-10 percent of labeled training data to obtain good results with our approach, which, we believe, can have a significant impact in practical applications.

Office

这是个数据集,并且 target 的数据无标签,是一个无监督任务:

这里分析一下,无监督任务行得通。无监督情况下 target 的损失函数置0,Lw 用来正则两个分支的特征提取网络,LDD 则用来测 MMD 的值。

在这个任务上使用的网络结构如下:

结果不错:

当在监督学习的情况下:

For this experiment, we used the “fully-transductive” evaluation protocol proposed in [15], which means using all the available information on the source domain and having no labels at all for the target domain.

剩了几个数据集上的效果不想看了,这篇文章实验做的真足。。。每个任务,每个任务上枚举所有可能的情况,想想都头大。

However, the optimal choice of which layers should or should not share their weights is application dependent.

Conclusion

文章最后进行了分析,在 Drone Detection 任务上允许前两个卷积层线性相关、其他层共享权重,这是因为对于源域与目标域数据中一些 low-level 的改变导致的 domain shift 可以被特征提取网络的浅层很好地 handle。而在 Office 任务上因为对于源域与目标域数据中不仅仅是 low-level 的改变(such as illumination changes, but to more complex variations.),因此需要特征提取网络的深层(编码了高维特征)来 handle。

本文的核心:与其学习 domain-invariant feature,还不如直接建模 domain shift。这里的做法是 source 和 target 分支某些层的参数限制为线性相关,其余层共享参数,可以看出来这里文章做了大量的实验。MMD 可以用来衡量两个 batch 提取出的特征是否相似。文章同样证明了对于回归任务的有效性,回归的做法就是将分类损失函数替换为分类损失函数,没有特别的模型的改动。

这里将参数设置为线性相关的方法有很大一部分原因是 source 和 target 之间仅存在“风格”上的“偏移”。

这篇文章应该是承接了《Deep Domain Confusion:Maximizing for Domain Invariance》的思路,这篇文章还没来得及读,都跟我之前的想法不谋而合,只不过我的想法更简单欠妥。

附加,

  • 来自李宏毅老师机器学习课的总结

将 Domain Adaptation 分为三类:Discrepancy-base methods、Adversarial-based methods、Reconstruction-based methods。

核函数(kernel functions)是机器学习里的一个常用技巧。它接收两个样本的特征向量,给出一个标量;这个标量可以理解成把两个特征向量通过一个隐藏的映射变换到一个高维空间之后,再做内积的结果。

核函数的目的是模仿内积,而内积的一个作用是衡量样本之间的相似度。一种合理的动机是,两个点靠得越近,它们的相似度就应该越大。为此,我们用一个(旋转对称的)波包来代表一个点;两个点靠得越近,它们对应的波包重合得就越多。

preview

从样本点到波包的映射,就是核函数背后隐藏的映射 Φ。

高斯核函数的实例(为方便起见,样本的特征空间就设为一维):

把样本 x1,x2 映射为均值为 x1,x2、标准差为 б 的高斯波包。

两个样本的核函数值,即为两个波包相乘后再积分。

在上面的例子中,波包和核函数都是高斯形式(但方差差了一倍)。在一般情况下,波包和核函数的形式不一定相同。比如,如果把波包取成矩形的,则核函数就会是三角形的。一般地,核函数是波包的自相关函数。高斯函数的自相关函数,恰好仍是高斯形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值