论文标题:Unsupervised Domain Adaptation by Backpropagation
论文链接:https://arxiv.org/abs/1409.7495
论文来源:ICML 2015
一、概述
在有大量的标注数据时,深度模型往往能取得一个较好的性能。对于缺少标注数据的时候,也可以足够大的训练集来训练深度网络模型,不过不可避免的要面对训练数据与测试数据的分布之间的偏移(shift)。
一个重要的例子是合成或半合成训练数据,这些数据可能会大量出现,并被完全标注,但它们不可避免地具有与测试时的真实数据不同的分布。训练数据和测试数据可以看做位于不同的域(domain),我们希望在这样的训练数据上训练的模型也能够应用在测试数据上,这样的过程称为域自适应(Domain Adaptation,DA)。通常,拿来训练的数据称为源域(source domain),测试数据称为目标域(target domain)。举个具体的例子来说,下图中上面与下面都是手写体数字,只是背景和字体颜色不同,这就是域的数据分布的偏移,使用上面的数据训练的手写体数字识别模型显然不能拿来识别下面的数字,我们希望利用域自适应的方法来做到这件事情:
example
域自适应的方法通常需要能够做到源域数据完全未标注(unsupervised domain annotation)或者只有少量标注样本(semi-supervised domain adaptation)。本文所提出的方法主要面向完全未标注的情况,不过也能够轻易地处理半监督的情况。
二、方法
- 框架
不同于之前在固定特征表示上进行域自适应的方法,本文提出的方法中特征学习与域自适应同步进行,目的是能够学习到在域的变化中具有区别性(discriminative)和不变性(invariant)的特征,也就是源域和目标域的特征有相同或者相似的分布。这样的目标通过联合优化底层特征以及两个在这些特征上操作的鉴别分类器来实现的,这两个分类器是:
①label predictor,训练和测试时都要用的标签预测分类器,用来预测类别标签(以手写数字为例,就是预测图片是哪个数字);
②domain classifier,训练时使用的域分类器,预测样本属于哪一个域。
以最小化分类器在训练集上的loss为目标来优化两个分类器的参数,而以最小化label predictor的损失和最大化domain classifier的loss来优化底层深度特征提取器的参数。
本文所提出的网络架构如下图所示:
架构
模型主要包括3个部分:feature extractor、label predictor和domain classifier。这三个部分可以使用以往任何前馈结构来实现,唯一在本文中提出的特殊结构是图中的梯度反转层(Gradient Reversal Layer,GRL)。
- 符号表示
- 模型的训练
考虑以下函数:
上式的实现显然不能通过SGD直接实现,因此需要做一些妥协,因而有了梯度反转层。梯度反转层在前向传播时做恒等变换,在反向传播时将后面层的梯度乘以并且传播到前面的层。使用目前的深度学习工具包实现这样一个梯度反转层很简单。梯度反转层被添加到feature extractor和domain classifier之间。形式化表达梯度反转层如下:
- 超参数设置
学习率变化:
三、实验
在不同的数据集上进行了实验,数据集的一些例子如下:
example
实验结果如下:
实验结果
这里SOURCE ONLY相当于性能下限,TRAIN ON TARGET相当于性能上限。
另外在OFFICE数据集上进行了实验,实验结果如下:
实验结果
对于学习到的特征分布,使用t-SNE做了可视化:
可视化特征
可以看到应用域自适应方法以后源域数据和目标域数据的特征分布更加接近了。