《小王爱迁移》系列之四:深度网络如何进行迁移学习(DaNN、DDC、DAN)

《小王爱迁移》系列之四:深度网络如何进行迁移学习(DaNN、DDC、DAN)

在这篇专栏文章里,我们介绍三篇连贯式的深度迁移学习的研究成果,管中窥豹,一睹深度网络进行迁移的奥秘。这三篇代表性论文分别是:

  1. 来自惠林顿维多利亚大学的Muhammad Ghifary发表在PRICAI 2014的DaNN(Domain Adaptive Neural Network)[1]
  2. 来自来自加州大学伯克利分校的Eric Tzeng等人发表在arXiv 2014的DDC(Deep Domain Confusion)[2]
  3. 清华大学助理教授Mingsheng Long (龙明盛)发表在国际机器学习顶级会议ICML 2015上的深度适配网络(Deep Adaptation Network, DAN) [3]

三篇文章由浅入深,针对迁移学习和机器学习中经典的domain adaptation问题给出了连贯式的解决方案。

背景

继Jason Yosinski在2014年的NIPS上的《How transferable are features in deep neural networks?》探讨了深度神经网络的可迁移性以后,有一大批工作就开始实际地进行深度迁移学习。我们简要回顾一下Jason工作的重要结论:对于一个深度网络,随着网络层数的加深,网络越来越依赖于特定任务;而浅层相对来说只是学习一个大概的特征。不同任务的网络中,浅层的特征基本是通用的。这就启发我们,如果要适配一个网络,重点是要适配高层——那些task-specific的层。

DaNN

在DDC出现之前,已有研究者在2014年环太平洋人工智能大会(PRICAI)上提出了一个叫做DaNN(Domain Adaptive Neural Network)的神经网络。DaNN的结构异常简单,它仅由两层神经元组成:特征层和分类器层。作者的创新工作在于,在特征层后加入了一项MMD适配层,用来计算源域和目标域的距离,并将其加入网络的损失中进行训练。所以,整个网络的优化目标也相应地由两部分构成:在有label的源域数据上的分类误差( \ell_C ),以及对两个领域数据的判别误差( \ell_D )。优化目标由下式形象地表示:

\ell=\ell_C + \lambda \ell_D

式中的这个 \lambda 是权衡网络适配的权重的一个参数,可以人工给定。 \ell_C 很好理解,就是网络的分类误差; \ell_D 表示两个领域的距离。

但是,由于网络太浅,表征能力有限,故无法很有效地解决domain adaptation问题(通俗点说就是精度不高)。因此,后续的研究者大多数都基于其思想进行扩充,如将浅层网络改为更深层的AlexNet、ResNet、VGG等;如将MMD换为多核的MMD等。

DDC

DDC针对预训练的AlexNet(8层)网络,在第7层(也就是feature层,softmax的上一层)加入了MMD距离来减小source和target之间的差异。这个方法简称为DDC。下图是DDC的算法插图。

图:DDC网络结构示意

从上图我们可以很明显地看出,DDC的思想非常简单:在原有的AlexNet网络的基础上,对网络的fc7层(分类器前一层)后加一层适配层(adaptation layer)。适配层的作用是,单独考察网络对源域和目标域的判别能力。如果这个判别能力很差,那么我们就认为,网络学到的特征不足以将两个领域数据区分开,因而有助于学习到对领域不敏感的特征表示。

DDC的思想十分简单,但是却成为了深度网络应用于迁移学习领域的经典文章。

DAN

DAN是在DDC的基础上发展起来的,它很好地解决了DDC的两个问题:

  • 一是DDC只适配了一层网络,可能还是不够,因为Jason的工作中已经明确指出不同层都是可以迁移的。所以DAN就多适配几层;
  • 二是DDC是用了单一核的MMD,单一固定的核可能不是最优的核。DAN用了多核的MMD(MK-MMD),效果比DDC更好。

DAN的创新点是多层适配和多核MMD。下图是DAN的网络结构示意图。我们针对两个方面分别介绍。

图:DAN网络结构示意

多核MMD(Multi-kernel MMD,MK-MMD)

这个MK-MMD是基于原来的MMD发展而来的,它并不是这个文章提出来的,是由Gretton这位核方法大牛在2012年提出来的[3]。原来的MMD呢,是说我们要把source和target用一个相同的映射映射在一个再生核希尔伯特空间(RKHS)中,然后求映射后两部分数据的均值差异,就当作是两部分数据的差异。最重要的一个概念是核k,在MMD中这个k是固定的,我们在实现的时候可以选择是高斯核还是线性核。这样的缺点是明显的:我怎么知道哪个核一定好?

MK-MMD就是为了解决这个问题。它提出用多个核去构造这个总的核,这样效果肯定会比一个核好呀!对于两个概率分布p,q,它们的MK-MMD距离就是

d^2_k(p,q) \triangleq ||E_p[\phi(\mathbf{x}_s)]-E[\phi(\mathbf{x}_t)]||^2_{\mathcal{H}}

这个多个核一起定义的kernel就是

\mathcal{K} \triangleq \left\{k= \sum_{u=1}^{m}\beta_u k_u : \beta_u \ge 0, \forall u \right\}

这个式子很好理解。原来我们的k就是一个固定的函数嘛,现在我们把它用m个不同kernel进行加权,权重就是\beta_u。这样的表征能力一定不会比一个kernel差的!

多层适配

这个就很好理解了。原来的DDC方法只是适配了一层,现在DAN也基于AlexNet网络,适配最后三层(6~8层)。为什么是这三层?因为在Jason的文章中已经说了,网络的迁移能力在这三层开始就会特别地task-specific,所以要着重适配这三层。至于别的网络(比如GoogLeNet、VGG)等是不是这三层那就不知道了,那得一层一层地计算相似度。DAN只关注使用AlexNet。

总的方法

好了,我们已经把DAN的两个要点讲完了。现在总的来看一下DAN方法。它基于AlexNet网络,探索source和target之间的适配关系。任何一个方法都有优化的目标。DAN也不例外。它的优化目标由两部分组成:损失函数和分布距离。损失函数这个好理解,基本上所有的机器学习方法都会定义一个损失函数,它来度量预测值和真实值的差异。分布距离就是我们上面提到的MK-MMD距离。于是,DAN的优化目标就是

\min_\Theta \frac{1}{n_a} \sum_{i=1}^{n_a} J(\theta(\mathbf{x}^a_i),y^a_i) + \lambda \sum_{l=l_1}^{l_2}d^2_k(\mathcal{D}^l_s,\mathcal{D}^l_t)

这个式子中,\Theta表示网络的所有权重和bias参数,是用来学习的目标。其中l_1,l_2分别是6和8,表示网络适配是从第6层到第8层,前面的不进行适配。\mathbf{x}_a,n_a表示source和target中所有有label的数据的集合。\lambda是惩罚系数。J(\cdot)就定义了一个损失函数,在深度网络中一般都是cross-entropy。

学习策略

现在已经把问题定义的非常明确了,可以开始训练和学习了。学习一共分为两大类参数:学习网络参数\Theta和MMD的\beta

学习\Theta

\Theta的学习依赖于MK-MMD距离的计算。通过kernel trick(类比于以前的MMD距离)我们总是可以把MK-MMD展开成一堆内积的形式。然而,数据之间两两计算内积是非常复杂的,时间复杂度为O(n^2),这个在深度学习中的开销非常之大。怎么办?作者在这里采用了Gretton在文章提出的对MK-MMD的无偏估计:d^2_k(p,q)=\frac{2}{n_s}\sum_{i=1}^{n_s/2}g_k(\mathbf{z}_i),其中的\mathbf{z}_i是一个四元组:\mathbf{z}_i \triangleq (\mathbf{x}^s_{2i-1},\mathbf{x}^s_{2i},\mathbf{x}^t_{2i-1},\mathbf{x}^t_{2i})。将kernel作用到\mathbf{z}_i上以后,变成g_k(\mathbf{z}_i) \triangleq k(\mathbf{x}^s_{2i-1},\mathbf{x}^s_{2i})+k(\mathbf{x}^t_{2i-1},\mathbf{x}^t_{2i})-k(\mathbf{x}^s_{2i-1},\mathbf{x}^t_{2i})-k(\mathbf{x}^s_{2i},\mathbf{x}^t_{2i-1})

上面这些变换看着好恐怖。它是个什么意思呢?简单来说,它就是只计算了连续的一对数据的距离,再乘以2.这样就可以把时间复杂度降低到O(n)!至于具体的理论,可以去参考Gretton的论文,这里就不说了。反正这个计算方法是Gretton提出来的。

在具体进行SGD的时候,我们需要对所有的参数求导:对\Theta求导。在实际用multiple-kernel的时候,作者用的是多个高斯核。

学习\beta

学习 \beta 的方法主要就是沿用了Gretton的MK-MMD原文中提出的优化方法,在这里不再赘述。

结论

DDC和DAN作为深度迁移学习的代表性方法,充分利用了深度网络的可迁移特性,然后又把统计学习中的MK-MMD距离引入,取得了很好的效果。DAN的作者在2017年又进一步对其进行了延伸,做出了Joint Adaptation Network (JAN),也发在了ICML 2017上。在JAN中,作者进一步把feature和label的联合概率分布考虑了进来,可以视作之前JDA(joint distribution adaptation)的深度版。

启发

数学很重要!我们可以看到最重要的MK-MMD是搞数据的提出来的!好好学数学!

代码

DAN的Caffe和PyTorch版本代码可以在这里找到:thuml/Xlearn

DDC和DaNN代码可以在这里找到:jindongwang/transferlearning


References

[1] DaNN文章:Ghifary M, Kleijn W B, Zhang M. Domain adaptive neural networks for object recognition[C]//Pacific Rim International Conference on Artificial Intelligence. Springer, Cham, 2014: 898-904.

[2] DDC文章:Tzeng E, Hoffman J, Zhang N, et al. Deep domain confusion: Maximizing for domain invariance[J]. arXiv preprint arXiv:1412.3474, 2014.

[3] DAN文章:Long M, Cao Y, Wang J, et al. Learning transferable features with deep adaptation networks[C]//International Conference on Machine Learning. 2015: 97-105.

[4] MK-MMD文章:Gretton A, Borgwardt K M, Rasch M J, et al. A kernel two-sample test[J]. Journal of Machine Learning Research, 2012, 13(Mar): 723-773.


[作者简介]王晋东(不在家),中国科学院计算技术研究所博士生,目前研究方向为机器学习、迁移学习、人工智能等。作者联系方式:微博@秦汉日记 ,个人网站Jindong Wang is Here

=================

更多《小王爱迁移》系列文章:

《小王爱迁移》系列之零:迁移学习领域著名学者和研究机构

《小王爱迁移》系列之一:迁移成分分析(TCA)方法简介

《小王爱迁移》系列之二:联合分布适配(JDA)方法简介

《小王爱迁移》系列之三:深度神经网络的可迁移性

《小王爱迁移》系列之四:深度网络如何进行迁移学习(DaNN、DDC、DAN)

《小王爱迁移》系列之五:测地线流式核方法(GFK)

《小王爱迁移》系列之六:学习迁移(Learning To Transfer)

《小王爱迁移》系列之七:负迁移(Negative Transfer)

《小王爱迁移》系列之八:深度迁移学习文章解读

《小王爱迁移》系列之九:开放集迁移学习(Open Set Domain Adaptation)

《小王爱迁移》系列之十:张量迁移学习(tensor unsupervised domain adaptation)

《小王爱迁移》系列之十一:选择性对抗迁移学习(Selective Adversarial Network)

《小王爱迁移》系列之十二:新年新气象-重新整理的迁移学习资源仓库

《小王爱迁移》系列之十三:在线迁移学习(online transfer learning)

《小王爱迁移》系列之十四:用于部分迁移学习的深度加权对抗网络

《迁移学习简明手册》发布啦!

《小王爱迁移》系列之十五:自动选择源域的迁移学习方法(SSFTL)

《小王爱迁移》系列之十六:探秘任务迁移学习 (CVPR 2018最佳论文解读)

文章被以下专栏收录