迁移学习介绍

本文主要介绍迁移学习概念、难点、有哪些算法之类。

背景介绍

图1、传统机器学习与迁移学习的区别

什么是迁移学习呢?如图1所示,我们先看传统的机器学习的模型都是建立在训练数据和测试数据来自同一个领域并服从相同的数据分布的假设上,典型的比如有监督学习、无监督模型等,针对每个领域上训练一个分类器,然后对该领域进行预测打分。

而现实中,我们有很多不同的领域知识,其中我们的任务对应的是目标领域(即target domain),其它领域可以用于补助我们学习目标领域叫源领域(即sourcedomain)。在源领域往往已经拥有大量数据,并且在源领域能对数据进行很好的应用建立了模型后,我们换一个领域也能让它使用,这样既节省了资源,又达到时间和效果的好处,就叫做迁移学习【1】。这就很像人的举一反三的学习能力,比如我们学会骑自行车以后,我们又去学摩托车,发现很简单,我们打球、学语言、学物理化学也有很多这样的例子。

迁移学习又是很难的,难在如何在不同的领域里找出不变量【4】。举个生活中的例子,如图2所示,在国内和世界很多地方,驾驶员都是坐在左边,但是去中国香港驾驶员就是在右边,很多人不会开车了,就会出现危险,但是用迁移学习教你一招马上可以开,而且很安全,就是找出一个不变量。这个不变量就是司机的位置总是靠路中间最近的,你就保持司机的位置离中线最近就可以了。

图2、不同国家开车时司机的位置

那迁移学习具体怎么做的呢,根据迁移的内容【1】,迁移学习可以分为四类:

基于样本的迁移学习(instance-based transferlearning):source domain中的数据的某一部分可以通过reweighting的方法重用,用于target domain的学习。

基于特征表示的迁移学习(feature-based transferlearning): 通过source domain学习一个好的(good)的特征表示,把知识通过特征的形式进行编码,并从source domain传递到target domain,提升target domain任务效果。

基于参数的迁移学习(parameter-transfer learning):target domain和source domain的任务之间共享相同的模型参数(model parameters)或者是服从相同的先验分布(priordistribution)。

基于关系知识迁移学习(relational-knowledgetransfer learning):相关领域之间的知识迁移,假设source domain和target domain中,数据(data)之间联系关系是相同的。

迁移学习算法

自从去年开始我们在迁移学习方面做了很多方面的沉淀,包括开发了tradaboost算法(Instance-Based TransferLearning)和Deep Transfer Network算法(Feature-Based Transfer Learning);

TrAdaBoost算法

TrAdaBoost算法,是Dai et al【2】在2007提出来的,是一种经典的基于样本迁移的算法。其基本思路是如图3所示,在每次迭代中调整样本权重,即在迭代时降低source domain中错误分类的样本权重,增加target domain中正确分类的样本权重。整体上通过调整样本权重,从而达到:(1)在target domain本身对提升学习效果的样本赋予更高权重(类似AdaBoost思想); 此外,(2)从sourcedomain中找到与target domain相似性比较高的标签样本来帮助target domain模型训练。

图3、TrAdaBoost算法

TrAdaBoost算法是一种有监督学习,需要在source domain和target domain具有一致的数据结构(即相同维度的数据宽表),同时要求source 和target domain都有数据标签;具体伪代码如下:

图4、tradaboost算法伪代码

根据上述伪代码,我们开发完成了一个python版本的tradaboost算法,并在在实现的过程中进行很多优化,包括:

1.优化模型最终ensemble组合;

2.支持多种基分类器选择;

3.每轮迭代的权重可以指定输出;

4.模型输出的组合方式可以指定;

5.使用矩阵计算提升运行效率等等。

DTN算法

Deep Transfer Network【4】,缩写DTN,本质上用MLP深度网络去做域适应(Domain Adaption)的理念,这个网络被分为了两种类型的层,共享特征抽取层和判别层。第一层共享特征抽取层用于匹配边缘分布,共享特征抽取层可以是一个多层感知机,如果网络层数为l的话,我们一般会把前l-1层看作共享特征抽取层,而l-1层的输出则是一种分布相近的共享特征,它可用于后面做类别判断。 具体图结构如下:

图5、 DTN算法模型结构

DTN算法可以允许在target domain上无标签数据,下面是DTN算法对应的伪代码,具体细节请见参考文献

图6 DTN算法伪代码

理论上,任何领域直接都可以做迁移学习,但是,如果source domain和target domain相似度不够,迁移结果并不会理想,会出现所谓的negative transfer情况,比如,一个人会骑自行车,就可以类比学电动车,但是如果类比学开汽车,那就有点天方夜谭了。如何找到相似度尽可能高的source domain 和target domain,是整个迁移过程最重要的前提。

迁移学习方面,代表人物有中国香港科技大学的Qiang Yang教授,南洋理工大学的Sinno Jialin Pan,以及第四范式的CEO戴文渊等。代表文献是Sinno Jialin Pan和Qiang Yang的A Survey on Transfer Learning【1】。

总结

本文作为阐述迁移学习在风控场景中应用的序列文章中的第一篇,主要先介绍下什么是迁移学习,迁移学习难点是什么,迁移学习算法有哪些,最后重点介绍了我们在这过程中开发和实现的两个迁移学习算法TrAdaBoost和Deep Tree Network;

在第二篇文章中我们会重点阐述结合当前风控场景的一些特点,如何利用特定的领域数据做迁移学习以帮忙提升在target domain上的模型性能,有效证明迁移学习能解决风控场景中小数据、冷启动、易变性等问题。

参考文献

1]Pan etal., A Survey on Transfer Learning, IEEE TKDE 2009

2]Dai et al., Boosting for Transfer Learning, ICML 2007

3]Zhangetal.,Deep transfer network:unsupervised domain adaptation,2015

4]杨强, 深度学习的迁移模型,CCAI 2017

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180427G1W1DL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券