原文地址:

https://blog.csdn.net/qq_33414271/article/details/78756366

土豆洋芋山药蛋

--------------------------------------------------------------------------------------------------------

目录:
一、什么是迁移学习?
二、为什么要迁移学习?
三、具体怎么做?
3.1目标数据和原始数据都有标签
3.1.1模型Fine-tune
3.1.2模型Multitask Learning
3.2原始数据有标签,目标数据没有标签
3.2.1域对抗 Domain-adversarial training
3.2.2零样本学习 Zero-shot Learning
四、总结一下

一、什么是迁移学习?

迁移学习将一个场景中学到的知识迁移到另一个场景中

达叔也说将来迁移学习也会向现在的机器学习一样的火

例如将猫狗分类的学习模型迁移到其它相似的任务上面,用来分辨老鹰和布谷鸟(因为都是拍摄的真实图片,所以属于相同的域,抽取特征的方法相同),或者是分别卡通图像(卡通图像和真实图片属于不同的域,迁移时要消除域之间的差异)

二、为什么要迁移学习?
使用深度学习技术解决问题的过程中,最常见的障碍在于:模型有大量的参数需要训练,因此需要海量的训练数据作支撑
在面对某一领域的具体问题时,通常可能无法得到构建模型所需的规模的数据
借助迁移学习,在一个模型训练任务中针对某种类型数据获得的关系也可以轻松地应用于同一领域的不同问题

三、具体怎么做?

具体有如下方法:

由于在最后一列的两种情况中,截止写博客的时间还应用的不广,所以就先介绍第一列的两种情况。

3.1目标数据和原始数据都有标签

3.1.1模型Fine-tune

任务现状:
1. 原始数据和目标数据都有标签
2. 目标数据很少

例子:(有监督学习)电商小品类商品识别
源数据:Imagenet多种物体图片
目标数据:电商小品类商品图片

基本思想:
1.用原始Imagenet训练一个效果比较好的模型
2.用训练好的模型在自己的数据集上进行调优(重点:微微调整,防止过拟合)

模型Fine-tune实现方法:
方法1:保守训练 Conservative Training
方法2:层迁移 Layer Transfer

方法1:保守训练 Conservative Training

保守训练的做法: 
先训练好一个Model,得到参数和是某类图片的概率向量,接着有两种不同角度来训练新的数据(注意:重点是微微调整,防止过拟合):

    • 保证原模型参数变化不大

    • 让输出结果的概率向量很接近

方法2:层迁移 Layer Transfer

层迁移做法: 
规定某些层的参数固定(learning rate设置为0或者很小),不允许抖动。 
防止无法无天的变动

问题:应该拷贝哪些层的参数呢?

  1. 语音识别问题一般是最后的一些层 
  2. 图像的通常是开始的一些层

3.1.2模型Multi-task Learning

在原来任务和目的任务的效果都不会差组合网络,公用某些层 
基本思想:将不同的任务数据线放在一起共同提取出共性,然后分开训练,已解决具体的问题(捕捉共性以提升两个任务的效果)

相比较而言,上图左边方式的比较常用

典型应用:不同语种的识别问题上,提取人类语言特性,然后再去识别不同的语言

3.2原始数据有标签,目标数据没有标签

3.2.1域对抗 Domain-adversarial training

如下图任务:识别彩色的识别手写体 
MNIST中,数据有标签 
MNIST-M中,不使用数据标签

思想:
两类不同Domain的图像目标:将Domain消除掉
实际上识别过程可以分为两部分:1.抽取特征(如得到一个4096维的向量),2.分类(到底是1,2,3···)

那么我们就可以通过feature区分,如果用feature区分不出来是来自哪个Domain的(同时还要保证能分出来1,2,3……),就说明说明成功了

我们需要设置一个警察,时刻监督是否真的区分不出来是哪个Domain图片

注意:红色区域表示负责监督的警察,警察要把自己的loss降低,警察的loss越低说明越容易区分,所以要做一个反向的变换,我越不让你能区分是哪一个,如此反复警察直至分不清(对抗),这样就得到了通用的特征。

3.2.2零样本学习 Zero-shot Learning

任务描述: 
有了一个能区分猫和狗的模型,但此时来了一个之前从未见过的草泥马,应该怎么区分呢?

解决思路: 
不识别动物本身,只识别动物的属性,将动物的属性放在一个大的数据库里面,有了新的样本,直接对比数据库中的属性来区分是哪种动物

在语音识别领域这种思路就像是提取出语言的属性,所有语言在某些属性上都很相似,就像是世界通用语言一样,但不同语言又有独特的属性

四、总结一下
迁移学习就是将已得到的结果迁移到那些难以解决的问题上去

而问题难以解决的原因大概有两个:1.数据不够,2.无法区分
对于问题1可以将原有的Model稍微改一下拿过去用或者共同训练
对于问题2可以和原问题结合,消除数据间差异(不同域之间的迁移)或划分属性(直接拆分后判断属性)来将原问题的结果给现问题参考借鉴

--------------------------------------------------------------------------------------------------------

【转载】 迁移学习简介(tranfer learning)的更多相关文章

  1. 迁移学习(Transfer Learning)(转载)

    原文地址:http://blog.csdn.net/miscclp/article/details/6339456 在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型 ...

  2. 迁移学习( Transfer Learning )

    在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型:然后利用这个学习到的模型来对测试文档进行分类与预测.然而,我们看到机器学习算法在当前的Web挖掘研究中存在着一个关 ...

  3. 迁移学习(Transfer Learning)

    原文地址:http://blog.csdn.net/miscclp/article/details/6339456 在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型 ...

  4. Domain adaptation:连接机器学习(Machine Learning)与迁移学习(Transfer Learning)

    domain adaptation(域适配)是一个连接机器学习(machine learning)与迁移学习(transfer learning)的新领域.这一问题的提出在于从原始问题(对应一个 so ...

  5. 【47】迁移学习(Transfer Learning)

    迁移学习(Transfer Learning) 如果你要做一个计算机视觉的应用,相比于从头训练权重,或者说从随机初始化权重开始,如果你下载别人已经训练好网络结构的权重,你通常能够进展的相当快,用这个作 ...

  6. 【迁移学习】2010-A Survey on Transfer Learning

    资源:http://www.cse.ust.hk/TL/ 简介: 一个例子: 关于照片的情感分析. 源:比如你之前已经搜集了大量N种类型物品的图片进行了大量的人工标记(label),耗费了巨大的人力物 ...

  7. AI小白必读:深度学习、迁移学习、强化学习别再傻傻分不清

    摘要:诸多关于人工智能的流行词汇萦绕在我们耳边,比如深度学习 (Deep Learning).强化学习 (Reinforcement Learning).迁移学习 (Transfer Learning ...

  8. 【转载】 迁移学习(Transfer learning),多任务学习(Multitask learning)和端到端学习(End-to-end deep learning)

    --------------------- 作者:bestrivern 来源:CSDN 原文:https://blog.csdn.net/bestrivern/article/details/8700 ...

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

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

随机推荐

  1. 开源框架---tensorflow c++ API中./configure步骤细节

    u@u160406:~/tf1.13/tensorflow$ git checkout r1.13 分支 r1.13 设置为跟踪来自 origin 的远程分支 r1.13.切换到一个新分支 'r1.1 ...

  2. JVM系列一:虚拟机内存区域

    虚拟机栈 1.虚拟机栈维护一个线程中所有方法的栈帧,每个栈帧中保存着这个方法中用到的局部变量表,操作数栈,常量引用 2.可以用-Xss来设置每个线程中虚拟机栈的大小,在jdk1.4之前默认虚拟机栈大小 ...

  3. [cf920E][set+dfs]

    https://codeforc.es/contest/920/problem/E E. Connected Components? time limit per test 2 seconds mem ...

  4. [React + GraphQL] Use useLazyQuery to manually execute a query with Apollo React Hooks

    When using useQuery from Apollo React Hooks, the request will be sent automatically after the compon ...

  5. [GraphQL] Query Lists of Multiple Types using a Union in GraphQL

    Unions are used when we want a GraphQL field or list to handle multiple types of data. With a Union ...

  6. Windows 创建Raid

    Windows 常见raid有0.1和5,以下操作在虚拟机下模拟,学会这招在自己电脑做个raid也未尝不可啊~ 一.RAID 0 创建: 添加两块硬盘,联机并初始化(2T以下选MBR,以上选GPT) ...

  7. url的主要功能是什么

    URL是Uniform Resource Loctor的缩写 URL作用:通过URL可以到达任何一个地方寻找需要的东西,比如文件.数据库.图像.新闻组等等,可以这样说,URL是Internet上的地址 ...

  8. CSS绝对定位详解

    设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块.直线电机生产厂家 元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样.元素 ...

  9. 利用webuploader实现超大文件分片上传、断点续传

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  10. pyzabbix

    pyzabbix