广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >浅谈迁移学习
  • 826
分享到

浅谈迁移学习

2024-04-02 19:04:59 826人浏览 独家记忆
摘要

目录一、背景二、定义及分类2.1、目标2.2、主要思想2.3、迁移学习的形式定义及一种分类方式三、关键点四、基于实例的迁移五、基于特征的迁移5.1、特征选择5.2、特征映射六、基于共

一、背景

随着越来越多的机器学习应用场景的出现,而现有表现比较好的监督学习需要大量的标注数据,标注数据是一项枯燥无味且花费巨大的任务,所以迁移学习受到越来越多的关注。

传统机器学习(主要指监督学习)

  • 基于同分布假设
  • 需要大量标注数据

然而实际使用过程中不同数据集可能存在一些问题,比如

  • 数据分布差异
  • 标注数据过期:训练数据过期,也就是好不容易标定的数据要被丢弃,有些应用中数据是分布随着时间推移会有变化

如何充分利用之前标注好的数据(废物利用),同时又保证在新的任务上的模型精度?
基于这样的问题,所以就有了对于迁移学习的研究

在这里插入图片描述

二、定义及分类

Transfer Learning Definition:
Ability of a system to recognize and apply knowledge and skills learned in previous domains/tasks to novel domains/tasks.

2.1、目标

将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中。

2.2、主要思想

从相关领域中迁移标注数据或者知识结构、完成或改进目标领域或任务的学习效果。

在这里插入图片描述

人在实际生活中有很多迁移学习,比如学会骑自行车,就比较容易学摩托车,学会了C语言,在学一些其它编程语言会简单很多。那么机器是否能够像人类一样举一反三呢?

在这里插入图片描述

上图是一个商品评论情感分析的例子,图中包含两个不同的产品领域:books 图书领域和 furniture 家具领域;在图书领域,通常用“broad”、“quality fiction”等词汇来表达正面情感,而在家具领域中却由“sharp”、“light weight”等词汇来表达正面情感。可见此任务中,不同领域的不同情感词多数不发生重叠、存在领域独享词、且词汇在不同领域出现的频率显著不同,因此会导致领域间的概率分布失配问题。

2.3、迁移学习的形式定义及一种分类方式

在这里插入图片描述

迁移学习里有两个非常重要的概念

  • 域(Domain)
  • 任务(Task)

可以理解为某个时刻的某个特定领域,比如书本评论和电视剧评论可以看作是两个不同的domain

任务 就是要做的事情,比如情感分析和实体识别就是两个不同的task

三、关键点

在这里插入图片描述

1.研究可以用哪些知识在不同的领域或者任务中进行迁移学习,即不同领域之间有哪些共有知识可以迁移。

2.研究在找到了迁移对象之后,针对具体问题所采用哪种迁移学习的特定算法,即如何设计出合适的算法来提取和迁移共有知识。

3.研究什么情况下适合迁移,迁移技巧是否适合具体应用,其中涉及到负迁移的问题。

当领域间的概率分布差异很大时,上述假设通常难以成立,这会导致严重的负迁移问题。
负迁移是旧知识对新知识学习的阻碍作用,比如学习了三轮车之后对骑自行车的影响,和学习汉语拼音对学英文字母的影响
研究如何利用正迁移,避免负迁移

四、基于实例的迁移

基于实例的迁移学习研究的是,如何从源领域中挑选出,对目标领域的训练有用的实例,比如对源领域的有标记数据实例进行有效的权重分配,让源域实例分布接近目标域的实例分布,从而在目标领域中建立一个分类精度较高的、可靠地学习模型。
因为,迁移学习中源领域与目标领域的数据分布是不一致,所以源领域中所有有标记的数据实例不一定都对目标领域有用。戴文渊等人提出的TrAdaBoost算法就是典型的基于实例的迁移。

在这里插入图片描述

五、基于特征的迁移

5.1、特征选择

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

5.2、特征映射

基于特征映射的迁移学习算法,关注的是如何将源领域和目标领域的数据从原始特征空间映射到新的特征空间中去。
这样,在该空间中,源领域数据与的目标领域的数据分布相同,从而可以在新的空间中,更好地利用源领域已有的有标记数据样本进行分类训练,最终对目标领域的数据进行分类测试

在这里插入图片描述

六、基于共享参数的迁移

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

七、深度学习和迁移学习结合

在这里插入图片描述

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

下面将主要通过一些paper对深度学习中的迁移学习应用进行探讨

八、Pre-training+Fine-tuning

2014年Bengio等人在NIPS上发表论文 How transferable are features in deep neural networks,研究深度学习中各个layer特征的可迁移性(或者说通用性)

文章中进行了如下图所示的实验,有四种模型

  • Domain A上的基本模型BaseA
  • Domain B上的基本模型BaseB
  • Domain B上前n层使用BaseB的参数初始化(后续有frozen和fine-tuning两种方式)
  • Domain B上前n层使用BaseA的参数初始化(后续有frozen和fine-tuning两种方式)

在这里插入图片描述

将深度学习应用在图像处理领域中时,会观察到第一层(first-layer)中提取的features基本上是类似于Gabor滤波器(Gabor filters)和色彩斑点(color blobs)之类的。

通常情况下第一层与具体的图像数据集关系不是特别大,而网络的最后一层则是与选定的数据集及其任务目标紧密相关的;文章中将第一层feature称之为一般(general)特征,最后一层称之为特定(specific)特征

在这里插入图片描述

  • 特征迁移使得模型的泛化性能有所提升,即使目标数据集非常大的时候也是如此。
  • 随着参数被固定的层数n的增长,两个相似度小的任务之间的transferability gap的增长速度比两个相似度大的两个任务之间的transferability gap增长更快 两个数据集越不相似特征迁移的效果就越差
  • 即使从不是特别相似的任务中进行迁移也比使用随机filters(或者说随机的参数)要好
  • 使用迁移参数初始化网络能够提升泛化性能,即使目标task经过了大量的调整依然如此。

九、DANN (Domain-Adversarial Neural Network)

这篇paper将近两年流行的对抗网络思想引入到迁移学习中,从而提出了DANN

在这里插入图片描述

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

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

以上就是浅谈迁移学习的详细内容,更多关于迁移学习的资料请关注编程网其它相关文章!

--结束END--

本文标题: 浅谈迁移学习

本文链接: https://www.lsjlt.com/news/129158.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈迁移学习
    目录一、背景二、定义及分类2.1、目标2.2、主要思想2.3、迁移学习的形式定义及一种分类方式三、关键点四、基于实例的迁移五、基于特征的迁移5.1、特征选择5.2、特征映射六、基于共...
    99+
    2022-11-12
  • Java 学习方法浅谈
    Java本身是一种设计的非常简单,非常精巧的语言,所以Java背后的原理也很简单,归结起来就是两点: JVM的内存管理 理解了这一点,所有和对象相关的问题统统都能解决 JVM Class Loader 理解了这一点,所有和Java相关的配置...
    99+
    2023-06-03
  • oracle学习-数据迁移
    如果只是迁移表空间或者数据文件,可以先将表空间或者数据文件offline之后移动位置,并通过alert database rename 和 alter tablespace rename 将位置变化写入控制...
    99+
    2022-10-18
  • PyTorch迁移学习实战
    目录1. 实验环境2. 实验目的3. 相关原理4. 实验步骤4.1 数据收集4.2 数据预处理4.3 创建模型4.4 结论1. 实验环境 Jupyter NotebookPython...
    99+
    2023-01-15
    PyTorch 迁移
  • 学习数据迁移之imp
    查询数据库语言及字符集select userenv('language') from dual;select * from nls_database_parameters...
    99+
    2022-10-18
  • 学习日志-python基础01,浅谈p
    ==比较操作符:用来比较两个对象是否相等,value做为判断因素is同一性运算符:比较判断两个对象是否相同,id做为判断因素 >>> [] is [] False >>> [] == [] Tru...
    99+
    2023-01-31
    浅谈 基础 日志
  • PHP中如何进行迁移学习和模型迁移?
    随着机器学习在各个领域中的广泛应用,迁移学习和模型迁移已经成为了热门话题。在使用PHP进行机器学习时,如何进行迁移学习和模型迁移也成为了一个必须要考虑的问题。本文将介绍PHP中如何进行迁移学习和模型迁移,并提供一些实用的技巧和建议。什么是迁...
    99+
    2023-05-21
    迁移学习 PHP 模型迁移
  • C++学习笔记之浅谈异常处理
    异常处理主要是针对能通过编译但是运行是在某个特定条件下会出现异常,程序崩溃,结果出错。来进行的东西 C++处理异常的机制是由3个部分组成的,即检查(try)、抛出(throw)和捕捉...
    99+
    2022-11-12
  • 如何高效学习oracle数据库浅谈之一
    文章具体内容请移步如下链接:http://mp.weixin.qq.com/s__biz=MzIwMjU2MjI1OQ==&tempkey=sXhfnzfIdrymRA7B8csLCRQWvqPIs...
    99+
    2022-10-18
  • 深度学习Tensorflow 2.4 完成迁移学习和模型微调
    目录前言实现过程1. 获取数据2. 数据扩充与数据缩放3. 迁移学习4. 微调5. 预测前言 本文使用 cpu 的 tensorflow 2.4 完成迁移学习和模型微调,并使用训练...
    99+
    2023-01-06
    Tensorflow 迁移学习模型微调 Tensorflow 深度学习
  • 浅谈将three项目迁移至vue项目遇到的问题
    目录通过npm下载的three依赖无法正常使用导入模型的路径出现了问题3D场景渲染后没有进行销毁由于我的3D场景起初是自己为了测试搭建的,所以使用的是html + three,后来将...
    99+
    2022-11-13
  • PyTorch一小时掌握之迁移学习篇
    目录概述为什么使用迁移学习更好的结果节省时间加载模型ResNet152冻层实现模型初始化获取需更新参数训练模型获取数据完整代码概述 迁移学习 (Transfer Learning) ...
    99+
    2022-11-12
  • java web学习_浅谈request对象中get和post的差异
    阅读目录(Content)•1.get与post的区别•1.1 get方法 jsp中的代码form表单代码•1.2 action包中servlet的doGet方法中的代码•2.运行结果R...
    99+
    2023-05-31
    java request post
  • 浅谈pyhton学习中出现的各种问题(新手必看)
    目前比较杂乱无章,后续还会有一些添加补充 1、标识符 (1)标识符是区分大小写的。 (2)标示符以字母或下划线开头,可包括字母,下划线和数字。 (3)以下划线开头的标识符是有特殊意义的。 2、参数前加星号(...
    99+
    2022-06-04
    浅谈 必看 新手
  • Python学习 :深浅拷贝
    深浅拷贝   一、浅拷贝 只拷贝第一层数据(不可变的数据类型),并创建新的内存空间进行储蓄,例如:字符串、整型、布尔 除了字符串以及整型,复杂的数据类型都使用一个共享的内存空间,例如:列表 列表使用的是同一个内存地址,指向原拷贝的值,即使...
    99+
    2023-01-30
    深浅 Python
  • 由浅到深学习JDBC一
    JDBC:虽然由于快节奏的开发,编程速度的追求,越爱越多的MVC框架出现,比如持久层的hibernate,mybatis等等,他们对Dao层的支持都很强大,既快速,又简便。但是他们的底层同样是使用了JDBC...
    99+
    2022-10-18
  • 由浅到深学习JDBC二
    封装数据访问对象1:通过分析总结,所有对数据库表的操作都可以总结为通过JDBC对表的增删改查,为了减少冗余代码,     使得每次操作表时,不必都写JDBC...
    99+
    2022-10-18
  • Pytorch卷积神经网络迁移学习的目标及好处
    目录前言一、经典的卷积神经网络二、迁移学习的目标三、好处四、步骤五、代码前言 在深度学习训练的过程中,随着网络层数的提升,我们训练的次数,参数都会提高,训练时间相应就会增加,我们今天...
    99+
    2022-11-11
  • 基于迁移学习的JS目标检测器如何构建
    本篇内容主要讲解“基于迁移学习的JS目标检测器如何构建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“基于迁移学习的JS目标检测器如何构建”吧!步骤一:安装依赖首先,我们需要安装Node.js和n...
    99+
    2023-07-05
  • 浅谈Python数学建模之整数规划
    目录一、从线性规划到整数规划1.1、为什么会有整数规划?1.2、四舍五入就能得到整数解吗?二、整数规划的求解方法2.1、分支定界法(Branch and bound)2.2、割平面法(Cutting plane)2....
    99+
    2022-06-02
    Python 数学建模 Python 整数规划
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作