热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习14迁移学习transferlearning

1总览迁移学习的目标,是利用一些不相关的数据,来提升目标任务。不相关主要包括task不相关。比如一个为猫狗分类器,一个为老虎狮子分类器data不相关。比如都为猫狗分类器,但一个来自

1 总览

迁移学习的目标,是利用一些不相关的数据,来提升目标任务。不相关主要包括

  1. task不相关。比如一个为猫狗分类器,一个为老虎狮子分类器
  2. data不相关。比如都为猫狗分类器,但一个来自真实的猫和狗照片,另一个为卡通的猫和狗

迁移学习中包括两部分数据

  1. source data。和目标任务不直接相关,labeled或unlabeled数据一般比较容易获取,数据量很大。可以利用一些公开数据集,比如ImageNet。又比如在机器翻译任务中,中译英数据量很大,可以作为source data
  2. target data。目标任务直接相关的数据,labeled或者unlabeled数据一般比较少。比如机器翻译任务中,中文翻译葡萄牙语,相对来说要少一些。

根据source data和target data,是否包含labeled data,我们又可以分为四类

机器学习14 -- 迁移学习 transfer learning

下面就一一介绍这四类case,和他们的处理方法

 

2 source和target都有标签

此时通常情况是,二者都有标签,但source data数据量比较大,而target data数据量比较少。假如target data数据量本身就比较大,那我们直接利用target data来训练模型就好了,不需要使用source data。此时常用两种方法

  1. 在source data上pretrain,然后在target data上fine-tune
  2. source和target两个任务结合起来,做multi-task learning(MTL)

 

2.1 fine-tune

fine-tune模型微调的思想是,在source data上训练模型,然后在target data上进行微调。从而既可以从source data中学到大量知识,又可以适应target data特定任务。先用source data训练模型,然后利用这个模型参数初始化,然后在target data上继续训练下去。当target data特别少时,需要防止fine-tune 过拟合。

机器学习14 -- 迁移学习 transfer learning

layer transfer

当target data特别少时,fine-tune也有可能过拟合。此时可以使用layer transfer。

  1. 先利用source data训练一个模型
  2. 然后将模型的某些layer直接copy到target模型上。
  3. 再利用target data来训练target模型的剩余layer,之前copy过来的layer可以freeze住

此时只需要训练模型的少数几层,就没那么容易出现过拟合了。

机器学习14 -- 迁移学习 transfer learning

那么现在的问题就是,哪些layer需要被直接copy,而哪些则需要做fine-tune呢。这需要根据不同的任务来

  1. 语音识别中,一般直接copy最后几层,而fine-tune前面几层。这是因为不同人发音,由于口腔结构不同,低阶特征差别比较大,而语义和语言模型等高阶特征则相差不多。
  2. 图像任务中,一般直接copy前面几层,而fine-tune后面几层。这是因为图像中的光照、阴影等低阶特征一般差别不大,而高阶特征(比如大象的鼻子)则不同类别差别很大。

机器学习14 -- 迁移学习 transfer learning

 

2.2 multi-task learning 多任务学习

fine-tune只需要考虑模型在target data上的效果,而多任务学习则需要模型在source和target上表现都要比较好。

  1. 如果source和target输入特征比较相似,则可以共享前几层layer,后几层再在不同任务上单独处理。
  2. 如果source和target输入特征不同,则前几层layer和最后几层layer都可以使单独的,而共享中间几层layer。

机器学习14 -- 迁移学习 transfer learning

下面是机器翻译上的多任务学习的例子

机器学习14 -- 迁移学习 transfer learning

下图则证明了使用多任务学习,可以在相同数据量情况下,大大降低错误率。同时在数据量少一半的情况下,仍然可以达到单任务的效果。大大降低了模型对数据的依赖,同时提升了模型性能。

机器学习14 -- 迁移学习 transfer learning

 

3 target没有标签,但source有标签

此时可以利用领域对抗迁移,和零样本学习

3.1 Domain-adversarial Training 领域对抗训练

神经网络中的前面几层,一般是做特征抽取的。而后面几层则实现对应的任务,比如分类。我们的目标是特征抽取器对不同domain数据不敏感,将domain特有的信息去除掉,而尽量保留共性信息。

比如黑白背景的手写字识别,和彩色背景的手写字识别。二者domain差别比较大,直接用source模型来predict target数据,效果很差。主要就是受背景色不同影响。我们需要特征抽取器对背景不敏感,能真正抓住数字这个共性信息。

机器学习14 -- 迁移学习 transfer learning

那怎么做领域对抗训练呢,可以借鉴GAN的思想。如下图所示,整个网络包含三个部分

  1. 特征抽取器 feature extractor。它用来对不同domain数据提取特征
  2. 预测器 label predictor。它用来predict source data的label
  3. 领域分类器 domain classifier。它用来区分数据是来自source,还是target。

机器学习14 -- 迁移学习 transfer learning

我们的目标有两个

  1. 最大化label predict的ACC,这样保证模型在实际任务上的效果不会差
  2. 最小化domain classifier的ACC,使得模型尽量不能区分数据来自哪个domain。从而保证特征抽取器对不同domain不敏感。不提取domain私有的特征,而尽量提取不同domain的共性特征。

 

3.2 zero-shot learning 零样本学习

比如source是对猫狗进行分类,而target data中则出现了猴子。直接使用source模型显然是没法用的,因为连猴子这个label都是缺失的。此时我们可以使用zero-shot learning,不直接学习类别,而是类别的属性。比如我们可以创建一个table,属性为腿个数、有没有尾巴、有没有角,有没有毛等,而根据这些属性就可以确定类别为猫、狗、猴子。我们通过source来学习predict这些属性,然后利用属性查表来推测是哪个类别。

机器学习14 -- 迁移学习 transfer learning

 

4 source没有label,target有label

此时可以参考半监督学习了,但和半监督还是有比较大差别。半监督中的数据,其domain差别不大。我们这儿的source和target,其domain有一定的差别。可以利用source数据量大的特点,构建自监督学习任务,来学习特征表达。典型例子为NLP中的各种预训练模型。利用自监督学习,构建Auto-Encoder,在source上训练pretrain model。然后在target任务上进行fine-tune。详见

机器学习10 -- 半监督学习 Semi-supervised Learning

机器学习13 -- 无监督学习之自监督

 

5 source和target都没有label

此时主要就是聚类的范畴了,一般比较少碰到,就不说了。

 

 


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文详细说明了在JavaScript中解决alert弹出窗口文本换行问题的方法。通过给alert弹出的文本添加换行符,可以实现在弹窗中显示多行文本的效果。同时,提供了相关代码示例和注意事项,帮助读者更好地理解和应用这一解决方法。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • vb.net不用多线程如何同时运行两个过程?不用多线程?即使用多线程,也不会是“同时”执行,题主只要略懂一些计算机编译原理就能明白了。不用多线程更不可能让两个过程同步执行了。不过可 ... [详细]
  • 美DARPA利用人工智能技术识别敌国在“灰色地带”的意图
    C4ISRNET网站报道称,近日,美国国防部高级研究计划局(DARPA)启动“通过规划活动态势场景收集和监测(COMPASS)”项目,意欲利用人工智能技术打入敌人内部,在战争“灰色 ... [详细]
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
author-avatar
JRamboKing
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有