什么是迁移学习?

一、基本概念

       迁移学习(Transfer Learning)是一种机器学习方法,旨在将从一个任务中学到的/已有的知识应用到另一个相关任务中。与传统的机器学习方法不同,迁移学习不需要从头开始训练模型,而是利用(迁移)已有知识来加速新任务的学习过程。换句话说,迁移学习放宽了传统机器学习中的两个基本假设,即训练数据和测试数据必须同分布,以及必须有足够数量的标注数据来训练模型,这使得它在处理数据稀缺和计算资源有限等问题时,具有显著优势。

二、常见策略

        这里,笔者列举几个日常工作中遇到的迁移学习策略。在此之前,我们需要先了解下几个基本概念:

  • 源域(Source Domain):源域是指迁移学习中知识的来源域,它包含了用于训练模型的初始数据和任务,通常具有丰富的标注数据。
  • 目标域(Target Domain):目标域是指迁移学习中知识的应用域,它包含了需要迁移学习模型进行预测或分类的数据和任务,通常数据量较少,标注数据稀缺。

        在迁移学习中,源域和目标域是两个关键概念,它们分别代表了知识迁移的起点和终点。在迁移学习中,源域和目标域之间的关系可以有多种形式:

  • 相同特征空间和标签空间:源域和目标域具有相同的特征空间和标签空间,但数据分布不同,这种情况常见于跨领域迁移学习(Domain Adaptation),又称域适应。例如,在不同的天气条件下拍摄的交通标志图像数据集,源域(例如是晴天)和目标域(例如是雨天和阴天)的特征空间和标签空间相同,但数据分布不同。
  • 相同特征空间,不同标签空间:源域和目标域具有相同的特征空间,但标签空间不同,常见于多任务学习(Multi-Task Learning)。例如,在图像分类任务中,源域的任务是分类动物图像,而目标域的任务是分类植物图像,但两者采用了相同结构的特征提取器。
  • 不同特征空间和标签空间:源域和目标域具有不同的特征空间和标签空间。例如,在自然语言处理任务中,源域的任务是情感分析,而目标域的任务是机器翻译。

1、基于样本的迁移学习

        基于样本的迁移学习毫无疑问重心在样本中。这里,我们可以采取两种策略:

(1) 样本加权(Instance Reweighting)

        样本加权方法通过为源任务的数据样本分配权重,使得源任务的数据分布更接近目标任务的数据分布。这种场景下,我们同时使用源域和目标域的数据训练/微调模型,期间为每个样本都赋予一个学习权重,对于跟目标域数据分布相近的源域样本则赋予更高的权重。这里,权重可以设置为可动态调整的。此外,数据分布相近程度的衡量过程可以使用简单的机器学习分类器或者聚类模型,也可以通过计算向量相似度来实现。

(2) 样本选择(Instance Selection)

        考虑一个分类场景,我们在数据集A上训练了一个模型Amodel,现在我们希望把Amodel直接应用在另一个数据集B中。虽然我们可以直接在数据集B上面再训练一个模型Bmodel,可如果数据集B是一个没有标签信息的数据呢?这时候,我们就可以采用样本选择方法。

        样本选择方法的主要思路是从源任务的数据集中选择与目标任务最相关的样本,减少不相关样本的干扰。同样地,我们可以通过计算源任务样本与目标任务样本的相似度,选择相似度较高的源域样本。此外,我们还可以训练一个分类器来区分源任务和目标任务的样本,选择分类器难以区分的样本。样本选择方法和样本重加权方法的主要区别在于,样本选择方法只选择跟目标域样本相似的源域样本参与模型的训练/微调,而样本加权方法会使用所有的源域样本。如果我们当前的目标域样本是无标签的数据,那么样本选择方式是不二之选,我们通过选出目标域和源域中的相似样本对/样本簇,为目标域的数据打上对应的源域标签

        要注意的是,基于样本的迁移学习首先应当在源域和目标域上的任务相同的情况下应用,如果在源域上训练的是一个分类模型,而目标域上训练的是一个回归模型那必然无法使用同一个模型架构了。另外,源域和目标域的样本特征维度应当保持相同,否则无法计算样本相似程度。因此,基于样本的迁移学习方法有着较为严格的应用限制,稍不留意训练出来的模型效果就会很差。

2、基于特征的迁移学习

        基于特征的迁移学习方法旨在通过特征变换的方式,来减少源域和目标域之间的差距。一般可以采用以下两种方法:

(1) 特征变换(Feature Transformation)

        假设我们现在希望用同一个分类模型来对两个不同来源的数据集进行分类。如果这两个数据集上的分类任务是相同的(例如都是二分类或者都是回归),那么即便数据集之间的差异很大,甚至连特征维度都完全不同,我们也可以通过特征变换的方法来实现迁移学习。例如我们可以使用主成分分析(PCA)对源任务和目标任务的数据特征进行降维,在提取主要特征的同时将两个域的特征维度统一,这样一来就可以使用一个模型来训练了。

(2) 特征对齐(Feature Alignment)

        特征对齐的目的是通过对齐源任务和目标任务的特征分布,使得它们在特征空间中更加一致。例如我们可以通过最小化源任务和目标任务特征分布的最大均值差异,使得它们的特征分布更加一致,这就是最大均值差异(MMD)方法

3、基于模型的迁移学习

        基于模型的迁移学习方法应该是最常见也是最有效的一种方式了。这里主要介绍两种最广为人知的方法:

(1) 微调

        微调的基本思想是利用在大规模数据集(如ImageNet、COCO等)上预训练的模型作为初始模型,然后在目标任务的数据集上进行进一步训练(这里的训练规格相比起预训练规格要小很多)。不同的是,在微调训练的过程中,往往会保留预训练模型的前几层参数不变,从而使得预训练模型不会丢失学习到的通用特征,而后面的一到两层模型参数参与训练并更新梯度,从而让模型学习到特定任务的特征。

        例如在自然语言处理领域,我们使用在包括维基百科在内的大量文本信息(相当于源域)预训练一个BERT模型,并解冻该模型的最后一层,结合下游的文本分类或者回归任务(相当于在目标域数据上训练)进行微调训练,往往能够取得比常规神经网络好得多的效果。这是由于BERT模型在基于源域数据的预训练过程中学习到了大量有用的自然语言知识,从而使得它所生成的文本表示蕴含丰富的语义信息,为下游任务提供了有效特征。

(2) 知识蒸馏

        知识蒸馏旨在通过训练一个较小的学生模型(student model)来模仿较大的教师模型(teacher model)的行为,从而将教师模型的知识迁移到学生模型中。模型蒸馏的基本思想是通过训练一个较小的学生模型,使其输出与预训练的教师模型的输出尽可能一致(教师模型的输出概率分布即为学生模型的训练目标),这样一来可以使得在不过多牺牲指标的前提下实现任务模型的压缩。一般来说,知识蒸馏中学生模型和教师模型之间的规模差异往往较大,教师模型可能具有几百万个参数,而学生模型的参数仅仅是教师模型的三分之一。因此,知识蒸馏也是一种及其常见的模型压缩策略。

总结

        迁移学习的概念在笔者看来是非常广泛的,但凡涉及到数据源融合、模型微调的方法都可以归入迁移学习的范畴。但不论方法如何创新,迁移学习的目的永远都是利用已有的知识提高建模效率。在数据稀缺、标签信息不足、模型性能有限等情况下,不妨利用迁移学习的思维看看是否有什么已有的知识能够帮助我们解决这些问题。

 

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

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

相关文章

D83【python 接口自动化学习】- pytest基础用法

day83 pytest测试用例执行顺序 学习日期:20241129 学习目标:http定义及实战 -- pytest测试用例执行顺序 学习笔记: 测试用例执行顺序 默认执行顺序使用pytest-ordering自定义顺序 pytestrequests练习 import requestsdef test_mobile()…

漫谈推理谬误——错误因果

相关文章 漫谈推理谬误——错误假设-CSDN博客文章浏览阅读736次,点赞22次,收藏3次。在日常生活中,我们会面临各种逻辑推理,有些看起来一目了然,有些非常的科学严谨,但也有很多似是而非,隐藏了陷…

如何看linux系统内核是aarch64 ,还是64-bit

要查看 Linux 系统内核是 aarch64 架构还是 64-bit 架构,可以通过以下几种方法来确认: 方法 1:使用 uname 命令 uname 命令用于显示系统信息。使用以下命令查看系统的架构: uname -m如果输出是 aarch64,说明你的系统…

Debezium Engine监听binlog实现缓存更新与业务解耦

飞书文档 解决缓存与数据源数据不一致的方案有很多, 各有优缺点; 1.0、旁路缓存策略, 直接同步更新 读取流程: 查询缓存。如果缓存命中,则直接返回结果。如果缓存未命中,则查询数据库。将数据库查询到的数据写入缓存,并设置一个…

使用命令行来刷写ELRS接收器的固件

1。使用ExpressLRS Configurator的自带编译好的python命令 "C:\Users\xxx\AppData\Local\Programs\ExpressLRS Configurator\dependencies\windows_amd64\python\python3.exe" \ "C:\Users\xxx\AppData\Roaming\ExpressLRS Configurator\firmwares\cloud\Expr…

深入理解 Docker 在 CI/CD 流程中的应用原理

Docker 和 CI/CD 是现代软件开发和运维中的两项重要技术。将 Docker 与 CI/CD 集成,可以提高软件交付速度、可靠性和可扩展性。本文将从 CI/CD 的基本概念出发,介绍 Docker 在 CI/CD 中的应用原理,展示其在各个环节中的工作流程,以…

输出1~n中能被3整除,且至少有一位数字是5的所有整数.:JAVA

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 输出1~n中能被3整除&#xff0c;且至少有一位数字是5的所有整数. 输入描述: 输入一行&#xff0c;包含一个整数n。(1 < n < 100000) 输出描述: 输出所有满足条件的数&#xff0c;以换…

流量工程中的“LSP“,“RSVP“,“ISIS TE“,“OSPF TE“分别是什么?

在流量工程中&#xff0c;LSP&#xff08;Label Switched Path&#xff0c;标签交换路径&#xff09;、RSVP&#xff08;Resource Reservation Protocol&#xff0c;资源预留协议&#xff09;、IS-IS TE&#xff08;Intermediate System to Intermediate System Traffic Engine…

激光雷达定位与建图-最近邻问题2

一、问题引出 最近邻问题&#xff1a;假设有两个点云集合&#xff0c; χ 1 { x 1 , ⋯ x n } \chi _{1} \left \{ x_{1},\cdots x_{n} \right \} χ1​{x1​,⋯xn​} &#xff0c; χ 2 { x 1 , ⋯ x n } \chi _{2} \left \{ x_{1},\cdots x_{n} \right \} χ2​{x1​,⋯…

redis中的哨兵

redis中的哨兵 一、哨兵机制的概念二、redis哨兵的部署2.1 docker的安装2.2 编排redis主从节点2.3 配置哨兵节点 三、redis哨兵的选举机制3.1 redis-master宕机之后的情况3.2 重启redis-master后的情况 四、redis哨兵机制的原理4.1主观下线4.2客观下线4.3选举leader节点4.4选出…

如何在 IIS 上部署 .NET Core 应用程序 ?

在 Internet 信息服务 (IIS) 上部署 .NET Core 应用程序起初可能看起来令人生畏&#xff0c;但只要步骤正确&#xff0c;它就是一个简单的过程。本指南将引导您在 IIS 上部署 .NET Core 应用程序。 Step 1: 安装 .NET Core Hosting Bundle (1) 前往官方下载页面 .NET downloa…

蓝桥杯每日真题 - 第24天

题目&#xff1a;&#xff08;货物摆放&#xff09; 题目描述&#xff08;12届 C&C B组D题&#xff09; 解题思路&#xff1a; 这道题的核心是求因数以及枚举验证。具体步骤如下&#xff1a; 因数分解&#xff1a; 通过逐一尝试小于等于的数&#xff0c;找到 n 的所有因数…

【前端】Next.js 服务器端渲染(SSR)与客户端渲染(CSR)的最佳实践

关于Next.js 服务器端渲染&#xff08;SSR&#xff09;与客户端渲染&#xff08;CSR&#xff09;的实践内容方面&#xff0c;我们按下面几点进行阐述。 1. 原理 服务器端渲染 (SSR): 在服务器上生成完整的HTML页面&#xff0c;然后发送给客户端。这使得用户在首次访问时能够…

【机器学习】机器学习的基本分类-监督学习-逻辑回归-对数似然损失函数(Log-Likelihood Loss Function)

对数似然损失函数&#xff08;Log-Likelihood Loss Function&#xff09; 对数似然损失函数是机器学习和统计学中广泛使用的一种损失函数&#xff0c;特别是在分类问题&#xff08;例如逻辑回归、神经网络&#xff09;中应用最为广泛。它基于最大似然估计原理&#xff0c;通过…

【Qt】QDateTimeEdit控件实现清空(不保留默认时间/最小时间)

一、QDateTimeEdit控件 QDateTimeEdit 提供了一个用于编辑日期和时间的控件。用户可以通过键盘或使用上下箭头键来增加或减少日期和时间值。日期和时间的显示格式根据设置的格式显示&#xff0c;可以通过 setDisplayFormat() 方法来设置。 二、如何清空 我在使用的时候&#…

基于BERT的语义分析实现

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

操作系统存储器相关习题

1 为什么要配置层次式存储器? 设置多个存储器可以使存储器两端的硬件能并行工作&#xff1b; 采用多级存储系统特别是Cache技术&#xff0c;是减轻存储器带宽对系统性能影响的最佳结构方案&#xff1b; 在微处理机内部设置各种缓冲存储器&#xff0c;减轻对存储器存取的压力。…

HarmonyOS NEXT应用开发,关于useNormalizedOHMUrl选项的坑

起因是这样的&#xff1a;我这库打包发布出问题了&#xff0c;这个有遇到的吗&#xff1f; 源码里面就没有 request .d.ts,这打包后哪来个这文件&#xff1f;且漏掉了其他文件。 猫哥csdn.yyz_1987 为啥我打包的har里面&#xff0c;只有接口&#xff0c;没有具体实现呢&#x…

单点登录原理

允许跨域–>单点登录。 例如https://www.jd.com/ 同一个浏览器下&#xff1a;通过登录页面产生的cookie里的一个随机字符串的标识&#xff0c;在其他子域名下访问共享cookie获取标识进行单点登录&#xff0c;如果没有该标识则返回登录页进行登录。 在hosts文件下面做的域名…

基于Java的小程序电商商城开源设计源码

近年来电商模式的发展越来越成熟&#xff0c;基于 Java 开发的小程序电商商城开源源码&#xff0c;为众多开发者和企业提供了构建个性化电商平台的有力工具。 基于Java的电子商城购物平台小程序的设计在手机上运行&#xff0c;可以实现管理员&#xff1b;首页、个人中心、用户…