一文了解迁移学习经典算法
来源 | linolzhang的CSDN博客
作者 | linolzhang
▌一. 了解迁移学习
迁移学习(Transfer Learning)目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。
> The ability of a system to recognize and apply knowledge and skills learned in previous tasks to novel tasks。
入门推荐一篇公认的比较好的 【Survey】: A Survey on Transfer Learning,Sinno JialinPan, Qiang Yang,IEEE Trans
http://www.cse.ust.hk/faculty/qyang/Docs/2009/tkde_transfer_learning.pdf
另外,戴文渊的硕士学位论文也可以看一下:基于实例和特征的迁移学习算法研究
https://download.csdn.net/download/linolzhang/9872535
Survey 作者归纳了 Transfer Learning 相关的知识域,有必要了解一下这些名词:
● Learning学习 - learning to learn
● 终身学习 - life-long learning
● 知识转移 - knowledge transfer
● 归纳迁移 - inductive transfer
● 多任务学习 - multi-task learning
● 知识的巩固 - knowledge consolidation
● 上下文相关学习 - context sensitive learning
● 基于知识的归纳偏差 - knowledge-based inductive bias
● 元学习 - meta learning
● 增量学习 - and incremental/cumulative learning
另外,进展及 Open Source Toolkit 可以参考:
http://www.cse.ust.hk/TL/index.html
▌二. 迁移学习分类
迁移学习(Transfer Learning)根据 领域 和 任务的相似性,可以这样划分:
我们根据 源Domain和目前Domain 之间的关系,源Task 和 目标Task之间的关系,以及任务方法更详细的整理为下表:
实际上,归纳式迁移学习 是应用最广泛的一种方法,从这点上看,迁移学习更适合 有标签的应用域。
根据技术方法,我们将迁移学习的方法划分为:
迁移学习方法虽然在学术有很多研究工作,实际上在应用领域并不算成熟,这本身就是一个很大的命题,关于迁移学习的条件 和 本质也并未形成一套正统的体系来引领研究方向,更多的也是在实验摸索。
迁移学习 目前面临如下几个问题:
1. 哪种情况适合做迁移学习? - What
这里先给个自己的理解:分类和回归问题是比较适合做迁移学习的场景,有标签的源数据是最好的辅助。
2. 该选择哪种方法? - Which
简单而行之有效的方法是首选,领域在快速发展,也不必拘泥算法本身,改善结果才是硬道理。
3. 如何避免负迁移? - How
迁移学习的目标是改善目标域的 Task效果,这里面 负迁移(Negative Transfer)是很多研究者面临的一个问题,如何得到行之有效的改进,避免负迁移是需要大家去评估和权衡的。
▌三. 经典算法 TrAdaBoost
TrAdaBoost 算法是基于 样本迁移的 开山之作,由 戴文渊 提出,有着足够的影响力放在第一位来进行讲解。
论文下载:Boosting for Transfer Learning
http://home.cse.ust.hk/~qyang/Docs/2007/tradaboost.pdf
算法的基本思想是 从源 Domain 数据中筛选有效数据,过滤掉与目标 Domain 不match的数据,通过 Boosting方法建立一种权重调整机制,增加有效数据权重,降低无效数据权重,下图是 TrAdaBoost 算法的示意图(截图来自于 庄福振 - 迁移学习研究进展):
TrAdaBoost 算法比较简单,用一句话概括就是 从过期数据里面 找出和目标数据最接近的样本数据。
来看 TrAdaBoost 的算法步骤:
这里需要说明的一点就是 权重的更新方式,对于辅助样本来讲,预测值和标签越接近,权重越大;而对于目标数据则是相反,预测值和标签差异越大,权重越大。这种策略狠容易理解,我们想找到辅助样本中 和 目标数据分布最接近的样本,同时放大目标样本Loss的影响,那么理想的结果就是:
目标样本预测值与标签尽量匹配(不放过一个没匹配好的数据),辅助样本在前面的基础上筛选出最 match(权重大的) 的部分。
作者在后面给出了理论证明,这里有两个公式(来证明算法收敛):
因篇幅问题,这里就不再展开了(和作者说的一样),有兴趣可以参考原Paper,看下实验结果:
实验发现,当 同分布数据(目标数据)占比当低于0.1时,算法效果明显,当比例超过 0.1时,TrBoost 退化为 SVM 的效果。
这又是一个显而易见的结论,我们认为大于0.1时,仅仅依靠 目前数据就足够完成样本训练,这种情况下,辅助样本的贡献可以忽略。
另外,当 目标数据 和 辅助数据 差别比较大时,该方法是不 Work的,印证了最初的假设,这里不再展开证明。
最后,给出网友提供的C代码:【下载地址】
https://download.csdn.net/download/linolzhang/9880438
▌四. 多任务学习
多任务学习(Multi-Task Learning, MTL)是一种同时学习多个任务的机器学习方法,该方法由来已久,和深度学习没什么关系。
如果非要把它 和深度学习加上一个 link,我们可以这样来表示:
input1 -> Hidden1-> H1-> Out1 input1 -> Out1
input2 -> Hidden2-> H2-> Out2 ==> input2 -> Hidden123 -> H123 -> Out2
input3 -> Hidden3-> H3-> Out3 input3 -> Out3
也比较好理解,相当于把多个 Task网络进行合并,同时训练多个任务,这种情况并不鲜见,比如以下2个方向:
1)目标检测 - 复合多任务
目标检测是 分类问题+回归问题的组合,这是一个典型的 Multi-Task,比如:
Detection=Classification+Location
Mask RCNN = Classification+Location+Segmentation
检测问题前面描述的比较多了,这里就不再贴图了。
2)特征提取
多任务特征提取,多个输出,这一类问题代表就是 数据结构化,特征识别。
下图是香港中文大学汤晓鸥组发表的TCDCN(Facial Landmark Detection by Deep Multi-task Learning),很多讲 Multi-Task的软文都拿出来说,我们也借用一下。
在这里 Multi-Task 被同时用作 人脸关键点定位、姿态估计和属性预测(比如性别、年龄、人种、微笑?戴眼镜?)
多任务学习适用于这样的情况:
1)多个任务之间存在关联,比如行人和车辆检测,对于深度网络也可以理解为有部分共同的网络结构;
2)每个独立任务的训练数据比较少,单独训练无法有效收敛;
3)多个任务之间存在相关性信息,单独训练时无法有效挖掘;
可以看一下这篇 Tutorial:
www.public.asu.edu/~jye02/Software/MALSAR/MTL-SDM12.pdf
关于多任务学习的应用,比如分类任务下的二级分类、人脸识别等,大家可以更进一步了解。
原文地址:
https://blog.csdn.net/linolzhang/article/details/73358219
——【完】——
在线公开课 知识图谱专场
◆
精彩继续
◆
时间:8月9日 20:00-21:00
添加微信csdnai,备注:公开课,加入课程交流群
参加公开课,向讲师提问,即有机会获得定制T恤或者技术书籍
一文了解迁移学习经典算法相关推荐
- 强化学习经典算法笔记(十九):无监督策略学习算法Diversity Is All You Need
强化学习经典算法笔记19:无监督策略学习算法Diversity Is All You Need DIAYN核心要点 模型定义 目标函数的构造 DIAYN算法细节 目标函数的优化 SAC的训练 判别器的 ...
- 强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C(下)
强化学习经典算法笔记(十二):近端策略优化算法(PPO)实现,基于A2C 本篇实现一个基于A2C框架的PPO算法,应用于连续动作空间任务. import torch import torch.nn a ...
- 强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现
强化学习经典算法笔记(十四):双延迟深度确定性策略梯度算法TD3的PyTorch实现 TD3算法简介 TD3是Twin Delayed Deep Deterministic policy gradie ...
- CV好文推荐+迁移学习经验分享
前几日,52CV分享了最近一本新出的书<深度学习500问>中迁移学习相关的内容:有故事.有实践,谈一谈深度迁移学习方法的基本思路,并举办了以"论文推荐+经验分享"赠送这 ...
- 迁移学习---TrAdaBoost算法介绍
from:https://www.jianshu.com/p/8ed0703db2c7 作者:caokai1073 链接:https://www.jianshu.com/p/8ed0703db2c7 ...
- python闭环最短路径_深度学习经典算法 | 蚁群算法解析
蚁群算法基本思想 蚁群算法的基本原理来源于自然界中蚂蚁觅食的最短路径问题.根据昆虫学家的观察,发现自然界的蚂蚁虽然视觉不发达,但它可以在没有任何提示的情况下找到从食物源到巢穴的最短路径,并且能在环境发 ...
- 深度学习经典算法 | 蚁群算法解析
蚁群算法基本思想 蚁群算法的基本原理来源于自然界中蚂蚁觅食的最短路径问题.根据昆虫学家的观察,发现自然界的蚂蚁虽然视觉不发达,但它可以在没有任何提示的情况下找到从食物源到巢穴的最短路径,并且能在环境发 ...
- 深度学习经典算法 | 遗传算法详解
遗传算法生物学基础 在一定的时间内,有一群兔子,其中一些比另外一些兔子跑得快,而且更聪明,这些兔子被狐狸吃掉的可能性比较小,因此它们中的多数就存活下来并繁殖更多的兔子.当然,一些跑得慢而愚蠢的兔子也会 ...
- 回文数系列题目(经典算法)
回文数 时间限制:1000 ms | 内存限制:65535 KB 难度:0 描述 请寻找并输出1至1000000之间的数m,它满足m.m^2和m^3均为回文数.回文数大家都知道吧,就是各位数字左右 ...
最新文章
- oracle数据库某一年的数据总量_Liunx静默安装Oracle数据库
- php如何和c进行数据交换,PHP与 后台c交换数据 | 学步园
- java gzip rest_RestTemplate与Gzip压缩
- osql sql2012_您可能不知道SQL Server实用程序-SQLdiag,osql和SqlLocalDB
- 通俗版 TCP/UDP三次握手 四次握手
- rutime 理解
- SharePoint2010 获取网站集SPSite,SPWeb对象的4种方法
- 数字化项目建设管理难点分析与对策
- 均值cvar模型matlab代码,VAR和cvar模型的matlab代码
- Spring核心内容
- PostgreSQL 10.1 手册
- zTree树形中的搜索定位
- 关于惠普打印机可以打印但是无法扫描的问题
- 电脑小白须知!N卡和A卡有什么区别?A卡和N卡的区别,一个动图秒懂!
- 经典网页设计:20个优秀的电子商务网站设计案例
- 三级等保 MySQL8.0.24审计日志功能开启
- 恒相电子画册项目使用unxt框架打正式版 使用nginx发布项目失败解决方案
- sshd:root@notty: linux 被暴力登录处理
- 腾讯地图标注_在腾讯地图上标注店铺,只需要简单几步就搞定
- [翻译]估计硬件规模:为什么我们没有一个明确的答案?