迁移学习综述

参考论文:A Survey on Transfer Learning

1、Introduction

  在机器学习和数据挖掘中有一个很普遍的假设就是训练数据和测试数据来源于统一特征空间并服从相同的分布。而当测试数据分布发生改变之后,我们又不得不从新收集同分布的训练数据并从新训练模型。这在真实的应用中去从很难去重新收集数据并建模,而且给原始数据人工标签的代价也很昂贵。在这些情况下,迁移学习可以很好的解决这些问题。

  什么是迁移学习?用一句话概述就是基于已有的知识可以更快的学习新的知识。例如一个人会下象棋就会更容易地学会下围棋,一个人会说英语也就更容易学会西班牙语等。迁移学习强调的是在不同但是相似的领域、任务和分布之间进行知识的迁移。

  迁移学习能应用的场景也很多。例如网络文档分类,我们将网络中的文档分入到预设定的几个类别中。我们用当时的网络文档打上标签训练分类模型,而对于现在新的网络文档,其数据特征和分布可能和当初训练模型时的训练数据不同,此时新的网络文档分类就会不准确。而从新收集训练数据并训练模型的成本又非常高,这种情况下,迁移学习就能很有帮助。另一个例子,我们在对相机的评价做情感分类时,不同品牌的相机的评价数据可能服从不同的分布,然而在训练模型时,我们又无法收集所有品牌的相机的评价数据,并打上相应的标签,这样的成本是很高的。通常情况下我们可以收集几种品牌的相机的评价数据并打上标签,用这些带标签的数据训练模型,之后可以通过迁移学习的方式将其迁移到其他品牌相机的情感分类问题上。

2、Overview

  传统的机器学习和数据挖掘算法都是基于有监督或无监督训练后的统计模型来预测。无论怎样,在传统的机器学习中我们都认为训练数据和预测数据是服从同分布的。迁移学习其实和多分类问题有点类似,不过多分类问题是讲所有的任务同时进行的,即使这些任务的分布状态不同。而迁移学习可以根据早期的任务来应用到新的任务上。关于传统机器学习和迁移学习的区别如下图所示:

    

  在上图中,传统的机器学习是讲源任务和目标任务放在一起同时学习的,而对于迁移学习是先学习源任务,然后从源任务中抽取相关的知识迁移到目标任务上。在这里的目标任务有个特点就是可用的训练数据非常小,仅仅用目标任务自身的数据训练出的模型泛化能力非常差。

  在这里我们引入域的概念,域的表达式如下 $D={\chi, P(X)}$ ,其中 $\chi$ 表示特征空间,$P(X)$ 表示边缘概率分布。引入源域 $D_S$ 和目标域 $D_T$ 的概念。且源域的大小要远远大于目标域。当源域和目标域的特征空间存在一些关系时,我们就认为这两个域是相关的。

  在迁移学习中主要有三个问题:

  1)迁移什么?

  2)怎么迁移?

  3)什么时候该迁移?

  “迁移什么”是说在从源任务中迁移知识到目标任务时,哪些知识是可以迁移的?一般认为在源域中存在两种类型的知识,一种是源域特有的知识,一种是源域和目标域通用的知识,一般迁移的都是这类通用的知识。确定迁移的知识之后,就是“怎么迁移?”,也就是用什么算法进行知识的迁移。

  “什么时候该迁移?”,确切的说就是在哪些场景下需要应用迁移学习,一般来说只有在源任务和目标任务之间存在相关性的时候才可以进行迁移学习。而在不相关的时候进行迁移时不会有任何效果,甚至可能会造成“负迁移”的后果。

  基于上面关于迁移学习的定义,作者总结了不同场景下的迁移学习和传统机器学习的关系,具体如下表所示:

    

  如上表所示,作者将迁移学习分为三种应用场景:Inductive Transfer Learning;Unsupervised Transfer Learning;Transductive Transfer Learning

  1)Inductive Transfer Learning

  在该场景下,源任务和目标任务分布不同但相关。该场景下需要根据目标域中少量可用的数据构建预测模型。该场景和多分类任务有点类似,知识迁移学习通过在源任务中提取相关的知识来提高目标任务的预测率,而在多分类任务中是将源任务和目标任务一起训练。

  2)Unsupervised Transfer Learning

  非监督迁移学习旨在解决聚类、密度估计等问题。

  3)Transductive Transfer Learning

  在该场景下,源域和目标域分布不同但是相关,而且有两种不同的情况:

    a)源域和目标域的特征空间不同;

    b)源域和目标域的边缘概率分布不同;

  上述的三种场景下的迁移学习和相关应用领域的关系如下表所示:

    

   上述的三种场景下的迁移学习可以被归结为四个案例中,具体如下表所示

     

  上述表中四种案例分别是:

  1)基于样本的迁移学习

  源域中某一部分的数据通过施加权重后(相关性强的样本给予高权重),可以直接用来添加到目标域中直接学习目标任务,Tradaboost 算法就是这种类型的迁移学习。

  2)基于特征的迁移学习

  源域中数据的部分特征和目标域中相同,不如有一个猫狗的分类器可以用来迁移学习不同品种狗的分类器。

  3)基于参数的迁移学习

  源任务和目标任务共用相同参数的模型。或者是共用部参数或先验分布。

  4)基于相关性的迁移学习

  认为源域和目标域中的数据之间是具有相关性的迁移方式。

  下表描述了四种不同案例可以使用的迁移方法。可以看到具体的案例可以用哪些迁移学习方法来解决。

    

   

转载于:https://www.cnblogs.com/jiangxinyang/p/9661415.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

清零 css,css样式清零及常用类

/*css样式清零及常用类*/charset "utf-8";/*CSS Reset*//*"微软雅黑","5FAE8F6F96C59ED1","Microsoft YaHei""黑体","9ED14F53""新宋体","65B05B8B4F53""宋体","5B8B4F53&quo…

实例46:python

#题目:求输入数字的平方,如果平方运算后小于 50 则退出。 #!/usr/bin/python -- coding: UTF-8 -- TRUE 1 FALSE 0 def SQ(x): return x * x print (‘如果输入的数字小于 50,程序将停止运行。’) again 1 while again: num int(input…

常见笔顺错误的字_最全汉字书写笔顺规则

最全汉字书写笔顺规则汉字笔画名称汉字书写顺序一个字先写哪一笔,后写哪一笔,叫做笔顺。汉字的笔顺有一定规律,一般如下:常见的笔画笔顺易错字;"忄" 先写点和点,最后写竖。"匕" 先写撇…

ajax时间控件,带有ajax的JQuery中的插件datetimepicker出错

我尝试这样做,禁用所有日期并启用我通过参数传递的日期这段代码不起作用$.ajax({method: "GET",url: "url",}).success(function(msg) {console.log(JSON.parse(msg));var disableIni JSON.parse(msg);var disable [];for (var i 0; i < disableIni.…

软件能用python编程吗_python能做软件开发吗?怎么样?

当然可以&#xff0c;这里以Python桌面软件开发为例&#xff0c;简单介绍几个非常不错的模块和第三方库&#xff0c;感兴趣的朋友可以尝试一下&#xff1a;01tkinter这是一个非常基础的Python GUI开发库(标准库)&#xff0c;免费、开源、跨平台&#xff0c;自带组件和容器完全可…

实例47:python

#题目&#xff1a;两个变量值互换。 encoding:utf-8 ‘’’ 三种简单的变量交换方法——参数法&#xff1b;相互运算法&#xff1b;字符拼剪法 ‘’’ def shuru(): a input(‘请输入a的值’) b input(“请输入b的值”) return a, b def change1(a, b):#加入第三变量 t …

js获取当前时间格式YYYY/MM/DD

//获取当前时间&#xff0c;格式YYYY-MM-DD function getNowFormatDate() {var date new Date();var seperator1 "/";var year date.getFullYear();//年var month date.getMonth() 1;//月var strDate date.getDate(); //日if (month > 1 && month &…

ajax 批量上传图片插件,TinyMCE多图片批量上传(Ajax)教程

需要用上插件&#xff1a;axupimgs插件作者&#xff1a;莫若卿支持版本&#xff1a;5.0.4支持语言&#xff1a;仅中文插件版本&#xff1a;1.6一、axupimgs 插件作用&#xff1a;这是一个tinymce多图片批量上传插件&#xff0c;支持拖拽文件添加&#xff0c;拖拽支持白名单&…

druid 非对称加密_springboot配置文件中mysql的密码进行加密

一、引入依赖方式一&#xff1a;com.alibabadruid1.2.1方式二&#xff1a;com.alibabadruid-spring-boot-starter1.2.1二、对密码加密加密命令java -cp druid-1.2.1.jar com.alibaba.druid.filter.config.ConfigTools you_password得到如下三个部分privateKey:MIIBVQIBADANBgkq…

实例48:python

#题目&#xff1a;数字比较。 #!/usr/bin/env python -- coding:utf-8 -- def compare(num1, num2): if num1 > num2: print("%s大于%s" % (num1, num2)) elif num2 > num1: print("%s大于%s" % (num2, num1)) else: print("%s等于%s" %…

------------------uniq 去重复

uniq #检查文件中重复出现的行-c #显示输出&#xff0c;并在文本行前加重复出现的次数,但如果重复行不连续&#xff0c;则不认为是重复的行-d #只显示重复出现的行-u #只显示不重复出现的行uniq -c passwd #显示重复行的次数uniq -u passwd #只显示不重复出现…

实例49:python

#题目&#xff1a;使用lambda来创建匿名函数。 #!/usr/bin/python -- coding: UTF-8 -- MAXIMUM lambda x,y : (x > y) * x (x < y) * y MINIMUM lambda x,y : (x > y) * y (x < y) * x if name ‘main’: a 10 b 20 print (‘The largar one is %d’ %…

蜗牛星际b款装服务器系统,记录下蜗牛星际更换系统硬盘重新安装系统的一番折腾...

前言大概是去年双十一前的日子&#xff0c;终于想折腾下NAS&#xff0c;找了个廉价矿渣产品&#xff1a;蜗牛星际A款。到手的机器商家已经给装好了黑群辉&#xff0c;刚上手不适应&#xff0c;也就懒得折腾&#xff0c;网上找了下资料&#xff0c;同局域网电脑上下载了群辉助手…

简述汇编语言中的标号有什么规定_2020年秋季学期《汇编语言》在线考试 (适用于2020年12月份考试)【答案标准】...

2020年秋季学期《汇编语言》在线考试 (适用于2020年12月份考试)共29道题 总分&#xff1a;100分答题中剩余答题时间&#xff1a;88 : 06单选题问答题论述题一、单选题共20题&#xff0c;40分12分设数据段中已有: DA1 DB 12H,34HDA2 DW 56H,78H下面有语法错误的句是( )AADR1 DW …

java程序员经常使用的Intellij Idea插件

大概从去年年初开始慢慢抛弃习惯多年的eclipse&#xff0c;开始使用Intellij Idea,以下是我使用过的一些Intellij Idea插件&#xff1a; 1.lombok https://plugins.jetbrains.com/plugin/6317-lombok-plugin 支持lombok的各种注解&#xff0c;从此不用写getter setter这些 可以…

实例50:python

#题目&#xff1a;输出一个随机数。 #!/user/bin/env python #coding:utf-8 import random print (random.random()) #输入0-1之间的随机数 print (random.uniform(10,20)) #输出10-20之间的随机数 print (random.randint(10,20)) #输出10-20之间的随机整数

系统mysql数据库服务器,系统mysql数据库服务器

系统mysql数据库服务器 内容精选换一换“数据导入”章节适用于MRS 3.x及后续版本。Loader是实现MRS与外部数据源如关系型数据库、SFTP服务器、FTP服务器之间交换数据和文件的ETL工具&#xff0c;支持将数据或文件从关系型数据库或文件系统导入到MRS系统中。Loader支持如下数据导…

tableau地图城市数据_举个栗子!Tableau 技巧(156):在地图分析中创建缓冲区

缓冲区指的是一个区域&#xff0c;在地图中就是从一个位置&#xff08;或位置范围&#xff09;到特定距离内的所有位置。实际业务场景中&#xff0c;如果需要对某些范围的数据进行邻近性分析或定义搜索区域&#xff0c;例如&#xff1a;服务中心的辐射范围、物流业务的覆盖范围…

python之lambda

例1:传入多个参数的lambda函数 def sum(x,y): return xy 用lambda来实现&#xff1a; p lambda x,y:xy print(p(4,6)) 例2&#xff1a;传入一个参数的lambda函数 alambda x:x*x print(a(3)) # 注意&#xff1a;这里直接a(3)可以执行&#xff0c;但没有输出的&#xff0c;前面…

javascript 运算符优先级

JavaScript 运算符优先级&#xff08;从高到低&#xff09; https://github.com/xhlwill/blog/issues/16 今天把js函数转换为python 函数时,发现在js运算符优先级这边卡了一下. 记录一下,以后注意 function C(A) { return A < 62 ? String.fromCharCode(A A < 26 ? 6…