深度学习500问——Chapter11:迁移学习(1)

2024-06-13 10:36

本文主要是介绍深度学习500问——Chapter11:迁移学习(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

11.1 迁移学习基础知识

11.1.1 什么是迁移学习

11.1.2 为什么需要迁移学习

11.1.3 迁移学习的基本问题有哪些

11.1.4 迁移学习有哪些常用概念

11.1.5 迁移学习与传统机器学习有什么区别

11.1.6 迁移学习的核心及度量准则

11.1.7 迁移学习与其他概念的区别

11.1.8 什么是负迁移?产生负迁移的原因有哪些?

11.1.9 迁移学习的基本思路


11.1 迁移学习基础知识

11.1.1 什么是迁移学习

找到目标问题的相似性,迁移学习任务就是从相似性出发,将旧领域(domain)学习过的模型应用在新领域上。

11.1.2 为什么需要迁移学习

1. 大数据与少标注的矛盾:虽然有大量的数据,但往往都是没有标注的,无法训练机器学习模型。人工进行数据标定太耗时。

2. 大数据与弱计算的矛盾:普通人无法拥有庞大的数据量与计算资源。因此需要借助于模型的迁移。

3. 普适化模型与个性化需求的矛盾:即使是在同一个任务上,一个模型也往往难以满足每个人的个性化需求,比如特定的隐私设置。这就需要在不同人之间做模型的适配。

4. 特定应用(如冷启动)的需求。

11.1.3 迁移学习的基本问题有哪些

基本问题主要有3个:

  • How to transfer:如何进行迁移学习?(设计迁移方法)
  • What to transfer:给定一个目标领域,如何找到相对应的源领域,然后进行迁移?(源领域选择)
  • When to transfer:什么时候可以进行迁移,什么时候不可以?(避免负迁移)

11.1.4 迁移学习有哪些常用概念

基本定义:

  •         域(Domain):数据特征和特征分布组成,是学习的主体

                        源域(Source domain):已有知识的域

                        目标域(Target domain):要进行学习的域

  •         任务(Task):由目标函数和学习结果组成,是学习的结果。

按特征空间分类:

  •         同构迁移学习(Homogeneous TL):源域和目标域的特征空间相同,D_s=D_t
  •         异构迁移学习(Heterogeneous TL):源域和目标域的特征空间不同,D_s\ne D_t

按迁移情景分类:

  •         归纳式迁移学习(Inductive TL):源域和目标域的学习任务不同
  •         直推式迁移学习(Transductive TL):源域和目标域不同,学习任务相同
  •         无监督迁移学习(Unsupervised TL):源域和目标域均没有标签

按迁移方法分类:

  •         基于实例的迁移(Instance based TL):通过权重重用源域和目标域的样例进行迁移
  •         基于特征的迁移(Feature based TL):将源域和目标域的特征变换到相同空间
  •         基于模型的迁移(Parameter based TL):利用源域和目标域的参数共享模型
  •         基于关系的迁移(Relation based TL):利用源域中的逻辑网络关系进行迁移

11.1.5 迁移学习与传统机器学习有什么区别

迁移学习传统机器学习
数据分布训练和测试数据不需要分布训练和测试数据同分布
数据标签不需要足够的数据标注足够的数据标注
建模可以重用之前的模型每个任务分分别建模

11.1.6 迁移学习的核心及度量准则

迁移学习的总体思路可以概括为:开发算法来最大限度地利用有标注的领域的知识,来辅助目标领域的知识获取和学习。

迁移学习的核心是:找到源领域和目标领域之间的相似性,并加以合理利用。这种相似性非常普遍。比如,不同人的身体构造是相似的;自行车和摩托车的骑行方式是相似的;国际象棋和中国象棋是相似的;羽毛球和网球的打球方式是相似的。这种相似性也可以理解为不变量。以不变应万变,才能立于不败之地。

有了这种相似性后,下一步工作就是,如何度量和利用这种相似性。度量工作的目标有两点:一是很好地度量两个领域的相似性,不仅定性地告诉我们它们是否相似,更定量地给出相似程度。二是以度量为准则,通过我们所采用的学习手段,增大两个领域之间的相似性,从而完成迁移学习。

一句话总结:相似性是核心,度量准则是重要手段。

11.1.7 迁移学习与其他概念的区别

1. 迁移学习与多任务学习关系:

        多任务学习:多个相关任务一起协同学习;

        迁移学习:强调信息复用,从一个领域(domain)迁移到另一个领域。

2. 迁移学习与领域自适应:领域自适应:使两个特征分布不一致的domain一致。

3. 迁移学习与协方差漂移:协方差漂移:数据的条件概率分布发生变化。

11.1.8 什么是负迁移?产生负迁移的原因有哪些?

负迁移(Negative Transfer)指的是,在源阈上学习到的知识,对于目标域上的学习产生负面作用。

产生负迁移的原因主要有:

  • 数据问题:源域和目标域压根不相似,谈何迁移?
  • 方法问题:源域和目标域是相似的,但是,迁移学习方法不够好,没找到可迁移的成分。

负迁移给迁移学习的研究和应用带来了负面影响。在实际应用中,找到合理的相似性,并且选择或开发合理的迁移学习方法,能够避免负迁移现象。

11.1.9 迁移学习的基本思路

迁移学习的总体思路可以概括为:开发算法来最大限度地利用有标注的领域的知识,来辅助目标领域的知识获取和学习。

  1. 找到目标问题的相似性,迁移学习任务就是从相似性出发,将旧领域(domain)学习过的模型应用在新领域上。
  2. 迁移学习,是指利用数据、任务或模型之间的相似性,将在旧领域学习过的模型,应用于新领域的一种学习过程。
  3. 迁移学习最有用的场合是,如果你尝试优化任务B的性能,通常这个任务数据相对较少。例如,在放射科中你知道很难收集很多射线扫描图来搭建一个性能良好的放射科诊断系统,所以在这种情况下,你可能会找到一个相关但不同的任务上做的更好,尽管任务没有那么多数据。
  4. 迁移学习什么时候是有意义的?它确实可以显著提高你的学习任务的性能,但我有时候也见过有些场合使用迁移学习时,任务实际上数据量比任务要少,这种情况下增益可能不多。

什么情况下可以使用迁移学习?

假如两个领域之间的区别特别的大,不可以直接采用迁移学习,因为在这种情况下效果不是很好。在这种情况下,推荐使用[3]的工作,在两个自相似度很低的domain之间一步步迁移过去(踩着石头过河)。

  1. 迁移学习主要解决方案有哪些?
  2. 除直接看infer的结果的Accurancy以外,如何衡量迁移学习学习效果?
  3. 对抗网络是如何进行迁移的?

Reference:

  1. 王晋东,迁移学习简明手册
  2. Ben-David, S., Blitzer, J., Crammer, K., Kulesza, A., Pereira, F., & Vaughan, J. W. (2010). A theory of learning from different domains. Machine learning, 79(1-2), 151-175.
  3. Tan, B., Song, Y., Zhong, E. and Yang, Q., 2015, August. Transitive transfer learning. In Proceedings of the 21th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (pp. 1155-1164). ACM.

这篇关于深度学习500问——Chapter11:迁移学习(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057060

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程