迁移学习--综述_reweighting__一个新新的小白的博客-程序员宅基地

技术标签: 算法  

最近开始入迁移学习的坑。在此必须感谢一下知乎用户@王晋东不在家,他做了超级详细的关于迁移学习的归纳整理,从最新文章到可以上手的代码,应有尽有:

http://transferlearning.xyz/

开始正文!


文章:A Survey on Transfer Learning

这篇文章可以说是十分经典了,对迁移学习的历史、分类、遇到的挑战都做了很详尽的解释。


1. 迁移学习的重要性

传统的机器学习/数据挖掘只有在训练集数据和测试集数据都来自同一个feature space(特征空间)和统一分布的时候才运行的比较好,这意味着每一次换了数据都要重新训练模型,太麻烦了。比如:

(1)从数据类型/内容上看,对于新的数据集,获取新的训练数据很贵也很难。

(2)从时间维度上看,有些数据集很容易过期,即不同时期的数据分布也会不同。比如对于某个用户进行室内wifi定位的时候,把他在一个很大的室内的数据标记好已经很难了,wifi信号强弱还会受到时间影响,所以如果对于每个时间段都要进行一次训练那就太麻烦了。。


2. 概念

记住两对概念就好了:domain(域)task(任务)source(源)target(目标),然后给它们进行自由组合。

domain:包括两部分:1.feature space(特征空间);2.probability(概率)。所以当我们说domain不同的时候,就得分两种情况。可能是feature space不同,也可能是feature space一样但probability不同。

task:包括两部分:1. label space(标记空间);2.objective predictive function(目标预测函数)。同理,当我们说task不同的时候,就得分两种情况。可能是label space不同,也可能是label space一样但function不同。

source和target就不用说了,前者是用于训练模型的域/任务,后者是要用前者的模型对自己的数据进行预测/分类/聚类等机器学习任务的域/任务。


3. 迁移学习的分类

3.1. 从问题角度来看

(1)迁移什么?

哪一部分知识可以被迁移?

(2)怎么迁移?

那当然就是训练出适合的模型啦。

(3)什么时候需要用到迁移学习?

当source domain和target domain没什么关系或者太不相同的时候,迁移效果可能就不那么好了,甚至可能会比不迁移的时候表现要更差,这个就叫做negative transfer了。

可以看到,迁移学习的能力也是有限的,所以我们需要关注迁移学习的边界在哪里,比如用conditional Kolmogorov complexity去衡量tasks之间的相关性。


作者指出,现在很多工作都关注前两个问题,但实际上第三个问题是很重要的,因为你在那捣腾半天最后发现其实迁移了还不如不迁移,那不是白费心思嘛。所以作者认为这个问题应当被重视,比如说可以在迁移之前先看看source和domain之间的transferability(可迁移性)


3.2. 从迁移场景来看

(1)Homogeneous TL(同构学习):source domain和target domain的feature space相同。

(2)Heterogeneous TL(异构学习):source domain和target domain的feature space不同。


3.3. 从迁移场景来看

(1)Inductive TL(归纳式迁移学习)

source和target的domain可能一样或不一样,task不一样;target domain的labeled数据可得,source domain不一定可得。

所以呢,根据source domain的labeled数据可以再细分为两类:

  • multitask learning(多任务学习):source domain的labeled数据可得。
  • self-taught learning(自学习):source domain的labeled数据不可得。

(2)Transductive TL(直推式迁移学习)

source和target的task一样,domain不一样;source domain的labeled数据可得,target domain的不可得。注意我们提过,domain不一样意味着两种可能:feature space不一样,或者feature space一样而probability不一样。而后一种情况和domain adaptation(域适配)息息相关。这里也可以根据domain和task的个数分为两个情况:

  • Domain Adaptation(域适配):不同的domains+single task
  • Sample Selection Bias(样本选择偏差)/Covariance Shift(协方差转变):single domain+single task

(3)Unsupervised TL(无监督迁移学习)

source和target的domain和task都不一样;source domain和target domain的labeled数据都不可得。


综上,这几个方法差别主要是:(1)source和domain之间,domain是否相同,task是否相同;(2)source domain和target domain的labeled数据是否可以得到。

直接看这两个表。值得注意的是,第一张表中Inductive TL和Unsupervised TL之间是用“/”隔开的,什么意思呢?再看看Inductive TL的定义,是说tasks不一样,但domain可能一样可能不一样,不一样的时候就可以称为Unsupervised TL。不过Unsupervised TL会更关注unsupervised的任务。




3.4. 从“迁移什么”来看

(1)Instance-based TL(样本迁移)

尽管source domain数据不可以整个直接被用到target domain里,但是在source domain中还是找到一些可以重新被用到target domain中的数据。对它们调整权重,使它能与target domain中的数据匹配之后可以进行迁移。盗一张图,比如在这个例子中就是找到例子3,然后加重它的权值,这样在预测的时候它所占权重较大,预测也可以更准确。

instance reweighting(样本重新调整权重)importance sampling(重要性采样)是instance-based TL里主要用到的两项技术。


(2)Feature-representation-transfer(特征迁移)

找到一些好的有代表性的特征,通过特征变换把source domain和target domain的特征变换到同样的空间,使得这个空间中source domain和target domain的数据具有相同的分布,然后进行传统的机器学习就可以了。

特征变换这一块可以举个栗子,比如评论男生的时候,你会说”好帅!好有男人味!好有担当!“;评论女生的时候,你会说”好漂亮!好有女人味!好温柔!“可以看出共同的特征就是“好看”。把“好帅”映射到“好看”,把“好漂亮”映射到“好看”,“好看”便是它们的共同特征。

关于这一块,感觉这个文章讲的挺详细的,可以看看:迁移学习理论与应用

(3)Parameter-transfer(参数/模型迁移)

假设source tasks和target tasks之间共享一些参数,或者共享模型hyperparameters(超参数)的先验分布。这样把原来的模型迁移到新的domain时,也可以达到不错的精度。

下面这个项目感觉用到就是这个parameter-transfer:基于深度学习和迁移学习的识花实践

(4)Relational-knowledge-transfer(关系迁移)

把相似的关系进行迁移,比如生物病毒传播到计算机病毒传播的迁移,比如师生关系到上司下属关系的迁移。


4. 具体方法

这一块主要就是把上面的3.3和3.4揉起来。先上一张表看看它们之间哪些可以揉在一起,哪些不可以:


好了,我们来开始揉吧!我主要会介绍它们的一些方法、假设、大概是怎么做的,其中方法只会提一些很出名很出名的,方便索引。


4.1. Inductive TL

(1)Instances TL

主要方法:TrAdaBoost(AdaBoost的拓展)

假设:source domain和target domain数据的feature和labels是一样的,但是分布不一样;部分source domain的数据会对target domain的学习有帮助,但有部分可能会不利于target domain的学习。

过程:大致就是不断地给好的source data赋予更高的权重,给不好的赋予更多的权重。

(2)Features TL

需要根据source domain的labeled data是否可得分为两类(回顾:Inductive TL是target domain的labeled data可得,但是source domain的未必可得):

Supervised Feature Construction(监督的特征构建)

Unsupervised Feature Construction(非监督的特征构建)

大致过程:通过减少model error,找出低维的有代表性的特征

(3)Parameters TL

主要方法:MT-IVM(基于Gaussian Processes)

大致过程(注意这里讲述的不是上面提到的那个主要方法的过程,而是另一个方法的过程):假设source和target的参数都可以分为两部分,一部分是source/target特有的参数,一部分是它们共同有的参数。把这两个参数丢到改进了的SVM问题中,把参数训练出来就好了。

(4)Relational TL

注意和上面三种方法不同的是,这个方法是在relational domains里进行的,这个domain里的数据不是iid(独立同分布)的,所以它不需要假设每个domain里的数据都必须iid。

主要方法:statistical relational learning(SRL,统计关系学习)


4.2. Transductive TL

回顾一下,Transductive TL是source domain的label可得,target domain的label不可得。但是要注意!为了得到target data的边际分布,在training的时候是需要一些unlabeled的target data的。

(1)Instances TL

主要方法:Importance sampling。

大致过程:我们的目标是最小化target domain里的expected risk(期望风险),但是target domain里没有labeled数据可用,所以我们必须替换成source domain里的数据,通过一些方法可以把它替换成source domain里的数据再乘以一个权重,只要把这个权重算出来就好。

(2)Feature Representations TL

主要方法:Structural Correspondence Learning(SCL)

大致过程:定义一些pivot features(就是共同特征),然后把每一个pivot feature都当成是一个新的label vector,通过公式把权重学习出来,然后对权重进行SVD分解,最后在argumented feature vector上使用传统的判别式算法即可。这里argumented feature vector包括这些新的features和所有原来的feature。(我还没有详细看这一块儿,所以先直译了)

难点:如何寻找好的pivot feature、domain之间的依赖性。


4.3. Unsupervised TL

(1)Feature Representations TL

主要方法:涉及两个

  • Self-taught clustering(STC),主要用于transfer clustering(迁移聚类)。目标就是希望通过source domain里大量的unlabeled data对少量的target domain里的unlabeled data进行聚类。
  • TDA方法,这个主要用于解决transfer dimensionality reduction(迁移降维)问题


5. 存在不足

(1)当然就是negative transfer的问题啦,比如怎么定义transferability,怎么衡量domain之间或task之间的相关性。

(2)目前的TL算法主要都是想要提高feature space相同probability不同时的表现的,记得我前面说过的domain不同或者task不同都有两种情况,一种是space不同,一种是space相同probability不同吗?这里说的就是目前TL算法主要致力于提高的都是概率不同的。但是很多时候我们其实也想要对feature space不同的domain和task进行迁移。这个就是3.2提到的heterogeneous TL(异构学习)问题。

(3)现在的TL主要都是应用到小且波动不大的数据集中(例如传感器数据、文本分类、图片分类等),以后要考虑如何用到更广泛的数据场景中。

            </div>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_31511955/article/details/82220268

智能推荐

自动测试好帮手,自动点击屏幕AutoClickScreen(含源码)-程序员宅基地

自动测试好帮手,自动点击屏幕AutoClickScreen(含源码) http://www.armce.com/bbs/thread-202-1-3.html

UniswapV2合约学习之路(一) 【ExampleFlashSwap】2020-12-29_大家都是怎么学习uniswap的-程序员宅基地

记得朋友圈看到过一句话,如果Defi是以太坊的皇冠,那么Uniswap就是这顶皇冠中的明珠。Uniswap目前已经是V2版本,相对V1,它的功能更加全面优化,然而其合约源码却并不复杂。本文为个人学习UniswapV2源码的系列记录文章。本学习过程引用自博客pragma solidity =0.6.6;//导入IUniswapV2Callee接口,该接口定义了一个接收到代币后的回调函数。在Uniswapv2核心合约中的交易对合约的swap函数有这么一行代码//if (data.length &._大家都是怎么学习uniswap的

python中的字符串是什么,一文秒懂Python中的字符串-程序员宅基地

摘要:本文将告诉您Python中的字符串是什么,并向您简要介绍有关该概念的所有知识。因此,让我们开始吧。什么是Python中的字符串?我们许多熟悉C,C ++等编程语言的人都会得到诸如“字符串是字符的集合或字符数组”的答案。在Python中也是如此,我们说的是String数据类型的相同定义。字符串是序列字符的数组,并写在单引号,双引号或三引号内。另外,Python没有字符数据类型,因此当我们编写“...

python实现指定数据库指定表的数据同步(监听binlog)_python监听数据库-程序员宅基地

话不多说直接上代码,简单实现,具体功能请根据业务场景自行调整from pymysqlreplication import BinLogStreamReaderfrom pymysqlreplication.row_event import DeleteRowsEvent, UpdateRowsEvent, WriteRowsEventimport sysimport threadingimport tracebackimport timeimport pymysqlmysql_sett._python监听数据库

Ubuntu18.04常用命令总结_ubuntu保存生效命令-程序员宅基地

查看文件内容catnano命令退出退出请按Ctrl+X 如果文件未修改,直接退出 如果文件修改了 输入Y确认保存,输入N不保存vi命令退出首先需要按ESC键回到命令模式;然后输入:wq 保存文件并退出vi;最后回车即可Ubuntu中apt与apt-get命令的区别简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。apt 命令 取代的命令 命令的功能apt install apt-get install 安装软件_ubuntu保存生效命令

java 与jni转码_JNI 中文转码问题_丧心病狂刘老湿的博客-程序员宅基地

java内部是使用16bit的unicode编码(UTF-16)来表示字符串的,无论中文英文都是2字节;jni内部是使用UTF-8编码来表示字符串的,UTF-8是变长编码的unicode,一般ascii字符是1字节,中文是3字节;c/c++使用的是原始数据,ascii就是一个字节了,中文一般是GB2312编码,用两个字节来表示一个汉字。明确了概念,操作就比较清楚了。下面根据字符流的方向来分别说明一...

随便推点

PDF预览 (引入pdf.js)_compatibility.js-程序员宅基地

pdf.js是一款开源的pdf文档读取解析插件,据说在HTML5下诞生的,对于主流的浏览器基本都支持。pdf.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,,一个负责API解析,一个负责核心解析程序的结构翻译build/pdf.js display layer,显示层采用核心层并且暴露了一个更容易使用的API来渲染..._compatibility.js

从键盘任意输入一个整数,编程判断它的奇偶性-程序员宅基地

#includemain(){ int a; printf("input a"); scanf("%d",&a); if(a%2==0) printf("a是偶数\n"); else printf("a是奇数\n"); return 0;}

翻译-Elasticsearch Search Tempalte-程序员宅基地

查询模板/_search/template 结尾的请求允许使用mustache(胡子) 语言来提前处理查询请求。在查询执行之前会给对应的模板添加对应的参数。GET _search/template{ "source" : { "query": { "match" : { "{{my_field}}" : "{{my_value}}" } }, "si...

【UFLDL-exercise6- Self-Taught Learning】-程序员宅基地

刚刚完成Self-Taught Learning。There are two common unsupervised feature learning settings, depending on what type of unlabeled data you have. The more general and powerful setting is the self-taught learni

Jmeter的JSON提取器与正则表达式提取器-程序员宅基地

JSON提取器{ "data": { "totalSize": 38174, "totalPage": 1909, "list": [ { "archivesType": 1, "code": "SHT-TESTA-0008", ...

在这次DTF中戴尔的数字化转型的观点,相信你不想错过-程序员宅基地

在一年一度的戴尔科技峰会中,迈克尔•戴尔亲临现场,他会表达什么?对于中国企业市场大热的人工智能和数字化转型,戴尔会怎么做?这一次有什么重要的产品和解决方案发布?又该如何看..._戴尔公司的数字化转型