【机器学习】042_迁移学习

一、概述、定义

目的:

迁移学习的目的是将某个领域或任务上学习到的模式、知识应用到不同但相关的领域里,获取更多数据,而不必投入许多时间人力来进行数据的标注。

举例:

已经会下中国象棋,就可以类比着来学习国际象棋;已经会编写Java程序,就可以类比着来学习C#;已经学会英语,就可以类比着来学习法语;已经学会了骑自行车,就可以类比学习骑摩托车等等。

定义:

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

通俗地讲,迁移学习就是运用已有的知识、模型来学习新的知识,构建新模型。其核心是找到已有知识与新知识的相似性与关联性。

重要概念:

域:某个时刻的某个特定领域——例如书本评论、电影评论;

任务:所要完成的任务与实现的功能——例如情感分析、实体识别;

给定源域 D_s 和学习任务 T_s、目标域 D_t 和学习任务 T_t,迁移学习的目的是获取源域 D_s 和学习任务 T_s 中知识来帮助提升目标域 D_t 中预测函数 f_t(.) 的学习。其中 D_s\neq D_t 或者 T_s\neq T_t

二、迁移学习的分类

1. 基于实例的迁移

研究如何从源域中找出对目标领域训练有作用的实例。

例:在对源域的有标记数据实例中进行有效的权重分配,让源域的实例分布接近目标域的实例分布,从而在目标领域中建立一个分类精度较高并且可靠的学习模型。

迁移学习中,源域与目标域的数据分布不一致,故源域中并非所有有标记的数据实例都对目标域有作用。基于实例的迁移有现有的一些迁移算法,来对源域的有效数据迁移到目标域中。

TrAdaBoost算法就是典型基于实例的迁移。

TrAdaBoost算法的工作机制如下:

  1. 初始化:算法开始时,对源域和目标域数据的权重进行初始化。通常,目标域数据的初始权重会高于源域数据。

  2. 迭代更新:在每一轮中,算法使用当前的权重来训练一个弱分类器。分类器首先在目标域上测试,然后在两个域上进行误差评估。

  3. 权重调整:算法根据分类器的表现来调整数据点的权重。对于源域数据,分类正确的数据点权重会增加(使得算法在后续迭代中更少地关注这些点),而分类错误的数据点权重会减少。这与传统的AdaBoost相反,其核心思想是减少源域中对目标域帮助不大或有害的数据点的权重。对于目标域数据,权重更新与传统AdaBoost相同,即增加被错误分类数据点的权重。

  4. 终止条件:算法会在达到预定的迭代次数后停止,或者当目标域上的误差不再显著减少时停止。

  5. 组合弱分类器:最后,算法结合所有的弱分类器,形成一个强分类器。每个弱分类器根据其在目标域上的性能加权,性能越好的分类器影响越大。

通过这种方式,能够有效利用源域数据来帮助构建在目标域上表现良好的分类器,即便源域和目标域的数据分布有所不同。

2. 基于特征的迁移

①特征选择

找出源域和目标域之间共同的特征表示,找出特征之间对应的不同相关性,利用这些特征进行知识迁移。

②特征映射

将源域和目标域的数据从原始特征空间映射到新的特征空间之中。

源域的特征值经过一系列变换,对应到目标域的特征值,经过一一映射,使得源域数据与目标域的数据分布相同,从而在新的空间中,更好地利用源域已有的标记数据样本进行分类训练。最终对目标域的数据进行分类测试。

3. 基于共享参数的迁移

找到源域与目标域空间模型之间的共同参数或先验分布。

前提:学习任务的每个相关模型都会共享一些相同的参数或者先验分布。

三、迁移学习使用场景

1. 有大量数据样本,但大部分样本无标注

要想继续增加更多数据标注,需要付出很多成本。利用迁移学习思想,可以寻找一些和目标数据相似而且已经有标注的数据,利用数据之间的相似性对知识进行迁移,提高对目标数据的预测效果或者标注精度。

2. 帮助解决算法的冷启动问题

在跨域推荐系统将用户偏好模型从现有域(如图书推荐领域)迁移到一个新域(如电影推荐领域)中。

3. 想要获取具有更强泛化能力,但是数据样本较少. 许多应用场景数据量小

高质量有标签数据总是供不应求。传统的机器学习算法常常因为数据量小而产生过拟合问题,因而无法很好地泛化到新的场景中。

4. 数据来自不同的分布时

数据分布不仅会随着时间和空间而变化,也会随着不同的情况而变化,我们可能无法使用相同的数据分布来对待新的训练数据。已经训练完成的模型需要在使用前进行调整,在不同于训练数据的新场景下。

四、迁移学习的示例

例:假设现在要构建一个对手写数字进行识别的模型,但目前已有的已标注数据较少,如何不花费大量时间精力标注数据也能获得一个效果较好的模型?

方法:借助迁移学习,利用其它模型来辅助实现该任务。

假设有一个已经训练好的可以识别猫、狗、汽车和人的图像识别模型。复制此神经网络,在其中插入新的参数,那么对于最后的输出层,可以消除输出层并用一个更小的输出层(10个)替换它。

可以做的是使用前几层隐藏层的参数(实际上是除输出层之外所有隐藏层),然后采用两种方法训练新的网络:

①将五个新的输出层参数作为顶部的值,固定它们然后使用随机梯度下降或Adam算法更新参数,来降低识别数字0到9的成本函数。

②更新并训练网络中的所有参数,但前几层参数可以借助之前的神经网络。

首先在大数据集上进行训练,然后再在较小的数据集上进一步调整参数,这就是监督预训练。

然后进行微调,在其中获取已初始化或从监督预训练中获得的参数,进一步运行梯度下降微调权重以适应对应新的学习任务的特定应用参数。

原理:如果同样是图像识别的神经网络,那么在前几层——检测图像边缘、检测角点、检测通用形状、基本曲线等等都是相同的步骤,因而可以通用进行。

故而,可以下载、借助他人预训练的神经网络来根据自己的数据进一步训练、微调神经网络以达成相应目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/212677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Navicat连接Oracle数据库

Navicat连接Oracle数据库 打开服务里面找到Oracle服务 OracleServerXE或者OracleServerTTL 创建数据库连接 连接名默认自己起 主机选择本地 端口默认 服务名在服务中可以找到输入后缀 用户名默认都是system 密码是创建oracle时候填写的口令 点击测试连接即可

Spring Boot中的事务是如何实现的?懂吗?

SpringBoot中的事务管理,用得好,能确保数据的一致性和完整性;用得不好,可能会给性能带来不小的影响哦。 基本使用 在SpringBoot中,事务的使用非常简洁。首先,得感谢Spring框架提供的Transactional注解&am…

【金融数据分析】计算沪深300指数行业权重分布并用饼图展示

前言 前面的文章我们已经介绍了如何获取沪深300成分股所述行业以及权重的数据,想要了解这部分内容的小伙伴可以阅读上一篇文章 springbootjdbcTemplatesqlite编程示例——以沪深300成分股数据处理为例-CSDN博客 那么有了上文获取的数据,我们实际上可以…

【rabbitMQ】rabbitMQ控制台模拟收发消息

目录 1.新建队列 2.交换机绑定队列 3.查看消息是否到达队列 总结: 1.新建队列 2.交换机绑定队列 点击amq.fonout 3.查看消息是否到达队列 总结: 生产者(publisher)发送消息,先到达交换机,再到队列&…

期末速成数据库极简版【存储过程】(5)

目录 【7】系统存储过程 【8】用户存储过程——带输出参数的存储过程 创建存储过程 存储过程调用 【9】用户存储过程——不带输出参数的存储过程 【7】系统存储过程 系统存储我们就不做过程讲解用户存储过程会考察一道大题,所以我们把重点放在用户存储过程。…

U4_1 语法分析之自顶向下分析

文章目录 一、定义1、任务2、对比3、方法4、自顶向下面临问题 二、自顶向下分析1、概念2、特点3、二义性问题4、左递归问题1)概念2)消除3)间接左递归 5、回溯问题1)概念2)消除3)解决方法 6、总结 三、递归子…

【Proteus仿真】【51单片机】光照强度检测系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器,使共阴数码管,PCF8591 ADC模块、光敏传感器等。 主要功能: 系统运行后,数码管显示光传感器采集光照强度值&#xff…

Gitzip插件【Github免翻下载】

今天给大家推荐一个github下载的插件,平常大家下载应该无外乎就是以下两种: Download zip利用git clone 但是这两种各有各的弊端,前者一般需要科学上网才可以,后者下载不稳定经常中途断掉。 今天给推荐一个款浏览器插件-Gitzip.大…

基于SSM的java衣服商城

基于SSM的java衣服商城 一、系统介绍二、功能展示四、其他系统实现五、获取源码 一、系统介绍 项目类型:Java EE项目 项目名称:基于SSM的美衣商城 项目架构:B/S架构 开发语言:Java语言 前端技术:Layui等 后端技术…

Flask和Vue框架实现WebSocket消息通信

1 安装环境 1.1 安装Flask环境 主要的安装包 Flask、Flask-SocketIO,注意Python版本要求3.6 # Flask-SocketIO参考地址 https://flask-socketio.readthedocs.io/en/latest/ https://github.com/miguelgrinberg/flask-socketio更新基础环境 # 更新pip python -m …

以太坊虚拟机EVM介绍,智能合约详解

以太坊为例:什么是智能合约?智能合约怎么部署、调用、执行?智能合约的原理?智能合约存在哪儿?如何区分调用的是智能合约?世界状态数据库、EVM、智能合约它们之间的关系? 什么是智能合约 指的是…

【Hive】启动beeline连接hive报错解决

1、解决报错2、在datagrip上连接hive 1、解决报错 刚开始一直报错&#xff1a;启动不起来 hive-site.xml需要配置hiveserver2相关的 在hive-site.xml文件中添加如下配置信息 <!-- 指定hiveserver2连接的host --> <property><name>hive.server2.thrift.bin…

机器人与3D视觉 Robotics Toolbox Python 二 空间位姿描述

空间位姿描述 二维空间位姿描述 二维空间位姿表示方法 from spatialmath.base import * from spatialmath import * T1 SE2(x3,y3,theta30,unit"deg") trplot2(T1.A,frame"T1",dims[0, 5, 0, 5]) T2transl2(3, 4) trplot2(T2,frame"T2",dims…

如何理解 RPC 远程服务调用?

本文主要讲解 RPC 远程服务调用相关的知识。 RPC 远程服务调用是分布式服务架构的基础&#xff0c;无论微服务设计上层如何发展&#xff0c;讨论服务治理都绕不开远程服务调用&#xff0c;那么如何理解 RPC、有哪些常见的 RPC 框架、实现一款 RPC 框架需要哪些技术呢&#xff…

解决electron修改主进程后需要重启才生效

nodemon 是一种工具&#xff0c;可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于 node.js 的应用程序 nodemon 特性 自动重新启动应用程序。检测要监视的默认文件扩展名。默认支持 node&#xff0c;但易于运行任何可执行文件&#xff0c;如 python、…

自动驾驶学习笔记(十七)——视觉感知

#Apollo开发者# 学习课程的传送门如下&#xff0c;当您也准备学习自动驾驶时&#xff0c;可以和我一同前往&#xff1a; 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo 社区开发者圆桌会》免费报名—>传送门 文章目录 前言 分类 目标检测 语义分割 实例分割 …

SQL语句的执行顺序怎么理解?

SQL语句的执行顺序怎么理解&#xff1f; 我们常常会被SQL其书写顺序和执行顺序之间的差异所迷惑。理解这两者的区别&#xff0c;对于编写高效、可靠的SQL代码至关重要。今天&#xff0c;让我们用一些生动的例子和场景来深入探讨SQL的执行顺序。 一、书写顺序 VS 执行顺序 SQ…

【unity实战】一个通用的FPS枪支不同武器射击控制脚本

文章目录 前言模型素材文章用到的粒子火光特效射击效果换弹瞄准开枪抖动效果设置显示文本最终代码不同武器射击效果1. 手枪2. 机枪3. 狙击枪4. 霰弹枪5. 加特林 其他感谢完结 前言 实现FPS枪支不同武器效果&#xff0c;比如手枪&#xff0c;喷子&#xff0c;狙击枪&#xff0c…

《使用ThinkPHP6开发项目》 - 创建应用

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 《使用ThinkPHP6开发项目》 - 设置项目环境变量-CSDN博客 《使用ThinkPHP6开发项目》 - 项目使用多应用开发-CSDN博客 根据前面的步骤&#xff0c;我们现在就可以开发我们的项目开发了&#xff0c;根据项目开发的需要…

【数据挖掘】国科大苏桂平老师数据库新技术课程作业 —— 第四次作业

云数据库研究 云计算与云数据库背景 云计算&#xff08;cloud computing&#xff09;是 IT 技术发展的最新趋势&#xff0c;正受到业界和学术界的广泛关注。云计算是在分布式处理、并行处理和网格计算等技术的基础上发展起来的&#xff0c;是一种新兴的共享基础架构的方法。它…