伪文艺程序员的“迁移学习”啃读(E)​

举报
chenjinge 发表于 2020/08/25 11:04:22 2020/08/25
【摘要】 迁移学习(Transfer Learning)一直是一个热门研究领域,如何将机器已经学到的知识迁移到新的场景是一个很重要的问题,杨强老师在《A Survey on Transfer Learning》一文中对2010年之前的迁移学习做了详细的综述,将迁移学习算法分门别类地整理,见Figure 1:Figure 1 : Transfer Learning分类在迁移学习的研究对象中包括两部分,一...

迁移学习(Transfer Learning)一直是一个热门研究领域,如何将机器已经学到的知识迁移到新的场景是一个很重要的问题,杨强老师在《A Survey on Transfer Learning》一文中对2010年之前的迁移学习做了详细的综述,将迁移学习算法分门别类地整理,见Figure 1:


image.pngFigure 1 : Transfer Learning分类


在迁移学习的研究对象中包括两部分,一部分称作Domain,记作 image.png ,其中 image.png 表示数据的特征空间,假如两个数据集拥有不同的特征,那么 image.png ; image.png 代表数据分布。在现实场景中,经常会遇到Domain不一致的情况,记作Source Domain和Target Domain,分别用 image.png 和 image.png 表示。数据的Domain不一样可能会有两种不一致的情况:

  • image.png

  • image.png

同样地,迁移也可能发生在任务层面,即Task,记作 image.png ,同样地,任务的不同也分为两种:

  • image.png

  • image.png

前者指的是目标空间不同,可以是分类和回归的不同,也可以是二分类和多分类的不同,也可以是类别种类不同等等;后者指的是两个任务里面的类别不平衡等等。

现在回到Figure 1,根据Source Domain和Target Domain的样本情况继续划分迁移学习的种类有下面几种。


1. Source Domain和Target Domain都没有有标记的数据,这种情况对应的是Unsupervised Transfer Learning,相关的研究很少。

2. Source Domain没有有标记数据(可能丢失或者没有保存),Target Domain里面有有标记数据,此时类似于Self-Taught Learning

3. Source Domain有有标记数据,Target Domain也有有标记数据,此时可以类比 Multi-Task Learning 的做法。

4.  Source Domain有有标记数据,Target Domain没有有标记数据,可以按照是否属于同一个Domain继续进行划分。如果不是同一个Domain,那么就称为 Domain Adaptation ;如果是同一个Domain,那么可以类比于 Sample Selection Bias 或者 Covariance Shift

一般来说,大家目前关注最多的是 Multi-Task Learning Domain Adaptation 这两部分。Multi-Task Learning做的是同时学习多个任务,使得每个任务都要学习得很好,当然这要求每个任务的Domain里面有相应的有标记数据,比如同时让CNN学习目标检测和目标定位,即分类和回归任务,需要提供类别标记和物体目标位置的监督信息。当Source Domain和Target Domain都有相应的标记数据时,Transfer Learning可以借鉴Multi-Task Learning的做法,但是 Transfer Learning侧重于让Target Domain学习得好


此外,文中根据迁移的对象不同,又可以将Transfer Learning分为Instance Based TransferFeature Based TransferParameter Based TransferRelation Based Transfer

基于样本的迁移(Instance Based)是指的利用给样本赋权值的办法进行迁移,一个经典的代表性工作为TrAdaBoost,文章发表在2007年,是杨强老师的工作之一,利用Target Domain部分少量的有标记数据和Source Domain的大量有标记数据进行训练TrAdaBoost,在Target Domain上采取一种特别的给样本赋权值的办法,从而提升在Target Domain上的性能,文章题目为《Boosting for Transfer Learning》,链接为:https://home.cse.ust.hk/~qyang/Docs/2007/tradaboost.pdf

基于特征的迁移(Feature Based)是指的将Source Domain和Target Domain的特征进行对齐,在深度网络的应用场景下可以简单理解为使得网络每一层的特征表示对齐,可以采用某些距离度量方法,比如MMD等。在2010年之前,具有代表性的文章是《Multi-Task Feature Learning》,发表在NIPS 2007,链接为:https://papers.nips.cc/paper/3143-multi-task-feature-learning.pdf

基于参数的迁移(Parameter Based)可以理解为模型迁移到Target Domain之后尽量保持原有的参数更新慢一些,因为Target Domain只有少量有标签数据,更新过快会使得模型过拟合,所以可以采用一些Fine-tune的办法。

上面简单介绍了一下《A Survey on Transfer Learning》的大概内容,里面有很多2010年之前经典的算法,适合使用在小数据集和非图像文本语音的应用领域上,很值得深入研究,比如一些根据业务场景提取特征之后进行分类或回归的任务,并且需要使用迁移的应用场景。

但是,现在大部分的Transfer Learning的研究热点集中在Source Domain有大量标记数据而Target Domain没有标记数据或者少量标记数据的情况,即对应于Domain Adaptation的领域,推荐一篇综述文《Deep Visual Domain Adaptation: A Survey》,这里不再详细介绍,留待以后详细介绍。

本文要介绍的重点是理解深度迁移学习,重点围绕《How transferable are features in deep neural networks?》展开,这是NIPS 2014的一篇文章,内容浅显易懂,重点在于Transfer Learning的可解释性。

下面给出论文的实验过程,首先在任务A和B上训练两个网络,比如将ImageNet的1000个类别分为两部分,任务A包含500个类的分类任务,任务B是另外500个类的分类任务,先训练两个网络,见Figure 2,图中绿色的表示任务A,紫色表示任务B,分别由 8 层网络组成,这两个模型记作baseA和baseB:


image.pngFigure 2 : 基础网络baseA 和 baseB


下面,实验的两个目标是:

  • 探索不同层次的网络迁移带来的效果,将baseA的不同层(底层和高层)迁移到任务B会带来什么样的效果,这同时也是为了探索神经网络每一层学习到的特征是General的还是Specific的;



  • 探索迁移之后权重固定不变Fixed以及稍微调整Fine-tune两种方式对迁移的影响。所以,针对不同的 n,n可以选择1到8之间的数,代表网络的前 n 层。将网络A的前 n 层迁移到任务B,固定权重,后面几层加随机初始化的权重,在任务B上训练,得到的模型记作AnB;将网络A的前 n 层迁移到任务B,权重Fine-tune,后面几层加随机初始化的权重,在任务B上训练,记作AnB+;将网络B的前 n 层固定住,后面接随机初始化层,重新在任务B上训练,得到的模型为BnB;同样地,将网络B的前 n 层和后面的随机初始化的层进行Fine-tune得到模型BnB+。



以 n = 3 为例,Figure 3展示了A3B和A3B+两个模型,前面绿色的三层来自模型baseA,上面的小锁的图标代表“Fixed”和“Fine-tune”,分别对应的是A3B和A3B+,后面的五层是随机初始化,模型在任务B的数据集上训练:


image.pngFigure 3 : A3B和A3B+的结构


同样,Figure 4展示了B3B和B3B+两个模型,这里需要注意的一点是,baseB的前三层是在任务B上训练的,然后在B3B模型里面,将前三层固定住,重新初始化后面五层,重新在任务B上训练,使用B3B模型训练是为了说明“层与层之间Co-Adapt”之间的现象,即可能之前baseB里面的第3, 4层共同学习到了某种表示,需要协同更新,当第 4 层被重新初始化之后,而第 3 层被固定住,可能很难再达到一个平衡点,导致模型性能下降。这个现象在后面实验结果中会展示。


image.pngFigure 4 : B3B和B3B+的结构


下面,针对不同的 n,将四个模型的性能作出折线图得到Figure 5:


image.pngFigure 5 : 不同 n 对应的四个模型的性能表现


  • 中间虚线是baseB的性能,Top-1正确率在0.623左右;

  • 红色线对应的是AnB,将A的前几层迁移到任务B,不Fine-tune,带来的结果基本和   baseB差不多,这说明baseA的前几层学习到的特征比较General;而当 n 增大时,性  能直线下降,说明了baseA的高层学习的特征是Specific的,只适用于任务A,直接迁移到任务B带来了负面影响;

  • 灰色线条代表的是BnB+,表示的是将baseB的后面几层随机初始化,前面 n 层也跟着Fine-tune,效果和baseB基本一致;

  • 蓝色线条是BnB,baseB的前 n 层是固定住的,当 n 比较小时,BnB和baseB差不多;当 n 比较大时,由于 baseB的前 n 层学习到的特征已经是Specific的了,所以性能和baseB也接近;最为有意思的是当 n 为中间层时,会出现“Co-Adapt”的现象,即之前baseB里面3, 4层可能是共同学习的,但是在B3B里面固定住第 3 层,重新初始化第 4 层之后会使得模型效果变差,即很难再达到3, 4层共同协作的效果;

  • 粉色线条代表的是A3B+,图中可见这个模型的性能是最好的,这就验证了迁移学习的好处,可以整合不同任务之间的知识,从而提升在Target Domain的效果,当然这必须是带有Fine-tune的操作的迁移。

上面的实验是论文的核心内容,非常浅显易懂,总结一下有以下几点启发:

  • 做网络的迁移学习需要考虑在哪一层进行迁移,低层比较General,高层比较Specific;

  • 迁移过程中要考虑网络的Co-Adapt现象,不能简单地固定住某一层网络;

  • 迁移到新的Domain和Task之后,一般会想办法做类似Fine-tune的操作,否则性能可能会     大幅度下降;

  • 不同Domain或Task的信息整合到一起可能会提升模型的性能。

最后,迁移学习的内容非常多,特别是深度网络的Deep Domain Adaptation的内容,各种距离度量、网络架构、正则化项等等都是值得好好研究的内容,这里留待后面的文章再补充。


作者:新春

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。