以下内容来自王晋东《迁移学习教程》内容,该部分只是个人笔记,不是原创内容。


深度学习的模型是按照层次来进行分离的,所以要进行迁移学习的话就要知道那几个层是可以迁移的,而哪些层是固定好的?

因为深度学习本身作为一个黑箱子,可解释性不强,所以就需要做实验来说明这个答案。许多深度学习方法都是开发自己的自适应层来完成源域和目标域的自适应,自适应层使得源域和目标域数据分布更加接近,从而使得网络的效果更好。

所以,我们可以得到深度网络的自适应主要完成两部分的工作:

  1. 那些层可以自适应,这个决定了网络的学习程度
  2. 采用什么样的自适应方法,决定了网络的泛化能力

因为深度学习中最重要的是网络损失的定义,所以绝大多数的深度迁移学习方法都采用了以下的损失定义方式

§ 深度迁移入门指南 - 图1%20%2B%20%5Clambda%5Cmathcal%7BL%7D_A(%5Cmathcal%7BD%7D_s%2C%20%5Cmathcal%7BD%7D_t)%0A#card=math&code=%5Cmathcal%7BL%7D%20%3D%20%5Cmathcal%7BL%7D_c%28%5Cmathcal%7BD%7D_s%2C%20%5Ctext%7By%7D_s%29%20%2B%20%5Clambda%5Cmathcal%7BL%7D_A%28%5Cmathcal%7BD%7D_s%2C%20%5Cmathcal%7BD%7D_t%29%0A&id=hXYeD)

其中,§ 深度迁移入门指南 - 图2表示最终损失;§ 深度迁移入门指南 - 图3#card=math&code=%5Cmathcal%7BL%7D_c%28%5Cmathcal%7BD%7D_s%2C%20%5Ctext%7By%7D_s%29&id=CXJWm)是在源域上的常规分类损失;§ 深度迁移入门指南 - 图4#card=math&code=%5Cmathcal%7BL%7D_A%28%5Cmathcal%7BD%7D_s%2C%5Cmathcal%7BD%7D_t%29&id=HrZ8r)表示网络的自适应损失,是迁移学习独有的损失函数。

深度迁移学习方法可以分为两大类:基于深度网络自适应的迁移学习方法和基于生成对抗网络的迁移学习方法。下面就是两个方法的研究进程和相关的一些论文。

深度网络自适应

§ 深度迁移入门指南 - 图5 2014年提出的DaNN(Domain Adaptive Neural Network),该网络仅有特征层和分类器层两层,在特征层后加上了一个MMD适配层,用来计算源域和目标域的距离,并将其假如网络的损失中进入训练。

§ 深度迁移入门指南 - 图6 DDC(Deep Domain Confusion)前7层使用的是AlexNet的层,第8层分类器前加上了自适应度量,采取的是MMD准确,其损失函数表示为

§ 深度迁移入门指南 - 图7%20%2B%20%5Clambda%20%5C%3B%5Ctext%7BMMD%7D%5E2(%5Cmathcal%7BD%7D_s%2C%20%5Cmathcal%7BD%7D_t)%0A#card=math&code=%5Cmathcal%7BL%7D%20%3D%20%5Cmathcal%7BL%7D_c%28%5Cmathcal%7BD%7D_s%2C%20%5Ctext%7By%7D_s%29%20%2B%20%5Clambda%20%5C%3B%5Ctext%7BMMD%7D%5E2%28%5Cmathcal%7BD%7D_s%2C%20%5Cmathcal%7BD%7D_t%29%0A&id=Fqab8)

§ 深度迁移入门指南 - 图8

§ 深度迁移入门指南 - 图9 清华大学的龙明盛提出了DAN(Depp Adaptation Networks)对DDC方法进行了几个方面的扩展:

  • DAN方法中同时加入了三个自适应层
  • DAN方法采用了表征能力更好的多核MMD度量代替了DDC方法中的单一核MMD

相较于上面的方法1和方法2,DAN方法适配了3层,为什么增加了适配层数?这个是做实验证明得到的,AlexNet的这3层适合做适配。

§ 深度迁移入门指南 - 图10

§ 深度迁移入门指南 - 图11DDC论文的原作者Tzeng在2015年自己扩展了DDC方法,提出了在领域和任务两个方面同时迁移的方法。

  1. 领域迁移,就是最常说的适配分布,其实也就是上面说的MMD和多核MMD损失函数
  2. 任务迁移,这种就是利用类别之间的相似度。比如,有3个类别进行分类,其中杯子和瓶子相似,但是和键盘差别却很大。

但是文章针对情况确实目标域部分的类别只有少量的标签,所以这个情况针对的比较特殊。

§ 深度迁移入门指南 - 图12

而这个部分的损失函数为:

§ 深度迁移入门指南 - 图13%20%2B%20v%5Cmathcal%7BL%7D%7Bsoft%7D(x_T%2C%20y_T%3B%20%5Ctheta%7Brepr%7D%2C%5CthetaC)%0A#card=math&code=%5Cmathcal%7BL%7D%7Bx_S%2C%20y_S%2C%20x_T%2C%20y_T%2C%20%5Ctheta_D%3B%20%5Ctheta%7Brepr%7D%2C%20%5Ctheta%7BC%7D%7D%20%3D%20%5Cmathcal%7BL%7D_C%7Bx_S%2C%20y_S%2C%20x_T%2C%20y_T%2C%20%5Ctheta_D%3B%20%5Ctheta%7Brepr%7D%2C%20%5Ctheta%7BC%7D%7D%20%2B%20%5Clambda%20%5Cmathcal%7BL%7D%7Bconf%7D%28xS%2C%20%20x_T%2C%20%5Ctheta_D%3B%20%5Ctheta%7Brepr%7D%29%20%2B%20v%5Cmathcal%7BL%7D%7Bsoft%7D%28x_T%2C%20y_T%3B%20%5Ctheta%7Brepr%7D%2C%5Ctheta_C%29%0A&id=VGHaD)

其中的§ 深度迁移入门指南 - 图14#card=math&code=%5Cmathcal%7BL%7D%7Bsoft%7D%28x_T%2C%20y_T%3B%20%5Ctheta%7Brepr%7D%2C%5Ctheta_C%29&id=BYVwh)就是任务迁移的损失函数,计算的时候就如下图所示

§ 深度迁移入门指南 - 图15

§ 深度迁移入门指南 - 图16 深度联合自适应

清华大学学者提出了JAN(Joint Adaptation Network),在深度网络中同时进行了联合分布的自适应和对抗学习。JAN方法将只对数据进行自适应的方式推广到了对类别的自适应,提出了JMMD度量。

§ 深度迁移入门指南 - 图17

§ 深度迁移入门指南 - 图18 上述的5个网络都是在网络中假如自适应适配层,而北京大学的Haoyang Li等人提出了AdaBN(Adaptative Batch Normalizaiton)通过在归一化层中加入统计特征的适配,从而完成迁移。

§ 深度迁移入门指南 - 图19

生成对抗网络

之前看到的都是在网络中加入自适应层来适配,和这种模式不同,生成对抗网络(Generative Adversarial Nets, GAN)属于另一种用于迁移学习的模式。

GAN受到自博弈论中的二人零和博弈思想的启发而提出,一共包括两个部分

  • 生成网络(Generative Network):负责生成尽可能多的以假乱真的样本,这部分就被称为生成器(Generator)
  • 判别网络(Discriminative Network):负责判断样本是真实的,还是由生成器生成的,这部分被称为判别器(Discriminator)

§ 深度迁移入门指南 - 图20

而生成器和判别器的互相博弈,就完成了对抗训练。

所以,这个和迁移学习有关系吗§ 深度迁移入门指南 - 图21

是有关系的,生成对抗网络的生成器生成了新的样本,所以在生成对抗网络中有2个样本。而在迁移学习中也有两个样本:源域和目标域。这个时候我们就可以直接将目标域数据作为生成器生成的样本,而这个时候生成器就不用生成样本了,它可以被用来提取特征,所以这个时候的生成器也可以被叫做特征提取器(Feature Extractor)。

与深度网络自适应迁移学习方法类似,深度对抗网络的损失由两部分构成:网络训练的损失§ 深度迁移入门指南 - 图22和领域判别损失§ 深度迁移入门指南 - 图23

§ 深度迁移入门指南 - 图24%20%2B%20%5Clambda%5Cmathcal%7BL%7D_d(%5Cmathcal%7BD%7D_s%2C%5Cmathcal%7BD%7D_t)%0A#card=math&code=%5Cmathcal%7BL%7D%20%3D%20%5Cmathcal%7BL%7D_c%28%5Cmathcal%7BD%7D_s%2C%20%5Ctext%7By%7D_s%29%20%2B%20%5Clambda%5Cmathcal%7BL%7D_d%28%5Cmathcal%7BD%7D_s%2C%5Cmathcal%7BD%7D_t%29%0A&id=BMid9)

下面是基于生成对抗网络的一些研究论文:

§ 深度迁移入门指南 - 图25 DANN

Yaroslav Ganin等人在神经网络的训练中加入了对抗机制,将他们的网络成为DANN(Domain-Adversial Neural Network)。在该研究中,生成的特征尽可能帮助区分两个领域的特征,同时使得判别器无法对两个领域的差别进行判别。

§ 深度迁移入门指南 - 图26 DSN

Bousmalis等人提出DSN网络(Domain Separation Networks)对DANN进行了扩展。DSN认为,源域和目标域都由两部分构成:共有部分和私有部分。公共部分可以学习公共的特征,私有部分用来保持各个领域的独立的特性。DSN的损失函数如下所示

§ 深度迁移入门指南 - 图27

其中的§ 深度迁移入门指南 - 图28是常规的分类损失,其他损失函数的含义如下

  • § 深度迁移入门指南 - 图29:重构损失
  • § 深度迁移入门指南 - 图30:公共部分和私有部分的差异损失
  • § 深度迁移入门指南 - 图31:源域和目标域公共部分的相似性损失

§ 深度迁移入门指南 - 图32

§ 深度迁移入门指南 - 图33 DAAN

Yu等人提出了动态对抗适配网络DAAN(Dynamic Adversarial Adaptation Networks)解决对抗网络中的动态分布适配问题,将动态分布适配的概念进一步扩展到了对抗网络中,解决了对抗网络中存在的边缘分布和条件分布不匹配的问题。

§ 深度迁移入门指南 - 图34