文章目录

  • Transfer Learning
    • why?(为什么要迁移学习?)
    • Overview(概述)
    • Target Data labelled & Source Data labelled
      • Model Fine-tuning(模型微调)
        • Conservative Training(保守训练)
        • Layer Transfer(层迁移)
      • Multitask Learning(多任务学习)
        • Multitask Learning
        • Progressive Neural Networks(渐进神经网络)
    • Target Data unlabelled & Source Data labelled
      • Domain-adversarial training(领域对抗训练)
      • Zero-shot Learning(零次学习)
        • Zero-shot Learning
        • Example of Zero-shot Learning
        • More about Zero-shot learning
    • Target Data labelled & Source Data unlabelled | Target Data unlabelled & Source Data unlabelled

Transfer Learning

迁移学习指的就是,假设你手上有一些跟你现在要进行的task没有直接相关的data,那你能不能用这些没有直接相关的data来帮助我们做一些什么事情。比如说:你现在做的是猫跟狗的classifer,那所谓没有什么直接相关的data是什么意思呢?没有什么直接相关其实是有很多不同的可能。比如说input distribution 是类似的(一样时动物的图片),但是你的label是无关的(domain是类似的,task是不像的)。还有另外的一个可能是:input domain是不同的,但是task是相同的(猫跟狗的分类,一个招财猫图片,一个是高非狗的图片)

why?(为什么要迁移学习?)

迁移学习问的问题是:我们能不能再有一些不想关data的情况下,然后帮助我们现在要做的task。

为什么我要考虑迁移学习这样的task呢?举例来说:

  • 语音识别:在speech recognition里面(台语的语音辨识),台语的data是很少的(但是语音的data是很好收集的,中文,英文等)。那我们能不能用其他语音的data来做台语这件事情。也就是用大语料训练后进行迁移。
  • 图像识别:或许在image recongnition里面有一些是medical images,这种medical image其实是很少的,但是image data是很不缺的。也就是普通图片识别后迁移到medical images(数量小)上。
  • 文字识别:文本分析上,普通文本分析对法律文件分析是否有帮助。

用不相干的data来做domain其他的data,来帮助现在的task,是有可能的。

我们在现实生活中,我们在不断的做迁移学习。比如说:你可能是是一名研究生,你可能想知道研究生咋样过日子,你就可以参考爆漫王里面的例子。在保漫王里面漫画家就是研究生,责编就等同于指导教授。漫画家每周画分镜去给责编看,跟责编讨论(就跟指导教授每周去汇报报告一样),画分镜就是跑实验。目标就是投稿就等于投稿期刊。

虽然我们没有一个研究生的守则,但是从爆漫王里面我们可以知道说:身为一个研究生应该要做什么样的事情。那你可能会说:拿漫画跟学术做类比,有点不伦不类的(漫画也是拿生命来做的)。

Overview(概述)

迁移学习有很多的方法,它是很多方法的集合。下面你有可能会看到我说的terminology(术语)可能跟其他的有点不一样,不同的文献用的词汇其实是不一样的,有些人说算是迁移学习,有些人说不算是迁移学习,所以这个地方比较混乱,你只需要知道那个方法是什么就好了。

我们现在有一个我们想要做的task,有一些跟这个task有关的数据叫做target data,有一些跟这个task无关的data,这个data叫做source data。这个target data有可能是有label的,也有可能是没有label的,这个source data有可能是有label的,也有可能是没有label的,所以现在我们就有四种可能,所以之后我们会分这四种来讨论。

Target Data labelled & Source Data labelled

那现在我们假设target data跟source data都同时有label的情况下,可以的做的事情是:最常见的事情就是:fine-tuning你的model

Model Fine-tuning(模型微调)

在现在的task里面,target data ( x t , y t ) (x^t,y^t) (xt,yt) 和source data都 ( x s , y s ) (x^s,y^s) (xs,ys) 是有label的,但是我们通常是假设说:现在target data的数据量是非常少的(如果target data量是很多的话,你就当做一般的machine learning 来train你的model就好了,你也不需要做什么迁移学习),source data是很多的。虽然source data跟我们现在考虑的task没有关系,但我们想知道说:在target data很少的情况下,有一大推不相关的source data到底有没有可能会有帮助?

如果你今天的target data的量很少,少到只有几个example而已,这个就叫做one-shot learning。这样的task的例子是:在语音上最典型的例子就是speaker adaption,target data是某一个人的声音,但是这个人的声音你不太有可能有太多的label data(可能对你的machine 说了三句话),但是source data有一大堆的audio data,它是来自于不同人的。你当然不可能直接去用少量的target data去train一个语音辨识系统,这样一定会坏掉的。所以你会希望说:这个有好几w小时的source data在这个task里面有什么帮助。

处理方式是非常直觉的,拿你的source data直接去train一个model,然后接下来fine tune这个model通过target data。可能会遇到的challenge:source data非常的少,所以你在target data train出一个好的model,然后在source data上做train,可能就坏掉了

Conservative Training(保守训练)

有一个技巧叫做:conservative training,你现在有大量的source data,(比如说:在语音辨识里面就是很多不同speaker的声音),那你拿来做neural network。target data是某个speaker的声音,如果你直接拿这些去train的话就坏掉了。你可以在training的时候加一些constraint(regularization),让新的model跟旧的model不要差太多。你会希望新的model的output跟旧的model的output在看同一笔data的时候越接近越好。或者说新的model跟旧的model L2-Norm差距越小越好(防止overfitting的情形)

Layer Transfer(层迁移)

另外的一个方法是layer transfer,你现在用source data train好了一个model,把这个model的某几个layer拿出来copy到新的model里面 。接下来用target data只去train没有copy的layer(可能你只保留一个layer没有copy),这样的好处就是target data只需要考虑非常少的参数,这样就可以避免overfitting的情形。当然之后你的target data够多了,那之后可能还是要fine-tune整个model。

哪些layer应该被transfer,哪些layer不应该去transfer呢?有趣的是在不同的task上面需要被transfer的layer往往是不一样的。比如说:

  • 语音辨识:我们通常是copy the last few layers(最后几层)。同样的发音方式,因为口腔结果略有差异,得到的声音是不一样的。neural network前几层做的事情是从这个声音讯号里面得知现在说话人的发音方式,根据发音方式就可以得到说的词汇。所以从这个角度来看,从发音方式到辨识结果,也就是neural network后面几层是跟语者是每一关系的,所以它是可以被copy的。不一样的是从声音讯号到发音方式这一段可能每个人都是不一样的。所以在做语音辨识的时候,常见的做法是把neural network的后几层是copy。
  • 图像识别:我们通常是copy前面几层,只train最后几层。在image的时候你会发现数说,当你source domain上learn了一network,你learn到CNN通常前几层做的就是deceide最简单的事情(比如前几层做的就是decide有么有直线,有么有简单的几何图形)。所以在image上面前几层learn的东西,它是可以被transfer到其他的task上面。而最后几层learn的东西往往是没有办法transfer到其他的东西上面去。所以在做影像处理的时候反而是会copy前面几层。

下图是一个image在layer transfer上的实验, 120多w image分成source跟target,分法是按照class来分的(500 class归为source data,500classes归为target data)。横轴的意思是:我们在做迁移学习的时候copy了几个layer(copy 0个layer,就是说完全没有做迁移学习),纵轴时候top-1 accuracy,越高越好。

机器学习-44-Transfer Learning(迁移学习)相关推荐

  1. 【翻译】 A survey of transfer learning迁移学习综述

    原文https://www.cse.ust.hk/~qyang/Docs/2009/tkde_transfer_learning.pdf 该文主要对A Survey on Transfer Learn ...

  2. 【深度学习】一文看懂 (Transfer Learning)迁移学习(pytorch实现)

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

  3. Transfer Learning 迁移学习的相关知识

    通俗讲,机器学习领域,如果从0开始学习知识,成本高,速度慢. -------- 个人技术公众号:解决方案工程师 欢迎同领域的朋友关注.相互交流. -------- 1:什么是迁移学习? 通俗讲,机器学 ...

  4. 【详解】Transfer learning迁移学习 附代码

    迁移学习的训练策略: 1.先冻结卷积层只训练全链接层,这一步需要把结果最好的那个模型保存起来. 2.加载上一步保存的那个最优模型,在这个模型的基础上,再以更小的学习率训练所有层,更新网络的所有权重参数 ...

  5. YOLO3 + Python3.6 深度学习篇(上)- Transfer Learning 迁移学习

    何为 YOLO(You Only Look Once) YOLO [点击] 充满青春暗示的另一面,更是一个强大物体检测算法的简称,其算法结合了速度与准确度,近期更推出了第三版的 model 供大家参考 ...

  6. 机器学习16 -- Lifelong Learning 终生学习

    1 什么是lifelong learning Lifelong learning终生学习,又名continuous learning,increment learning,never ending l ...

  7. 机器学习-49-RL-01-Deep Reinforcement Learning(强化学习-强化学习的基本介绍 Policy-based方法的基本介绍)

    文章目录 Deep Reinforcement Learning Reference Example: Scenario of Reinforcement Learning(强化学习的应用场景) Su ...

  8. 机器学习15 -- Meta Learning 元学习

    1 什么是meta learning 一般的机器学习任务是,通过训练数据得到一个模型,然后在测试数据上进行验证.一般来说我们仅关注模型在该任务上的表现.而meta learning则探讨解决另一个问题 ...

  9. 【机器学习】Ensemble Learning 集成学习 + Python代码实战

    文章目录 一.集成学习概述 二.Bagging模型 2.1 随机森林 2.1.1 随机森林介绍 2.2.1 随机森林优势 2.2 KNN 2.3 软投票 2.4 硬投票 2.5 Bagging模型实战 ...

最新文章

  1. 面试官问:BitMap了解么?在什么场景下用过?碰到过什么问题?
  2. MyGeneration学习笔记(1) : 使用MyGeneration生成存储过程和数据访问层代码
  3. java代码_Java:java五行代码实现Excel的快速导出
  4. freemarker模板文件中文本域(textarea)的高度自适应实现
  5. java统计_java统计当前在线数
  6. js生成[n,m]的随机数
  7. 不定高度的弹框 垂直水平居中
  8. t test table
  9. OpenCV使用VideoWriter和VideoCapture的实例(附完整代码)
  10. 腾讯专家教你如何保证应用开发安全
  11. 最全NFC芯片技术厂商介绍及应用介绍
  12. 单元测试 代码里面都绝对路径怎么处理_python基础之包,异常处理
  13. ADI收发器新品-ADRV9002特性与对比(AD9361/71/ADRV9009)
  14. 数据网络卡顿怎么处理_电信数据网络卡顿怎么办 电信iptv卡顿解决方法
  15. 什么是Linux内核?它有什么功能?
  16. 用python完成图形输出设备_使用numpy进行9宫格图像拼接 - Python
  17. 2021SC@SDUSC山东大学软件学院软件工程应用与实践--Ebiten代码分析 源码分析(四)
  18. 001 线性代数之行列式:定义、逆序数、余子式与代数余子式、n个易算行列式、范德蒙行列式
  19. 计算机语言与硬件相关,搞懂程序语言与计算机硬件的关系
  20. 2021大厂Android面试经历,吐血整理

热门文章

  1. ROC曲线和AUC值的计算
  2. <p>标签内容超出显示三个点
  3. CS:APP Lab1DataLab
  4. 想靠创业赚钱,这4个冷门生意不错,竞争不大,很多人都没听说过
  5. 顶级的18 款开源低代码开发平台
  6. 2023华为od机试真题【数字游戏】C语言
  7. Java学习笔记之Enum枚举(1)
  8. 自强创新之路 打造真正上网不花钱8500WN已面世
  9. 致小白的K210模型训练与运用
  10. 项目管理之项目群管理