网站首页 > 论文致谢> 文章内容

迁移学习到底是什么?让我们来解读一下杨强、Bengio和龙盛明的论文

※发布时间:2017-8-29 13:45:42   ※发布作者:   ※出自何处: 

  之前整理总结迁移学习资料的时候有网友评论,大意就是现在的类似资料大全的东西已经太多了,想更深入地了解特定的细节。从这篇文章开始我将以《小王爱迁移》为名写一系列的介绍分析性的文章,与大家共享迁移学习中的代表性方法、理论与自己的感想。由于我的水平有限,请各位多多提意见,我们一起进步。今天第一篇必须以我最喜爱的杨强老师的代表性方法TCA为主题!(我的第一篇文章也是基于TCA做的)

  机器学习中有一类非常有效的方法叫做降维(dimensionality reduction),用简单的话来说就是,把原来很高维度的数据(比如数据有1000多列)用很少的一些代表性维度来表示(比如1000用100维来表示)而不丢失关键的数据信息。这些降维方法多种多样,比如:主成分分析(PCA,principal component analysis)、局部线性嵌入(LLE,locally linear embedding)、拉普拉斯特征映射(Laplacian eigen-map)等。这些方法的过程大体都是一个大的矩阵作为输入,然后输出一个小矩阵。那么在迁移学习中,有没有这样的方法,通过降维来达到数据维度减少,而且能达到迁移学习目的呢?答案是显然的,就是我们要说的迁移成分分析(TCA,transfer component analysis)。看,名字就跟PCA很像。

  TCA最早是由科技大学杨强教授团队提出,首次出现在AAAI-09上,后来整理丰富成了一篇期刊文章,发表在11年的IEEE Trans. Neural Network(现在这个期刊名字后面多了and Learning System)上。这个方法是迁移学习领域经典性的文章,从2011年到现在接近6年过去,在Google scholar上引用量为569次,并且在持续增长。

  TCA属于基于特征的迁移学习方法。那么,它做了一件什么事呢?用通俗的语言来说,跟PCA很像:PCA是一个大矩阵进去,一个小矩阵出来,TCA呢,是两个大矩阵进去,两个小矩阵出来。从学术角度讲,TCA针对domain adaptation问题中,源域和目标域处于不同数据分布时,将两个领域的数据一起映射到一个高维的再生核希尔伯特空间。在此空间中,最小化源和目标的数据距离,同时最大程度地保留它们各自的内部属性。直观地理解就是,在现在这个维度上不好最小化它们的距离,那么我就找个映射,在映射后的空间上让它们最接近,那么我不就可以进行分类了吗?

  我一直强调,任何问题都要看它的本质,TCA本质是什么呢?完成迁移学习的要求。迁移学习的要求是什么呢?让源域和目标域距离尽可能小呗。

  有许多种方法都在试图减小源域和目标域的距离,那么,TCA的贡献在哪里?以我的理解,TCA将这个计算距离的方法变得通用而简单,这就是它最大的贡献。下面我以自己的理解介绍TCA方法的基本流程。

  任何方法都基于一定的假设。胡适说过,大胆假设,小心求证。但是他那个时候没有计算机,我们搞计算机的人则是,大胆假设,更大胆求证。为啥?我们就算失败了也没有什么嘛,最多把电脑搞崩溃了我再重装系统么。所以,搞学术一定不要怕假设。假设是学术成功的基石呢!

  TCA的假设是什么呢?很简单:源域和目标域的边布是不一样的,也就是说,,所以不能直接用传统的机器学习方法。但是呢,TCA假设存在一个特征映射$phi$,使得映射后数据的分布,更进一步,条件分布。这不就行了么。好了,我们现在的目标是,找到这个合适的$phi$,一作映射,这事就解决了。

  但是世界上有无穷个这样的,也许终我们一生也无法找到这样的。庄子说过,吾生也有涯,而知也无涯,以有涯随无涯,殆已!我们肯定不能通过穷举的方法来找的。那么怎么办呢?

  回到迁移学习的本质上来:最小化源域和目标域的距离。好了,我们能不能先假设这个是已知的,然后去求距离,看看能推出什么呢?

  更进一步,这个距离怎么算?世界上有好多距离,从欧氏距离到马氏距离,从曼哈顿距离到余弦相似度,我们需要什么距离呢?TCA利用了一个经典的也算是比较“高端”的距离叫做最大均值差异(MMD,maximum mean discrepancy)。这个距离的公式如下:

  看着很高端(实际上也很高端)。MMD是做了一件什么事呢?简单,就是求映射后源域和目标域的均值之差嘛。

  TCA是怎么做的呢,这里就要感谢矩阵了!我们发现,这个MMD距离平方展开后,有二次项乘积的部分!那么,联系在SVM中学过的核函数,把一个难求的映射以核函数的形式来求,不就可以了?于是,TCA引入了一个核矩阵

  trace是矩阵的迹,用人话来说就是一个矩阵对角线元素的和。这样是不是感觉离目标又进了一步呢?

  其实这个问题到这里就已经是可解的了,也就是说,属于计算机的部分已经做完了。只不过它是一个数学中的半定规划(SDP,semi-definite programming)的问题,解决起来非常耗费时间。由于TCA的第一作者Sinno Jialin Pan以前是中山大学的数学硕士,他想用更简单的方法来解决。他是怎么做的呢?

  这个式子下面的条件是什么意思呢?那个min的目标我们大概理解,就是要最小化源域和目标域的距离,加上W的约束让它不能太复杂。那么下面的条件是什么呢?下面的条件就是要实现第二个目标:维持各自的数据特征。TCA要维持的是什么特征呢?文章中说是variance,但是实际是scatter matrix,就是数据的散度。就是说,一个矩阵散度怎么计算?对于一个矩阵,它的scatter matrix就是。这个就是的中心矩阵啦。

  解决的优化问题时,作者又求了它的拉格朗日对偶。最后得出结论,W的解就是的前m个特征值!简单不?数学美不美?然而,我是想不出的呀!

  好了,我们现在总结一下TCA方法的步骤。输入是两个特征矩阵,我们首先计算L和H矩阵,然后选择一些常用的核函数进行映射(比如线性核、高斯核)计算K,接着求的前m个特征值。仅此而已哦。然后,得到的就是源域和目标域的降维后的数据,我们就可以在用传统机器学习方法了。

  怎么样,到此为止我们把TCA方法介绍完了。我们回顾一下,它的最核心工作是什么呢?我认为有两点:一是把问题成数学问题得很彻底;二是最优化求解方法很厉害。我们能从中学习什么呢?求解问题的方法感觉是学不来了,我们又不是数学出身。我们只能照猫画虎,学习人家对问题的方式,怎么就能很好地把一个问题成数学表示?这也是机器学习和人工智能相关方向研究生最重要的能力!关于TCA的Python和Matlab代码可以参考我的Github-。

  最后说一个TCA的优缺点。优点是实现简单,方法本身没有太多的,就跟PCA一样很好用。缺点就是,尽管它绕开了SDP问题求解,然而对于大矩阵还是需要很多计算时间。主要消耗时间的操作是,最后那个伪逆的求解以及特征值分解。在我的电脑上(i7-4790CPU+24GB内存)跑2000*2000的核矩阵时间大概是20秒。

  这是《小王爱迁移》系列的第二篇,为大家介绍一个非常不错的工作,叫做联合分布适配。和第一篇的TCA一脉相承,但是更简介更美丽,效果更好。

  联合分布适配方法(joint distribution adaptation,JDA)解决的也是迁移学习中一类很大的问题:domain adaptation。关于domain adaptation的介绍可以看我之前的介绍。简单概括就是,如何用有标注的源域数据来标定完全无标注的目标域?

  JDA方法首次发表于2013年的ICCV(计算机视觉领域顶会,与CVPR类似),它的作者是大学的博士生(现为大学助理教授)龙明盛。关于作者我们多说几句。龙明盛是迁移学习方面的专家,博士期间与科技大学的Qiang Yang、南大学的Philip S. Yu以及伯克利的Jordan联合发表过多篇文章。他的个人网站是:Mingsheng Long - Tsinghua University。博士论文里所有一作文章都是顶会和顶刊,非常厉害。

  JDA这个方法,看名字就知道,是一个概率分布适配的方法,而且适配的是联合概率。先来简单普及一下知识:边缘概率、条件概率和联合概率。对于一个随机变量,是它的元素,对于每一个元素,都对应一个类别。那么,它的边缘概率为,条件概率为,联合概率为。JDA方法就是要适配源域和目标域的联合概率。

  假设是最基本的出发点。那么JDA这个方法的假设是什么呢?就是假设两点:1)源域和目标域边布不同,2)源域和目标域条件分布不同。那么目标来了,同时适配两个分布不就可以了吗?于是作者很自然地提出了联合分布适配方法:适配联合概率。

  不过这里我感觉有一些争议:边布和条件分布不同,与联合分布不同并不等价。所以这里的“联合”二字实在是会引起歧义。我的理解是,同时适配两个分布,也可以叫联合,而不是概率上的“联合”。尽管作者在文章里第一个公式就写的是适配联合概率,但是这里感觉是有一些问题的。我们抛开它这个有歧义的,把“联合”理解成同时适配两个分布。

  那么,JDA方法的目标就是,寻找一个变换,使得经过变换后的和的距离能够尽可能地接近,同时,和的距离也要小。很自然地,这个方法也就分成了两个步骤。

  首先来适配边布,也就是和的距离能够尽可能地接近。其实这个操作就是迁移成分分析(TCA)。我们仍然使用MMD距离来最小化源域和目标域的最大均值差异。MMD距离是

  这是我们要做的第二个目标,适配源域和目标域的条件概率分布。也就是说,还是要找一个变换,使得和的距离也要小。那么简单了,我们再用一遍MMD啊。可是问题来了:我们的目标域里,没有,没法求目标域的条件分布!

  这条看来是走不通了。哪条呢?就是去建模不行嘛。那么,能不能有别的办法可以逼近这个条件概率?一想,有啊,类条件概率啊。根据贝叶斯公式,我们如果忽略,那么岂不是就可以用来近似?

  而这样的近似也不是空穴来风。在统计学上,有一个东西叫做充分统计量,它是什么意思呢?大概意思就是说,如果样本里有太多的东西未知,样本足够好,我们就能够从中选择一些统计量,近似地代替我们要估计的分布。好了,我们为近似找到了理论依据。

  实际怎么做呢?我们依然没有。采用的方法是,用来训练一个简单的分类器(比如knn、逻辑斯特回归),到上直接进行预测。总能够得到一些伪标签的吧。我们根据伪标签来计算,这个问题就可解了。

  我们还缺一个条件,不然这个问题无。条件是什么呢?和TCA一样,变换前后数据的方差要维持不变。怎么求数据的方差呢,还和TCA一样:,其中的也是中心矩阵,是单位矩阵。也就是说,我们又添加了一个优化目标是要(这一个步骤等价于PCA了)。和原来的优化目标合并,我们就是要好了,统一写一下优化目标

  这个式子实在不好求解。怎么弄啊,这么一大串。也不用惆怅,有个东西叫做rayleigh quotient,两个一样的这种形式。因为是可以进行拉伸而不改改变最终结果的,而如果下面为0的话,整个式子就求不出来值了。所以,我们直接就可以让下面不变,只求。所以我们最终的优化问题形式搞成了

  可是伪标签终究是伪标签啊,肯定精度不高,怎么办?那好办。有个东西叫做迭代,一次不行,我们再做一次。后一次做的时候,我们还用原来的数据,但是用变换后的来训练分类器和预测。这样的目的是得到越来越好的伪标签,而数据参与迁移的数据是不会变的。这样往返多次,结果就自然而然好了。

  JDA方法比较巧妙,同时适配两个分布,然后非常精巧地规到了一个优化目标里。用弱分类器迭代,最后达到了很好的效果,值得我们去学习。和TCA的主要区别有两点:1)TCA是无监督的(边布适配不需要label),JDA需要源域有label;2)TCA不需要迭代,JDA需要迭代。源代码 -

  从本文开始我会着重介绍一些深度迁移学习方面的文章。今天这篇是其中的经典文章,最初发表于NIPS 2014的《How transferable are features in deep neural networks?》。其实说是经典,也才2014年,很近了。但是神经网络发展太快,14年的就已经算经典了!本篇论文的作者是Jason Yosinski博士(当时是康奈尔大学的博士生),Uber AI联合创始人。值得注意的是论文的第三作者是深度学习大牛Yoshua Bengio,所以论文的质量和档次是可以信赖的。(能和这种级别的大牛合作,我想也算是一个博士生的最好经历了吧!)

  2)本文目前引用数600多次,要知道现在火得一塌糊涂的Goodfellow的GAN文章也才800多!

  随着AlexNet在2012年的ImageNet大赛上获得冠军,深度网络开始在机器学习的研究和应用领域大放异彩。尽管取得了很好的结果,但是神经网络本身就像一个黑箱子,看得见,摸不着,解释不好。

  由于神经网络具有良好的层次结构,很自然地就有人开始关注,能否通过这些层次结构来很好地解释网络?于是,有了我们熟知的例子:假设一个网络要识别一只猫,那么一开始它只能检测到一些边边角角的东西,和猫根本没有关系;然后可能会检测到一些线条和圆形;慢慢地,可以检测到有猫的区域;接着是猫腿、猫脸等等。

  这表达了一个什么事实呢?概括来说就是:前面几层都学习到的是通用的特征(general feature),随着网络的加深,后面的网络更偏重于学习特定的特征(specific feature)。这非常好理解,我们也都很好接受。那么问题来了:我们怎么知道哪些层是general/specific?更进一步:如果应用于迁移学习,如何决定该迁移哪些层固定哪些层?

  该论文是一篇实验性质的文章(通篇没有一个公式)。其目的就是要探究我们提到的几个关键性问题。因此,文章的全部贡献都来自于实验及其结果。(别说为啥做实验也能发文章:都是高考,我只上了个普通一本,我高中同学就上了)

  在ImageNet的1000类上,作者把1000类分成两份(A和B),每份500个类别。然后,分别对A和B基于Caffe训练了一个AlexNet网络。一个AlexNet网络一共有8层,除去第8层是类别相关的网络无法迁移以外,作者在1~7这7层上逐层实验了AnB和BnB。

  简单说一下什么叫AnB:(所有实验都是针对数据B来说的)将A网络的前n层拿来并将它frozen,剩下的8-n层随机初始化,然后对B进行分类。

  相应地,有BnB:把训练好的B网络的前n层拿来并将它frozen,剩下的8-n层随机初始化,然后对B进行分类。

  这个图说明了什么呢?我们先看蓝色的BnB和BnB+(就是BnB加上fine-tune)。对BnB而言,原训练好的B模型的前3层直接拿来就可以用而不会对模型精度有什么损失。到了4~5层,精度略有下降,不过还是可以接受。然而到了6~7层,精度居然奇迹般地回升了!这是为什么?原因如下:对于一开始精度下降的4~5层来说,确实是到了这一步,feature变得越来越specific,所以下降了。那对于6~7层为什么精度又不变了?那是因为,整个网络就8层,我们固定了6~7层,这个网络还能学啥呢?所以很自然地,精度和原来的B网络几乎一致!

  我们重点关注AnB和AnB+。对AnB来说,直接将A网络的前3层迁移到B,貌似不会有什么影响,再一次说明,网络的前3层学到的几乎都是general feature!往后,到了4~5层的时候,精度开始下降,我们直接说:一定是feature不general了!然而,到了第6~7层,精度出现了小小的提升后又下降,这又是为什么?作者在这里提出两点:co-adaptation和feature representation。就是说,4~5层精度下降的时候,主要是由于A和B两个数据集的差异比较大,所以会下降;到了6~7层,由于网络几乎不迭代了,学习能力太差,此时feature学不到,所以精度下降得更厉害。

  再看AnB+。加入了fine-tune以后,AnB+的表现对于所有的n几乎都非常好,甚至比baseB(最初的B)还要好一些!这说明:fine-tune对于深度迁移有着非常好的促进作用!

  至此,AnB和BnB基本完成。作者又想,是不是我分A和B数据的时候,里面存在一些比较相似的类使结果好了?比如说A里有猫,B里有狮子,所以结果会好?为了排除这些影响,作者又分了一下数据集,这次使得A和B里几乎没有相似的类别。在这个条件下再做AnB,与原来精度比较(0%为基准)得到了下图:

  这个图说明了什么呢?简单:随着可迁移层数的增加,模型性能下降。但是,前3层仍然还是可以迁移的!同时,与随机初始化所有权重比较,迁移学习的精度是很高的!

  虽然该论文并没有提出一个创新方法,但是通过实验得到了以下几个结论,对以后的深度学习和深度迁移学习都有着非常高的指导意义(杨强教授非常赞赏该论文的工作):

  值得一提的是,作者和他的团队开发了深度网络可视化工具箱Deep Visualization Toolbox,通过可视化来理解深度网络!这个工具箱的地址:

  这周五下午约见了机器学习和迁移学习大牛、大学的龙明盛老师。老师为人非常nice,思维敏捷,非常健谈!一不留神就谈了1个多小时,意犹未尽,学到了很多东西!龙明盛老师在博士期间(去年博士毕业)发表的文章几乎全部是A类顶会,他在学期间与世界知名学者杨强、Philip S. Yu及Michael I. Jordan多次合作,让我非常膜拜!这次介绍他在ICML-15上提出的深度适配网络。

  深度适配网络(Deep Adaptation Netowrk,DAN)是大学龙明盛提出来的深度迁移学习方法,最初发表于2015年的机器学习领域会议ICML上。DAN解决的也是迁移学习和机器学习中经典的domain adaptation问题,只不过是以深度网络为载体来进行适配迁移。DAN是深度迁移学习领域的代表性工作,被UC Berkeley、HKUST等世界知名大学不断引用。杨强老师对DAN的评价很高,在Google Scholar上也有着很高的引用量,可以被看作是深度迁移学习领域的经典文章。值得注意的是DAN文章的最后一位作者是Michael I. Jordan,机器学习领域的泰山北斗。所以这篇文章的含金量非常的大。

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

  适配高层网络的代表性工作是Eric Tzeng等人在2014年发在arXiv上的《Deep domain confusion: maximizing for domain invariance》(至今没找到到底发在哪了)。这篇文章针对于预训练的AlexNet(8层)网络,在第7层(也就是feature层,softmax的上一层)加入了MMD距离来减小source和target之间的差异。这个方法简称为DDC。这篇文章概括一点说,就是适配了最高层网络,只有一层。那么,是否只适配这一层就够了呢?

  一是DDC只适配了一层网络,可能还是不够,因为Jason的工作中已经明确指出不同层都是可以迁移的。所以DAN就多适配几层;

  二是DDC是用了单一核的MMD,单一固定的核可能不是最优的核。DAN用了多核的MMD(MK-MMD),效果比DDC更好。

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

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

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

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

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

  分别是6和8,表示网络适配是从第6层到第8层,前面的不进行适配。表示source和target中所有有label的数据的集合。是惩罚系数。就定义了一个损失函数,在深度网络中一般都是cross-entropy。DAN的网络结构如下图所示。

相关阅读
  • 没有资料