该论文提出DDC(Deep Domain Confusion)解决深度网络的自适应问题,应用于迁移学习。
摘要
- 一般的监督学习deep-CNN模型需要在大规模的数据集上训练,但不可移植。
- 微调预训练模型的方法在一些新的领域需要特别的数据,也不适用。
- 作者用了一种新的CNN结构,加入了一个自适应层(adaption layer)和一个addtional domain confusion loss来学习在语义上有意义的描述和在领域上不同的描述。1
- 并介绍了一个可用于模型选择的domain confusion 度量方法来决定自适应层的维度,和自适应层在网络结构中的最佳位置。
- 作者的自适应方法的结果相比之前发布在standard benchmark visual domain adaptation task上的结果更好。
方法
- 虽然可以在预训练模型上进行微调来完成新的任务,但在目标域缺少带标签的数据时就不行了。我们可以用与源域相关而不同,但有更多的带标签数据的域。
任务
- 降低分类的错误
- 提高源域与目标域的关联性
-
减小源域与目标域的数据分布的距离,然后通过训练带有标签的源域数据就可以直接应用于没有标签的目标域数据。
-
距离公式
其中φ(·)是由源域与目标域数据点计算得到。 -
为了同时满足两个任务,我们设定的目标函数如下:
第一个式子是带标签数据的交叉熵,把它称为classification loss;第二个式子是域间距离,称为domain loss。
网络结构
- 作者的网络基于AlexNet增加了一层自适应层,通过自适应层来减小两个域之间的差异。
- 虽然网络结构图中有两条路径,其实它们是共享权重的,实际只有一条,只是在分类器这一层对带标签的数据做了单独处理。
- 接下来就遇到两个问题:
- 自适应层应该放在哪一层?
- 它的维度应该设置为多大?
实验
- 数据集:Office dataset(由Amazon,DSLR和Webcam组成)
- 预训练模型:AlexNet模型
- 迁移任务:Amazon→Webcam, DSLR→Webcam,和Webcam→DSLR
1. 确定将自适应层放在哪一层
源域:Amazon
目标域:Webcam
- 用预训练分别提取源域和目标域的fc6,fc7和fc8输出的特征,将同层的源域和目标域的特征进行MMD计算,得出fc7输出的特征的MMD最低。
- 为了验证这一点,用了domain adaptation baseline方法2来计算准确率,最终得出自适应层应放在fc7之后。
- 作者并没有更多的解释原因,但一般在分类器的前一层是特征层,在特征层上加上自适应层比较合理。
2. 确定自适应层维度
源域:Amazon
目标域:Webcam
- 确定自适应层位置后,设置了自适应层维度从64到4096,分别进行训练,然后计算其经过自适应层之后的MMD。
- 然后用上一步同样的方式验证。最终选择自适应层的维度为256。
3. 确定超参数λ
- 为了兼顾分类任务和缩小域间距离的任务,作者将λ设为0.25,这样让分类任务依然是主任务,同时主任务也不至于过拟合导致没有学习缩小域间距离的任务。但作者并没有给出更多解释如何设置为0.25的。
训练
- 载入数据时,源域数据与目标域数据是分开载入的,两者数据量要保证一样。
- 带标签的数据和不带标签的数据都是共享每一层的参数。
- 分别进行了监督学习和无监督学习的两种训练方式(即目标域数据带标签与不带标签),前者的两个域的数据都参与了分类器训练,而后者因为目标域数据不带标签,所以只有源域数据参与了分类器的训练。
- 两种方式的所有数据都会参与自适应层的训练。
- 分类器与自适应层的学习率都是前面那些层的10倍。