迁移学习

迁移学习是一种机器学习的方法,指的是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。

背景

深度学习中在计算机视觉任务和自然语言处理任务中将预训练的模型作为新模型的起点是一种常用的方法,通常这些预训练的模型在开发神经网络的时候已经消耗了巨大的时间资源和计算资源,迁移学习可以将已习得的强大技能迁移到相关的的问题上。

方法

开发模型的方法

  1. 选择源任务。你必须选择一个具有丰富数据的相关的预测建模问题,原任务和目标任务的输入数据、输出数据以及从输入数据和输出数据之间的映射中学到的概念之间有某种关系。
  2. 开发源模型。然后,你必须为第一个任务开发一个精巧的模型。这个模型一定要比普通的模型更好,以保证一些特征学习可以被执行。
  3. 重用模型。然后,适用于源任务的模型可以被作为目标任务的学习起点。这可能将会涉及到全部或者部分使用第一个模型,这依赖于所用的建模技术。
  4. 调整模型。模型可以在目标数据集中的输入-输出对上选择性地进行微调,以让它适应目标任务。

预训练模型方法

  1. 选择源模型。一个预训练的源模型是从可用模型中挑选出来的。很多研究机构都发布了基于超大数据集的模型,这些都可以作为源模型的备选者。

  2. 重用模型。选择的预训练模型可以作为用于第二个任务的模型的学习起点。这可能涉及到全部或者部分使用与训练模型,取决于所用的模型训练技术。

  3. 调整模型。模型可以在目标数据集中的输入-输出对上选择性地进行微调,以让它适应目标任务。

    第二种类型的迁移学习在深度学习领域比较常用。

迁移基本步骤

  1. 数据的准备
  2. 选择数据增广的方式
  3. 选择合适的模型
  4. 更换最后一层全连接
  5. 冻结层,开始训练
  6. 选择预测结果最好的模型保存

迁移学习的几种研究方法

基于实例的迁移

基于实例的迁移学习研究的是,如何从源领域中挑选出,对目标领域的训练有用的实例,比如对源领域的有标记数据实例进行有效的权重分配,让源域实例分布接近目标域的实例分布,从而在目标领域中建立一个分类精度较高的、可靠地学习模型。

基于特征的迁移

基于特征选择的迁移学习算法,关注的是如何找出源领域与目标领域之间共同的特征表示,然后利用这些特征进行知识迁移。

基于共享参数的迁移

基于共享参数的迁移研究的是如何找到源数据和目标数据的空间模型之间的共同参数或者先验分布,从而可以通过进一步处理,达到知识迁移的目的,假设前提是,学习任务中的的每个相关模型会共享一些相同的参数或者先验分布。

Pre-training+Fine-tuning

深度学习需要大量的高质量标注数据,Pre-training + fine-tuning 是现在深度学习中一个非常流行的trick,尤其是以图像领域为代表,很多时候会选择预训练的ImageNet对模型进行初始化。

DANN (Domain-Adversarial Neural Network)


图中所展示的即为DANN的结构图,框架由feature extractorlabel predictordomain classifier三个部分组成,并且在feature extractordomain classifier之间有一个gradient reversal layer;其中domain classifier只在训练过程中发挥作用

  • DANN将领域适配和特征学习整合到一个训练过程中,将领域适配嵌入在特征表示的学习过程中;所以模型最后的分类决策是基于既有区分力又对领域变换具有不变性的特征。
  • 优化特征映射参数的目的是为了最小化label classifier的损失函数,最大化domain classifier的损失函数,前者是为了提取出具有区分能力的特征,后者是为了提取出具有领域不变性的特征,最终优化得到的特征兼具两种性质

优势

迁移学习相对于其他机器学习方法,有以下一些优势:

  1. 迁移学习源模型的初始性能更高
  2. 迁移学习源模型提升的速率要更高
  3. 迁移学习模型的收敛性要更好
  4. 即使从不是特别相似的任务中进行迁移也比使用随机filters要好

参考文献

  • How transferable are features in deep neural networks(NIPS2014 Bengio et al.)
  • Learning and Transferring Mid-Level Image Representations using Convolutional Neural Networks(CVPR2014 Oquab.et al.)
  • Domain Adaptation for Large-Scale Sentiment Classification: A Deep Learning Approach(ICML2011 Glorot. Bengio.et al.)
  • Marginalized denoising autoencoders for domain adaptation (ICML2012 Chen et al.)
  • Domain-Adversarial Training of Neural Networks(JMLR2016 Ganin.et al.)

迁移学习(Transfer Learning)概述相关推荐

  1. 迁移学习(Transfer Learning)概述及代码实现(full version)

    基于PaddlePaddle的李宏毅机器学习--迁移学习 大噶好,我是黄波波.希望能和大家共进步,错误之处恳请指出! 百度AI Studio个人主页, 我在AI Studio上获得白银等级,点亮2个徽 ...

  2. 迁移学习(Transfer Learning)概述及代码实现

    基于PaddlePaddle的李宏毅机器学习--迁移学习 大噶好,我是黄波波,希望能和大家共进步,错误之处恳请指出! 百度AI Studio个人主页, 我在AI Studio上获得白银等级,点亮2个徽 ...

  3. 深度学习不得不会的迁移学习Transfer Learning

    http://blog.itpub.net/29829936/viewspace-2641919/ 2019-04-18 10:04:53 目录 一.概述 二.什么是迁移学习? 2.1 模型的训练与预 ...

  4. PyTorch 迁移学习 (Transfer Learning) 代码详解

    PyTorch 迁移学习 代码详解 概述 为什么使用迁移学习 更好的结果 节省时间 加载模型 ResNet152 冻层实现 模型初始化 获取需更新参数 训练模型 获取数据 完整代码 概述 迁移学习 ( ...

  5. 迁移学习(Transfer learning)、重用预训练图层、预训练模型库

    迁移学习(Transfer learning).重用预训练图层.预训练模型库 目录 迁移学习(Transfer learning).重用预训练图层.预训练模型库 迁移学

  6. 迁移学习(transfer learning)与finetune的关系?【finetune只是transfer learning的一种手段】

    目录 1.迁移学习简介 2.为什么要迁移学习? 3.迁移学习的几种方式 1)Transfer Learning: 2)Extract Feature Vector: 3)Fine-tune: 4.三种 ...

  7. 迁移学习(Transfer Learning)的背景、历史

    迁移学习(Transfer Learning)的背景.历史 迁移学习的背景.历史及学习 1.迁移学习提出背景 在机器学习.深度学习和数据挖掘的大多数任务中,我们都会假设training和inferen ...

  8. 【深度学习系列】迁移学习Transfer Learning

    在前面的文章中,我们通常是拿到一个任务,譬如图像分类.识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性.时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型, ...

  9. 迁移学习 Transfer Learning—通俗易懂地介绍(常见网络模型pytorch实现)

    前言 你会发现聪明人都喜欢"偷懒", 因为这样的偷懒能帮我们节省大量的时间, 提高效率. 还有一种偷懒是 "站在巨人的肩膀上". 不仅能看得更远, 还能看到更多 ...

  10. 【深度学习】迁移学习 (Transfer Learning)

    Introduction 把别处学得的知识,迁移到新场景的能力,就是"迁移学习". 具体在实践中体现为: 将 A任务上 预训练好的模型 放在B任务上,加上少量B任务训练数据,进行微 ...

最新文章

  1. IO流 带行号的缓冲区
  2. 美国公司欲联合大电脑商阻止绿坝推广
  3. Use pgpool and pgbouncer limit global concurrent SQL Execution
  4. 苹果App Icon的问题
  5. yapi 插件_强大的开源API接口可视化管理平台——YAPI
  6. bat比较有意思的代码_腾讯开源的 Unity全系列 代码逻辑热修复方案--InjectFix
  7. python是外部还是编程_Python网络编程(绑定到外部地址)
  8. spring-quartz
  9. ABAP和Go语言的初始化操作, Kubernetes的Init Container
  10. less is more,so 只记 less
  11. OpenCV4每日一练day12:双目相机标定
  12. 编程通用知识 系统编程
  13. 基于信息熵确立权重的topsis法_基于信息熵和TOPSIS法的装备战场抢修排序决策模型...
  14. php ood,ooa ood oop编程思想_php oop思想_冒号课堂编程范式与oop思想
  15. 如何写好一份 30 K offer 的简历(建议收藏)
  16. SAP 之定义工厂(Plant)
  17. 基于Go语言GoFrame+Layui的OA办公系统
  18. 笔记本电脑运行特别慢怎么解决
  19. 你必需知道的5个开源游戏引擎
  20. HTMLCSS常用英语词汇

热门文章

  1. 实战小例子 | 经典坦克大战的python实现
  2. 古风排版(C语言实现)
  3. 数据的进制转换以及算术逻辑运算
  4. Echarts时间坐标轴刻度的改进和优化
  5. 什么是Maven依赖冲突,如何解决Maven依赖冲突
  6. Eclipse注册码
  7. 基于 Oauth 2.0 的第三方账号登录实现
  8. 广东行政职业学院一名大三女生跳楼身亡
  9. 最经典的电脑病毒,适合练手,大家一定要增强安全防范意识
  10. php7.2.10+mysql+Ptcms源码调试