从少数示例中泛化:介绍小样本学习(Few-shot Learning,FSL)

2024-05-01 06:04

本文主要是介绍从少数示例中泛化:介绍小样本学习(Few-shot Learning,FSL),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


论文题目:Generalizing from a Few Examples: A Survey on Few-shot Learning(ACM Computing Surveys,中科院 1 区)

在这里插入图片描述

这篇综述论文的主题是 “从少数示例中泛化:小样本学习综述”。它探讨了小样本学习(Few-shot Learning,FSL)领域,旨在理解当数据集较小时,如何使机器学习模型能够快速泛化到新任务。

核心论点:

  • FSL 是一种有前景的机器学习范式,它专门处理训练集中只有少量带标签样本的情况。
  • FSL 的核心问题在于经验风险最小化器的不可靠性,这使得在小样本场景下学习变得困难
  • 利用先验知识,FSL 方法可以从数据、模型和算法三个维度来有效解决前述核心问题。

采用的研究方法:

  • 论文首先明确了 FSL 的正式定义,并详细区分了 FSL 与其他相关机器学习问题之间的差异。
  • 通过错误分解分析,作者揭示了小样本监督学习的核心问题。
  • 对现有的 FSL 工作进行了全面的文献回顾,并根据如何利用先验知识处理核心问题,从数据、模型和算法三个视角对 FSL 方法进行了分类。

小样本学习与其他相关机器学习问题是通过对它们的定义、目标和挑战进行比较来区分的。以下是论文中提到的一些关键点,用于区分 FSL 与其他学习问题:

  1. 定义:FSL 是一种机器学习问题,其中目标任务(T)的训练集(E)只包含少量的监督信息样本。这与典型的机器学习应用不同,后者通常需要大量的监督信息样本。

  2. 经验风险最小化:在 FSL 中,由于训练样本数量很少,经验风险最小化器(即基于训练数据优化的模型)可能不可靠,这与在大数据集上进行学习的情况不同。

  3. 先验知识的作用FSL 特别强调利用先验知识来解决核心问题,即在少量样本情况下如何有效地学习和泛化。先验知识可以来自多种来源,包括但不限于多任务学习、嵌入学习、外部记忆和生成式建模。

  4. 与相关学习问题的比较

    • 弱监督学习:处理的是包含弱监督信息(如不完整、不准确或噪声标签)的经验 E,而 FSL 专注于使用少量的监督信息样本。
    • 不平衡学习:处理的是经验 E 中标签 y 的分布不均衡的问题,而 FSL 关注的是即使在其他类别的样本数量很少的情况下,如何对少数类别进行有效学习。
    • 迁移学习:涉及将从一个领域或任务学到的知识迁移到另一个领域或任务,而 FSL 是在目标任务上只有少量样本的情况下进行学习。
    • 元学习(Meta-learning):学会学习,通过跨任务学习来提高新任务的性能,FSL 可以视为元学习的一个应用场景,特别是在处理少量样本时。
  5. 问题设置:FSL 问题设置通常涉及 N-way K-shot 分类,即每个类别有 K 个样本,共有 N 个类别。这种设置在其他类型的机器学习问题中不常见。

  6. 挑战:FSL 面临的挑战是在少量样本上学习到泛化能力强的模型,这在传统的机器学习问题中不作为主要考虑。

通过上述比较,论文明确了 FSL 的独特性和它在机器学习领域中的定位。FSL 的关键在于如何利用少量样本和丰富的先验知识来提高学习性能和泛化能力。论文还通过错误分解分析来阐述小样本监督学习问题的核心挑战,这一分析基于有监督机器学习中的理论框架。具体来说,论文采用了以下步骤来识别和解释 FSL 中的关键问题:

  1. 期望风险与经验风险:首先,论文区分了期望风险(expected risk)和经验风险(empirical risk)。期望风险是模型在所有可能输入上的平均损失,而经验风险是模型在训练集上的平均损失。在机器学习中,由于真实的数据分布是未知的,通常使用经验风险作为优化目标

  2. 风险最小化:在数据量充足的情况下,可以通过经验风险最小化(Empirical Risk Minimization,ERM)来找到一个近似最优的模型。然而,在 FSL 问题中,由于训练样本数量有限,经验风险可能无法很好地代表期望风险。

  3. 错误分解:论文利用错误分解(error decomposition)的概念来进一步分析问题。总误差可以分解为近似误差(approximation error)和估计误差(estimation error)两部分。近似误差衡量假设空间(hypothesis space)中函数与真实函数之间的差异,而估计误差衡量由于使用经验风险代替期望风险而导致的误差。

  4. 小样本问题的核心:在 FSL 中,由于训练样本数量很少,即使模型的近似误差很小,估计误差也可能很大。这意味着,即使模型在训练集上表现良好,它在未见过的测试集上的性能也可能很差。这种现象称为过拟合(overfitting),其中经验风险最小化器(ERM)在小样本情况下变得不可靠。

  5. 核心问题的指出:因此,FSL 的核心问题在于经验风险最小化器在小样本情况下不可靠。这是因为在小样本限制下,模型很容易对训练数据中的噪声和特例过度敏感,从而导致过拟合。

通过上述分析,论文明确了小样本学习问题的核心挑战,并为如何利用先验知识来解决这一挑战提供了理论基础。具体来说,FSL 方法可以通过增加训练样本数量(数据视角)、减小假设空间的复杂性(模型视角),或改进搜索最佳假设的算法(算法视角)来应对这一核心问题。得出的结果总结为:

  • 数据视角:使用先验知识增强训练数据,以获得更可靠的经验风险最小化器。
  • 模型视角:利用先验知识减小假设空间的大小,使得在少量样本下也能学习到可靠的模型。
  • 算法视角:使用先验知识改变搜索最佳假设的策略,如提供良好的初始化参数或直接学习优化器。

最终结论:FSL 作为一种关键技术,有助于缩小 AI 与人类学习之间的差距。通过整合先验知识,它使机器学习模型在有限的监督信息下也能学习和泛化到新任务。论文还探讨了 FSL 在未来研究方向,包括问题设置、技术、应用和理论等方面的潜力。

研究局限性:

  • 论文中提及的 FSL 方法多依赖于人为设计的假设空间和搜索策略,这在一定程度上限制了其通用性和灵活性。
  • 目前,多数 FSL 方法假定任务源自单一的任务分布,但在实际情境中,任务间的相关性可能并不明确或难以预测。
  • 关于动态任务分布以及多模态信息在 FSL 中的潜在应用,当前研究尚显不足,需要进一步的探索和研究。

后续研究方向建议:

  • 研究在设计 FSL 方法时如何利用多模态信息,从而提供具有互补视角的先验知识。
  • 探讨将自动化机器学习(AutoML)方法应用于 FSL 中,旨在实现更加经济、高效和有效的算法设计。
  • 分析 FSL 算法在动态任务分布下的收敛性,并研究如何有效避免灾难性遗忘
  • 对 FSL 的样本复杂度进行理论探讨,同时深入探索 FSL 与领域适应之间的潜在联系。

参考论文:Wang, Y., Yao, Q., Kwok, J. T., & Ni, L. M. (2020). Generalizing from a few examples: A survey on few-shot learning. ACM computing surveys (csur), 53(3), 1-34.

这篇关于从少数示例中泛化:介绍小样本学习(Few-shot Learning,FSL)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 中的切面与事务结合使用完整示例

《Spring中的切面与事务结合使用完整示例》本文给大家介绍Spring中的切面与事务结合使用完整示例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录 一、前置知识:Spring AOP 与 事务的关系 事务本质上就是一个“切面”二、核心组件三、完

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的