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

举报
chenjinge 发表于 2020/07/31 10:30:08 2020/07/31
【摘要】 本文对ICML 2018杨强老师团队的一篇文章《Transfer Learning via Learning To Transfer》进行梳理总结。先回顾一下迁移学习的主要思想来源:人本身具有迁移知识的能力,比如羽毛球运动员可以更好更快地掌握网球的技巧,因此我们希望机器也具有这种迁移的能力,将以往训练模型学习到的知识在新的领域加以应用。那么这篇文章的出发点又是什么呢?比如我们现在需要在羽毛球...

本文对ICML 2018杨强老师团队的一篇文章《Transfer Learning via Learning To Transfer》进行梳理总结。


先回顾一下迁移学习的主要思想来源:人本身具有迁移知识的能力,比如羽毛球运动员可以更好更快地掌握网球的技巧,因此我们希望机器也具有这种迁移的能力,将以往训练模型学习到的知识在新的领域加以应用。


那么这篇文章的出发点又是什么呢?比如我们现在需要在羽毛球运动员、游泳健将和教授这三人中选择一位来从事网球运动,我们会选谁呢?当然,根据历史经验,我们会选择羽毛球运动员。注意这里的历史经验,可能是下面的一些历史观察:



  • 羽毛球运动员 转职 网球运动员 适应时间 3个月

  • 游泳健将 转职 网球运动员 适应时间 6个月

  • 教授 转职 网球运动员 适应时间 12个月



可以看出,通过历史的“转职”数据,可以在新的“转职”场景下加以应用,比如选择羽毛球运动员来从事网球运动,可能需要的时间成本会小很多。迁移就类似于“转职”,要选择最合适的东西迁移。


本文就是通过历史的迁移信息,包括迁移的数据、迁移的东西等来拟合迁移的效果提升,从而在新的迁移任务到来时,直接优化最优的迁移内容,使得性能提升最大。


这篇文章提供了一种算法L2T来决定迁移过程中怎样迁移(How)以及迁移什么(What)的问题。迁移学习里面还有一个重要的问题就是什么时候迁移(When),这个问题这篇工作并没有涉及。


这篇文章提出了L2T的学习框架,和迁移学习(Transfer Learning)、多任务学习(Multi-Task Learning)、终生学习(Life-Long Learning)有一定的关联和区别,用下面的图来解释:

image.png




  • 迁移学习指的是在Task1上训练,然后到Task2上测试,主要目的是提升Task2的性能,并且只局限于当前这一组迁移任务

  • 多任务学习是在 N 个任务上同时学习,训练和测试都在这 N 个任务上,目的是为了提升这 N 个任务的性能

  • 终生学习是指的任务是在线源源不断地过来的,可以抽象为学习了 N 个任务之后,要在第 N + 1个任务上提升性能

  • 而L2T则是根据历史的迁移任务,Task1->Task2,Task3->Task4等等迁移信息,目的是为了提升Task 2N+1到Task 2N+2的性能



可以看出,如果L2T不使用历史的迁移任务的信息,那么只从Task 2N+1到Task 2N+2的过程是Transfer Learning要做的事情,此时由于没有任何信息,所以只能将所有迁移算法和各种参数跑一遍进行试错调优,需要大量的计算资源和时间成本;但是,有了历史的迁移信息之后,就有一些经验知识了,针对不同的数据选择合适的迁移内容(What to transfer)。


上面大概就是文章的出发点,下面来看具体操作过程。具体过程分为两个阶段,分别对应了上图的训练和测试阶段:


Stage A : Learning transfering skills from previous transfer learning experiences.

Stage B : Applying those skills to infer what and how to transfer for a future pair of source and target domains.


然后文章的架构示意图为:



image.png



可以看出,L2T分为训练和测试两个部分。在训练的时候,保存以往的迁移轨迹,记为三元组信息 image.png ,其中第一部分 image.png 指的是Source Domain和Target Domain的数据信息, image.png ;第二部分指的是算法(How and What to transfer),这篇文章选择的算法都是基于Feature进行迁移的,所以用特征变换矩阵 image.png 来代替 image.png ;第三部分 image.png 表示的是使用Source Domain迁移之后相较于不迁移的性能提升程度。


训练过程就是要建立一个 image.png 的映射 image.png ,这样当一组新的迁移任务 image.png 到来时,就可以优化 image.png ,使得 image.png 的值最大,即使得迁移带来的性能提升最大。而优化 image.png 的过程就是决定如何迁移(How)、迁移什么(What)的过程。


下面看训练过程,训练过程是给定历史迁移任务的数据,即 image.png 个三元组 image.png ,优化目标为:


image.png


上述式子可能有点复杂,可以慢慢分析。


首先上述优化目标的主要目的是通过 image.png 来拟合 image.png ,式子的 image.png 是Huber损失,让 image.png 逼近 image.png 。其中 image.png ,下面就看这个式子的具体含义,首先可以肯定的是这个值和迁移性能大概是成反比对应的。


文章指出,迁移性能的提升大小和两方面因素有关系:1. Source Domain和Target Domain的距离;2. 目标域的可判别性。如果SD和TD的距离越小,目标域的可判别性越大,那么迁移性能可能的提升空间就会很大。所以可以把上面的 image.png 分解为三部分:


image.png


三部分分别是两个域的距离,目标域的可判别性和偏置。下面分别来看一下这些个是如何参数化的。


第一项,两个域之间的距离,使用MMD(Maximum Mean Discrepancy)度量,公式为:


image.png


其中 image.png 是希尔伯特空间的映射,有 image.png 。根据之前的假设,迁移什么(What)是通过特征变换矩阵 image.png 定义的,即默认Source Domain和Target Domain经过这一矩阵变换得到的数据是在同一子空间(Common Latent Space)的,因此计算这个子空间里面的MMD距离便得到:


image.png


如果经过 image.png 变换后,SD和TD在共同子空间的MMD距离非常小的话,那么潜在的迁移性能提升会比较大。但是上述的计算需要选择一个合适的核函数 image.png ,文章为了避免这个问题选择了多核的技巧,即 image.png ,每个核函数 image.png 可以计算得到上面的一个距离 image.png ,那么最后得到的距离就是:

image.png


这就是 image.png 的第一部分,第二部分则是计算两个域之间两两样本距离的方差,这部分比较复杂,公式比较多,直接截图如下,下面主要是介绍了 image.png 是如何计算出来的:



image.png



总之,两个Domain在子空间的距离一定程度上会影响迁移的性能。


此外,目标域本身的可判别性则一定程度上也会影响迁移的性能,判别性越高,可迁移性越强。可判别性的衡量指标是:原空间距离接近的样本映射到子空间的距离依旧比较小;距离大的仍然很大。因此定义下面的指标:

image.png


其中:

image.png


那么相应地对于 image.png 个核函数有:


image.png


至此可以优化求解得到上面的各个参数 image.png ,那么在测试过程,优化:


image.png


具体优化过程可以对上述公式展开得到和 image.png 有关的式子,还可以加入正则化项 image.png ,使用共轭梯度下降算法(Conjugate Gradient Descent)优化求解。


得到 image.png 之后,就得到了投影矩阵,因此可以将SD和TD的数据都投影到同一子空间,即完成分布对齐(迁移)的过程。


最后,文章的实验过程就不展示了。总结一下本文,本文应该是一篇开创性的工作,利用了以往的迁移经验来指导后续的迁移任务,文章读起来不难理解,主要是想法很好。


注:文中图片来自于如下论文

《Ying Wei, Yu Zhang, Junzhou Huang, Qiang Yang: Transfer Learning via Learning to Transfer. ICML 2018: 5072-5081》


作者:新春


————————

计算机软件新技术国家重点实验室
伪文艺程序员

既可提刀立码,行遍天下

又可调参炼丹,卧于隆中


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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