• 迁移学习提出背景

在机器学习、深度学习和数据挖掘的大多数任务中,我们都会假设training和inference时,采用的数据服从相同的分布(distribution)、来源于相同的特征空间(feature space)。但在现实应用中,这个假设很难成立,往往遇到一些问题:

  • 1、带标记的训练样本数量有限。比如,处理A领域(target domain)的分类问题时,缺少足够的训练样本。同时,与A领域相关的B(source domain)领域,拥有大量的训练样本,但B领域与A领域处于不同的特征空间或样本服从不同的分布。
  • 2、数据分布会发生变化。数据分布与时间、地点或其他动态因素相关,随着动态因素的变化,数据分布会发生变化,以前收集的数据已经过时,需要重新收集数据,重建模型。

这时,知识迁移(knowledge transfer)是一个不错的选择,即把B领域中的知识迁移到A领域中来,提高A领域分类效果,不需要花大量时间去标注A领域数据。迁移学习,做为一种新的学习范式,被提出用于解决这个问题。

  • 迁移学习发展历史

迁移学习的研究来源于一个观测:人类可以将以前的学到的知识应用于解决新的问题,更快的解决问题或取得更好的效果。迁移学习被赋予这样一个任务:从以前的任务当中去学习知识(knowledge)或经验,并应用于新的任务当中。换句话说,迁移学习目的是从一个或多个源任务(source tasks)中抽取知识、经验,然后应用于一个目标领域(target domain)当中去。

自1995年以来,迁移学习吸引了众多的研究者的目光,迁移学习有很多其他名字:学习去学习(Learning to learn)、终身学习(life-long learning)、推导迁移(inductive transfer)、知识强化(knowledge consolidation)、上下文敏感性学习(context-sensitive learning)、基于知识的推导偏差(knowledge-based inductive bias)、累计/增量学习(increment / cumulative learning)等

  • 什么是迁移学习?

其目标是将某个领域或任务上学习到的知识应用到不同的但相关的领域或问题中。例如学习C++的技能可以用来学习java

  • 迁移学习的主要思想?

利用相关领域的知识完成目标领域的任务

  • 迁移学习研究的意义?

数据的标签很难获取;从头建立模型是复杂和耗时的

  • 迁移学习与传统机器学习相比的特点?

迁移学习放宽了传统机器学习训练数据和测试数据服从独立同分布这一假设,从而使得参与学习的领域或任务可以服从不同的边缘概率分布或条件概率分布。

迁移学习问题的数学定义?

域(domain)

用D={χ,P(X)}表示,它包含两部分:特征空间χ和边缘概率分布P(X)其中X={x1,...xn}∈χ

在文本分类任务中,把每一个单词看作二值的特征即出现或者不出现,所有检索词向量的空间就是χ,xi对应某一文本第i个词向量的值,X就是特定的学习样本。如果说两个数据域不同,表示两个数据域的特征空间或者边缘概率分布不同。

任务(task)

用T={У,ƒ(X)}表示,它包含两部分:标签空间У和目标预测函数ƒ(X),ƒ(X)也可以看作条件概率P(y|x)

在文本分类任务中У是所有标签的集合。

数学定义:

给出源领域的数据Ds和任务Ts,目标领域的数据Dt和任务Tt,迁移学习旨在使用源领域Ds和Ts中的知识去改进对于目标领域的预测函数ƒt(),其中Ds≠Dt或者Ts≠Tt

由于D={χP(X)}在上述的定义中DsDt意味着χsχt或者Ps(X)Pt(X)

在文本分类任务中,这两种情况分别意味着在源文本集和目标文本集之间,词特征不同(两个文本使用两种不同语言的情况)以及边缘分布不同。

类似的,由于T={Уƒ(X)},TsTt意味着УsУt或者Ps(y|x)Pt(y|x)

在文本分类任务中,这两种情况分别意味着源领域上的任务要求将文本分为2类,目标领域的任务要求将文本分为10类,以及在定义的类别上,源数据和目标数据数量不平衡。

迁移学习示意图

------------迁移学习分类-----------

根据源领域和目标领域的相似度,可以将情况总结如下:

Ds&Dt

Ts&Tt

传统机器学习

相同

相同

迁移学习

归纳式迁移学习

相同/相关

相关

无监督迁移学习

相关

相关

直推式迁移学习

相关

相同

根据每一种类型的迁移学习,又可根据标签数据的多少分情况讨论:

  1. 归纳式迁移学习
  1. 源数据域包含有大量标签数据,这时归纳式迁移学习和多任务学习类似。
  2. 源数据域没有可用的标签数据,这时归纳式迁移学习相当于自我学习。
  1. 直推式迁移学习

a.特征空间不同χs≠χt

b.特征空间相同χs=χt但是边缘分布不同Ps(X)≠Pt(X),此时可用域适应,样本选择偏差和Covariate Shift。

  1. 无监督迁移学习

总结如下表:

相关领域

源数据域标签

目标数据域标签

任务

归纳式迁移学习

多任务学习

分类回归

自我学习

分类回归

直推式迁移学习

域适应,样本选择偏差和Covariate Shift

分类回归

无监督迁移学习

聚类降维

依据迁移知识的形式可将迁移学习分为:基于实例的迁移学习;基于特征的迁移学习;基于模型的迁移学习;基于关系的迁移学习。

迁移学习方法

方法描述

基于实例的迁移学习

基于实例的迁移学习方法适用于源域和目标域相似度较高的情况。主要思想是:通过改变样本的存在形式来减少源域和目标域的差异。

基于特征的迁移学习

基于特征的迁移学习算法可应用在域间相似度不太高的甚至不相似的情况。主要思想是:通过特征变换将源于和目标域在某个特征空间下表现出相似的性质。

基于参数的迁移学习

基于参数的迁移学习方法从模型的角度出发,共享源域模型与目标域模型之间的某些参数达到迁移学习的效果。

基于关系的迁移学习

基于关系的迁移学习是通过将两个域之间的相关性知识建立一个映射来达到迁移学习的效果。

根据源与目标的样本空间和标记空间的一致性可将迁移学习分为同构迁移学习与异构迁移学习。

当源和目标的样本空间和标记空间一致时称为同构迁移学习;当样本空间和标记空间中只要有一个不一致时称为异构迁移学习。

  • 国内外发展现状

归纳式迁移学习

基于实例的迁移:主要思想就是在目标领域的训练中,虽然源数据域不能直接使用,但是可以从中挑选部分,用于目标领域的学习。

1.TrAdaBoost算法是AdaBoost的提升版本,用于解决归纳式迁移学习问题。它假设源数据域和目标数据域使用相同的特征和标签集合,但是分布不相同。有一些源数据对于目标领域的学习是有帮助的,但是还有一些是无帮助甚至是有害的。所以它迭代地指定源数据域每一个数据的权重,旨在训练当中减小“坏”数据的影响,加强“好”数据的作用。

2.使用启发式的方法,根据条件概率P(Yt|Xt)和P(Ys|Xs)的差异,去除源数据域中“不好”的样本。

基于特征表示的迁移:主要思想是寻找一个“好”的特征表示,最小化域间差异和分类回归的误差。可以分为有监督和无监督两种情况。

有监督特征构造的基本思想是学习一个低维的特征表示,使得特征可以在相关的多个任务中共享,同时也要使分类回归的误差最小。此时目标函数如下:

其中S和T表示源域和目标域,U是将高维的数据映射为低维表示的矩阵。

无监督特征构造的基本思想包含两步,第一步在源领域上学习一个基向量b和基于这组基对于输入x的新的表示a

在得到基向量b之后,第二步在目标领域上根据基向量b来学习其特征表示

最后通过使用目标领域的新特征来训练分类回归模型。

基于参数的迁移:参数迁移方法假定在相关任务上的模型应该共享一些参数、先验分布或者超参数。

多任务学习中多使用这种方法,通过将多任务学习对于源域和目标域的权值做改变(增大目标域权值,减小源域权值),即可将多任务学习转变成迁移学习。

基于相关性的迁移:和前三种方式不同,相关知识迁移方法在相关域中处理迁移学习的问题,它不假设每一个域的数据都是独立同分布的,而是将数据之间的联系从源域迁移到目标域。

直推式迁移学习

基于实例的迁移:直推式迁移学习因为任务相同,所以可以直接使用源域上的损失函数。在源域上最小化目标函数如下

但是由于目标域数据是没有标签的,所以取而代之使用源域的数据,如果Ds和Dt分布相同,可以直接使用

否则,就不能简单的使用Ds,而是需要通过转化,对于每一个样本增加一个权值

此时需要计算

因为直推式迁移学习任务相同的假设,Ps(y|x)=Pt(y|x),可得出

接下来只要计算就可以解决直推式迁移学习问题。

基于特征表示的迁移:大多数特征表示迁移方法都基于非监督学习。SCL算法,使用目标域的无标签数据提取一些相关特征从而减小两个域之间的差异。SCL算法第一步在两个域的无标签数据上定义一个pivot特征集合(包含m个pivot特征),然后把一个pivot特征看作一个标签

最终通过学习得到,第三步将W矩阵做奇异值分解从而形成增广特征。

无监督迁移学习

基于特征表示的迁移:无监督迁移学习的研究工作较少,在无监督迁移问题上通常通过自我聚类以及TDA(Transferred Discriminative Analysis)算法来聚类和降维。

自我聚类的目标是基于源域无标签数据的帮助,来对目标域无标签数据聚类,通过学习跨域的共同的特征空间,帮助目标域的聚类,目标函数如下:

其中Z是共享的特征空间,I计算两个量之间的互信息,最终要使得聚类过后损失的互信息最小。

  • 多源迁移学习

多源迁移学习是指迁移学习过程中,源域的个数不止一个,通过适量的增加源域的个数可以有效避免负迁移现象的发生。目前多源迁移学习的成熟算法可分为两类:基学习器加权法,特征表示法。图1.14为多源迁移学习示意图。

  • 基于实例的多源迁移学习

  • 基于特征的多源迁移学习

  • 研究学者

  • 未来的发展趋势

第一,针对领域相似性、共同性的度量,目前还没有深入的研究成果,未来还需要确定更加准确的度量方法。第二,在算法研究方面,迁移学习的应用范围很广。迁移学习多用于分类算法方面,其他方面的应用算法有待进一步研究。比如情感分类、强化学习、排序学习、度量学习、人工智能规划等。第三,关于可迁移学习条件,获取实现正迁移的本质属性还没有完全摸透,如何避免负迁移,实现迁移的有效性也是方向之一。

  • 技术难点

负迁移是一个重要的技术难点。负迁移表示目标域训练中源域数据的使用不仅没有提升模型能力,反而降低了识别率的现象。尽管实际当中如何避免负迁移现象是很重要的问题,但是在这个问题上的研究依然很少,经验表明如果两个任务太不相似,那么鲁莽的强制迁移会损害性能。目前已有一些对任务和任务之间聚类的探索,旨在对如何自动避免负迁移提供指导。

另外在非简单分类或者回归的问题上,如何更好地优化迁移算法,以达到适合任务的最佳效果,也是一个难点。在不同的应用背景下,迁移学习是否适合以及需要做怎样的改进都是值得去考虑的。

迁移学习---迁移学习基础概念、分类相关推荐

  1. Docker:学习笔记(1)——基础概念

    Docker:学习笔记(1)--基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...

  2. 关于深度学习的一些基础概念的简单梳理

    目录 独立同分布independent and identically distributed (i.i.d.) BN(Batch Normalization)批规范化 正则化 损失函数 过拟合现象 ...

  3. 从零开始学习SEO的基础概念

    SEO的意思是搜索引擎优化,它一般由两部分组成:站内优化和站外优化.站内优化主要是指通过网站技术.网站内容结构.域名.服务器和代码等操作,促使用户的网站能够在百度搜索引擎当中获得更好的排名:而站外优化 ...

  4. 云计算HCIA学习笔记-云计算基础概念

    第1章 云计算基础概念 1.1 云计算课程安排说明 (IA-虚拟化-FC / IP-Linux OpenStack 桌面云/IE-备份容灾迁移) 1.2 为什么云计算IA讲虚拟化? 提前告知学员,为什 ...

  5. Nebula Graph学习篇1_基础概念、初步使用、整合SpringBoot使用

    目录 一.基础概念 图数据库的概念 适用场景 数据模型 路径 点的VID 架构 二.初步使用 Windows安装Nebula-Graph服务 Nebula Console 连接 Nebula-Grap ...

  6. 操作系统原理学习笔记(基础概念与进程)

    学习视频 王道的操作系统原理,我在网上搜了一下,没有那个视频像湖科大那种推荐的人那么多,感觉这个还可以,就看这个了. 随看随记 进程运行前需要将需要执行的程序放置到内存中,内存再到CPU中执行程序. ...

  7. 邹伟博士出书啦!——《强化学习》从基础概念、核心原理到应用案例(文末赠书)...

    强化学习日渐流行,作为当今社会最热门的研究课题之一,其关注度正与日俱增.强化学习是机器学习的一个分支,通过与环境的交互进行学习,目前广泛应用于游戏领域,如ATARI游戏.西洋双陆棋.AlphaZero ...

  8. 强化学习中的基础概念和术语——spinning up文档翻译

    Key Concepts and Terminology 以下内容翻译自open ai 的spinning up文档,同时加入了一些自己的理解.原始内容来自spinningup 文章目录 Key Co ...

  9. 遗传算法(Genetic Algorithm)之deap学习笔记(一): 基础概念

    遗传算法是通过计算机模拟生物学中的染色体用于解决最优化的一种搜索算法. 使用遗传算法要考虑的因素: 个体表征(Individual representation) 评估和适应度分配(Evaluatio ...

  10. Kubernetes 学习2 k8s基础概念

    一.架构描述 1.基本架构 2.pod ,有两类 a.自主式pod 自我管理的,创建之后,任然是需要提交给API Server,API Server接受之后然后由调度器调度到指定的 node节点,由n ...

最新文章

  1. typescript调用javascript URI.js
  2. jquery实现点击页面其他地方隐藏指定元素
  3. mxnet中ndarray*ndarray用来作为掩码进行与运算的用法
  4. 【阿里云大学课程】前端必知——HTML5新特性完整视频教程(音频、视频、画布、web存储、动画……)...
  5. XML Schema介绍之namespace
  6. obs听到了自己的回音_小说:她跟着婆婆一路走,自己却碰上鬼遮眼,而这次救她的还是他...
  7. 应用传送网络(ADN):率先架起“东数西算”的“高速公路”
  8. 【华为云技术分享】如何让敏捷回顾会议更有效果,这样做就对了
  9. PyQt5学习--基本窗口控件--加载文件-QFileDialog
  10. 流媒体服务器搭建详解
  11. 流程图软件Microsoft Visio
  12. vmpalyer虚拟机的使用教程,小白也能看懂
  13. QQ突遭大规模盗号!自动给好友群发不雅照,官方回应来了!
  14. IOS之 UITableview的简单使用
  15. 满减活动基础算法-java-类似淘宝满200减30
  16. 批量提取PDF和图片发票信息 2.2
  17. idea run with coverage异常
  18. Reynolds平均方程和脉动方程推导
  19. MySQL Day01
  20. 【NOIP模拟】密码

热门文章

  1. python ccf题解 201409-1 相邻数对
  2. pta--输入一个正整数n,再输入n个整数,输出其中的偶数。要求相邻数字中间用一个空格分开,行末不得有多余空格
  3. cmake(13):构建时设置预处理宏定义以及add_compile_definitions命令详解
  4. Affine-Transformation Parameters Regression for Face Alignment
  5. win7怎么查看计算机用户名,Win7怎么查看自己电脑ip地址?
  6. spring tx:advice 和 aop:config 配置事务 1
  7. 洛谷P2678 [NOIP2015 提高组] 跳石头
  8. 雷电9模拟器安装抓包工具whistle证书
  9. Jetpack 架构组件:LiveData
  10. 学习Matlab的第一个程序——用二分法求根