量化百科

《小王爱迁移》系列之六:从经验中学习迁移

由iquant创建,最终由iquant 被浏览 3 用户

更新:这个论文最近刚被ICML 2018接收。和arXiv上的版本应该有出入,我们拿到以后再进行更新。

最近有一篇叫做《Learning To Transfer》的文章火了。其实早在上一同我就看了这个文章当时大为震惊,深深感到迁移学习领域又要有一个大研究方向了,以后可以跟着大牛做了。文章来自香港科技大学杨强老师团队,所以文章的档次和质量自然是不用多说了。这两天在忙着写文章,刚吃过饭,把上一周我做的笔记分享出来。

Motivation

我们在进行迁移学习时,往往不知道应该选择怎么样的算法。通常都通过人为地不断尝试来确定要用的方法。这个过程无疑是浪费时间,而且充满了不确定性。已有的迁移学习方法,基本都是这样。我们在拿到一个新问题时,如何选择迁移学习算法达到最好的效果?从人的学习过程中来说,人总是可以从以前的经验中学习知识。那么,既然我们已经实验了很多次迁移学习算法,我们能不能让机器也可以从我们这些实验中选择知识?这是符合我们人类认知的:我总不能每拿到一个问题,我就从头来做吧。本文就在研究这个问题,非常新颖的一个研究方向!

Method

方法分为两个部分:从已有的迁移学习方法和结果中学习迁移的经验,然后再把这些学习到的经验应用到新来的数据。

从已有的方法和结果中学习经验

首先要明确学习目标。这个问题的学习目标是什么呢?跟以前的迁移学习方法都有所不同,以往的方法都是要学习最好的迁移函数,而这个问题的目标是要使得方法尽可能地具有泛化能力。因此,它的学习目标是:以往的经验!对的,就是经验。这也是符合我们人类认知 的。我们一般都是知道的越多,这个人越厉害(Jon Snow除外)。因此,这个方法的目标就是要尽可能多地从以往的迁移知识中学习经验,使之对于后来的问题具有最好的泛化能力。那么什么是迁移的经验?这个在文中叫做transfer learning experience。作者这样定义:Ee=(Se,Te,ae,le)。其中,分别是源域和目标域,这个我们都知道。表示一个迁移学习算法,这个算法有个下标叫e,表示它是第e种算法。与之对应,选择了这种算法,它对不迁移情况下的表现有个提升效果,这个效果就叫做le。总结一下,什么叫迁移学习的经验?就是说,在一对迁移任务中,我选择了哪种算法后,这种算法对于我任务效果有多少提升。这个东西,就叫做迁移!这和我们人类学习也是具有相似性的: 人们常说,失败是成功之母,爱迪生说,我实验了2000多种材料做灯泡都是失败的,但是我最起码知道了这2000多种材料不适合做灯泡!这就是人类的经验!我们人类就是从跌倒中爬起,从失败中总结教训,然后不断进步。学习算法也可以!好了,现在我们有了对学习目标的定义。我们下一步要做什么呢?学习一下什么是可以迁移的。也就是说,从这些过往的经验中,到底可以学习到什么?学习到什么呢?结合我们以往对大部分迁移学习方法的了解,作者在这里对这些方法分成了两个部分:基于共同特征空间_以及_流形集成法。什么意思呢。其实很好理解:像TCA、JDA这种,把源域和目标域映射到一个共同的空间,然后在这个空间中学习一个变换矩阵的方法,就叫做基于共同特征空间;而像GFK这种,把数据映射到流形空间以后,跟走路一样由源域和目标域中间若干个(无数个)点构成的子空间来综合表示迁移过程的,就叫做流形集成法。作者在这里进行了一些形象地推导,从而推导出了这两种方法的本质(或者说共同目标)都可以学习出一个特征的变换矩阵W来。这个W就是这些迁移学习知识的中心。正是因为学习到了这个变换矩阵,才使得以后的迁移学习成为可能。于是,我们的目标就变成了,如何学习这个W。那么问题来了,如何学习这个W呢?我们知道,假如给定我们一个源域和一个目标域,我们是可以学习到这个W的。方法很多。现在的问题状况变了,我们是给了一大堆的迁移对和对应的算法,这个时候如何学习这个W?注意,此时,这个W是共有的,我们只用学习一个就好。(对每一个迁移对,我们都可以学习到一个变换矩阵)学习一个的好处是,这一个变换矩阵可以对于所有以往的经验,都具有比较好的迁移能力。怎么做?很简单。我们直接学习所有迁移对最优的那个W,使得平均误差最小的那个W就是我们要求的。怎么样,好理解吧?作者在学习W的时候,用的依然是我们的老朋友MMD(发明MMD的那俩人真是牛)。只不过在这里,和龙明盛的DAN一样用了MK-MMD(这是个好东西,我也要用用)。除此之外,作者在学习目标里又加了另一个正则项:要保持源域中的一些信息。方法也是很老套的方法:用类似于LDA的类内距和类间距。最后,就成为了一个优化问题。只要把这个优化问题解出来,我们就学习到了这个W。

推测迁移的内容



学习到了这个变换矩阵以后,下一步的工作就是要把学习到的东西应用于新来的数据。如何针对新来的数据进行迁移?我们本能地要利用刚刚学习到的这个W。但是不要忘了,这个W只是对旧的那些经验学习到的,对新的数据可能效果不好,不能直接用。怎么办?我们要更新它!这里要注意的是,针对新来的数据,我们的这个变换矩阵应该是有所改变的:这也对,数据变了,当然变换矩阵就要变。那么,如何更新?作者在这里提出的方法是,新的W应该是能在新的数据上表现效果最好的那个W。这时,我们的问题就完成了。一个适用于增量学习的迁移学习框架,就诞生了。

Experiments

既然研究问题都是自己开创的,那么实验肯定也和以前不一样啦。以前实验怎么做?选择一些数据分布差异大的数据集,然后构造源域和目标域,最后进行迁移。现在呢?针对要研究的问题:迁移学习经验,我们要构造这些经验。怎么构造?作者在这里用了两个大数据集:Caltech-256和Sketches。Caltech我们很熟悉,就是包含了256类的物体照片,Sketches是个啥?它是一个素描的数据集。这里就是要在这两种domain之间进行知识的迁移。为了方便起见,我们让Caltech作为源域,迁移到目标域Sketches。为什么不反过来?素描得少多少东西啊,能用来标定彩色照片?为了构造尽可能多的迁移经验,作者构造出了很多的迁移对。方法也很常用,就是从两个数据集中分别随机选择3类的样本作为一个迁移对,这样的训练迁移对一共有1000对。接着构造了验证集500对和测试集500对。实验进行时,作者首先控制目标域中label的个数由少到多,然后观察方法与对比方法的表现差异。毫无疑问这个方法效果很好,尤其是在目标域label非常少的时候,同时,标定精度也非常高。后来作者又针对用于前期训练的迁移学习方法进行了实验,表现其与L2T框架结合后,效果非常好。这里就不再赘述。

Conclusion

  1. 提出了一个新颖的研究问题:类似于增量学习,如何最大限度地利用已有的迁移学习经验,使得其对新问题的泛化能力很好?同时也可以避免一出现新问题就从头进行学习。非常厉害!直接开创一个新问题,原文中说的“open a new door”!(然而这是由大牛指导的,我们小弱看看就好,这个学不来的)
  2. 对自己的问题有着非常明确而清晰地表述,能够很清楚地定义好这个问题的学习目标。
  3. 在解决问题的方法上,虽然用的都是老方法,但是能够想到新已有方法很好地应用于这个问题,也是很厉害的!
  4. 实验设置非常完善。

扩展

  1. 在深度网络中如何持续学习?(至少一篇文章出来了)
  2. 这个方法只是针对同构数据有效,异构数据应该也可以做的。(目测马上会有一波新文章)
  3. 已有的迁移学习方法并不都是基于同一个特征变换,可以学习不同的特征变换,使得这个方法的适应性更强。(又一篇)
  4. 总而言之,这篇文章最大的贡献就在于,开辟了一个新的研究领域,尽管方法上非常普通,但是,很有效。前瞻性的工作!

最后附上文章下载地址:[1708.05629] Learning to Transfer

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

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

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

\

标签

迁移学习