小样本学习介绍(超详细)

小样本学习介绍

本文首先介绍了什么是小样本学习,其次介绍了为什么小样本学习的很多文章都采用元学习的方法。目的是通过通俗的解释更加清楚的介绍小样本学习是什么,适合初学者的入门。当然,以下更多的是自己的思考,欢迎交流。

什么是小样本学习?

当我开始接触“小样本”这个术语的时候,给我的第一感觉就是他的数据集很小(这也是我入坑小样本学习最开始的原因,以为炼丹不需要太久),相信很多人有个同样的感觉,但是事实上并不是这样的,在我将小样本学习这一方向介绍给自己的同门或者其他同学的过程中,我发现很多人也都对小样本有着同样的误解。实际上,小样本的“小”并不是体现在数据集上。相反,小样本的数据集是很大的,比如常用的mini-imagenet有6万张图片,更大的tiered-ImageNet有779165张图片,所以说数据集并不小。

那么小样本的这个“小”体现在哪里呢?

这个小其实是针对小样本学习的特定任务而言的,比如我在下图例举的five-way one-shot的任务,way代表类别的数量,shot代表每个类别有几张图片,five-way one-shot指的就是有五个类别,每个类别有一张图片,five-way one-shot任务中定义了两个集合,分别是支持集和查询集,小样本学习的任务的目标就是判断查询集的图片是属于支持集中哪一个类别的。讲到这里大家可能就明白了小样本学习的“小”并不是体现在数据量小。而是体现在小样本学习这一特殊任务设定,即每个类别(n-way)只有少量的标记图片(k-shot),也就是我们的支持集,要求我们的模型能根据这几张少量的图片,判断查询集图片的类别。

在这里插入图片描述

为什么元学习能应用到小样本学习?

首先简单的介绍一下什么是元学习:元学习 (Meta-Learning) 是一种机器学习方法,其目标是使计算机系统能够学习如何学习。简单来说,它是关于如何构建和设计机器学习系统的更高层次的学习方法。元学习的一个重要目标是提高机器学习系统的泛化能力,泛化能力是指一个机器学习系统能够从已知的数据中推广到未知的数据。通过元学习,我们可以训练模型具有更好的泛化能力,从而可以更准确地预测未来的数据。
单从元学习的定义来说,我们很难将元学习和小样本学习联系到一起。所以很快就能提出疑问:

为什么大多数的小样本学习的方法大多数都采用元学习的训练策略呢?

在上一节我们提到,小样本学习的任务的目标就是判断查询集的图片是属于支持集中哪一个类别。也就是说我们的目标是判断查询集的图片是属于支持集中哪一个类别(如下图所示,小样本学习的测试方式与传统的训练模型的方式是不同的,其本质上是一种匹配任务(将查询集中的图片匹配到对应的支持集))。既然小样本学习的任务目标是如此,那么,我们在小样本学习任务的训练过程中,为什么不模拟这一测试的过程(n-way k-shot)呢?于是,我们在小样本学习训练的过程中,采用元学习的训练策略,即将训练集划分为支持集和查询集,模拟测试时的小样本场景,相当于划分成一个又一个的小样本学习任务(也叫episode),每一个任务都是一个测试场景下的few-shot task,通过这种方式,就能更好的训练小样本模型(论文实验证明效果确实好)。
在这里插入图片描述
讲到这里,相信大家都清楚了为什呢我们要在训练的时候将小样本学习的训练集划分成支持集和查询集进行训练,如上图所示。同时也从根本上了解了为什么小样本学习的训练策略(元学习的训练策略)与一般的深度学习模型的训练策略的不同。更进一步来说,拿mini-imagenet数据集来举例。mini-imagenet本身有100个类,我们通常将前64个类划分为训练集,16个类划分为验证集,20个类划分为测试集。同时,我们对训练集、验证集和测试集进行进一步的划分,拿5-way 1-shot任务而言,我们首先会随机选取5个类,并在每个类中选取一张图片(也就是5way-1shot),然后再分别从选取的5个类中每个类别选取15张图片,得到了75张图片作为查询集(15*5=75)。在训练的过程中通过不断判断查询集图片的类别,进行有监督的loss的方向传播,更新我们的模型(当然这里并不一定每个类别抽取15张图片,也可以是其他的数量的图片,不过大多数论文都使用15这个数量,目的是更多的query能带来更多的loss的更新,但是query图片太多也不好,会导致support图片的数量变少,总体的episode的数量变少。所以说二者之间需要有一个权衡)。我本人也做过一些尝试性的实验,query图片数量在15上下得到的结果是最优的。

以上就是对小样本学习的一个总体介绍,后续我会不断的更新小样本学习相关的系列工作,其中也会穿插自己的拙见,就此落笔。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

cesium第一视角/上帝视角以及解除视角锁定

第一视角效果: function event1() {viewer.scene.screenSpaceCameraController.enableZoom false; //. 禁止视角缩放viewer.scene.screenSpaceCameraController.enableRotate false; //禁止左键拖动视角viewer.scene.screenSpaceCameraController.enableTilt fal…

GAMES101:作业5记录

总览 在这部分的课程中,我们将专注于使用光线追踪来渲染图像。在光线追踪中最重要的操作之一就是找到光线与物体的交点。一旦找到光线与物体的交点,就可以执行着色并返回像素颜色。在这次作业中,我们需要实现两个部分:光线的生成和光线与三角的相交。本次代码框架的工作流程为…

【C语言】stdbool.h——有关bool的总结

在编程和日常生活中,经常需要一种只能具有两个值之一的数据类型,如是否、开关、真假等,因此,C 有一种bool数据类型,称为booleans。布尔值表示 或true的值false。 C 中的 bool 是大多数语言中的基本数据类型&#xff0…

自由DIY预约小程序源码系统:适用于任何行业+自由DIY你的界面布局+全新升级的UI+多用户系统 带安装部署教程

随着移动互联网的普及,预约服务逐渐成为人们日常生活的一部分。从家政服务、医疗挂号到汽车保养,预约已经渗透到各个行业。然而,市面上的预约小程序大多功能单一,界面老旧,无法满足商家和用户的个性化需求。今天来给大…

03 decision tree(决策树)

一、decision tree(决策树) 1. classification problems(纯度) i . entropy (熵) ​ 作用:衡量一组数据的纯度是否很纯 ,当五五开时他的熵都是最高的,当全是或者都不是…

fastadmin 安装QueryList

之前的项目复制过来,抓取数据的时候报这个错,于是我准备重新安装QueryList 我准备安装QueryList 4版本 安装命令: composer require jaeger/querylist:~V4 报错: 解决方法: 创建一个新用户和用户组,切换…

vivado 管理宏

管理宏 宏存储为XDC约束。根据定义,它们是Tcl命令。这允许要在XDC约束文件和Tcl脚本中使用并交互使用的宏。宏是使用write_xdc命令编写的。使用read_xdc读取宏命令-cell选项可用于将作用域限制为特定的单元格。-cell选项特别适用于将一个宏的相对放置应用到不同层次…

electron预加载脚本

webPreferences 指定预加载脚本,可以使用部分node脚本 webPreferences: {preload: path.join(__dirname, "preload.js"),},创建preload.js 中 测试文件读取功能 const fs require(fs) const text fs.readFileSync(package.json, utf-8)console.log(text)报错,为了…

Visual Studio 2013 “即将退休”

新年快乐! 这也是向各位开发者提醒 Visual Studio 支持生命周期中即将到来的好时机。 对 Visual Studio 2013 的支持即将在今年(2024年)的4月9日结束。如果你正在使用旧版本的 Visual Studio,我们强烈建议您升级您的开发环境到最新的 Visual Studio 20…

给孩子选台灯什么样的好?分享高品质的学生护眼台灯!

在这个青少年如此高近视率的情况下,想要真正保护孩子的视力,除了需要监督孩子养成良好的用眼习惯以外,还要注意光线环境!在夜晚不管是看书写字、还是使用电脑平板上网课,都需要一个健康的照明环境。因此在挑选孩子学习…

Electron介绍

前言 相信很多的前端小伙伴都想过一个问题,web技术是否可以用于开发桌面应用。答案当然是可以的,Electron框架就是其中的一种解决方案。 Electron介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 并不是一门新的…

.NetCore部署微服务(一)

目录 前言 什么是微服务 微服务的优势 微服务的原则 创建项目 在Docker中运行服务 客户端调用 简单的集群服务 前言 写这篇文章旨在用最简单的代码阐述一下微服务 什么是微服务 微服务描述了从单独可部署的服务构建分布式应用程序的体系结构流程,同时这些…

Redis 连接 命令

目录 1.Redis Echo 命令 - 打印字符串简介语法可用版本: > 1.0.0返回值: 返回字符串本身。 示例 2.Redis Select 命令 - 切换到指定的数据库简介语法可用版本: > 1.0.0返回值: 总是返回 OK 。 示例 3.Redis Ping 命令 - 查看服务是否运行简介语法可用版本: > 1.0.0返回…

【Proteus仿真】【Arduino单片机】超声波测距系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用动态数码管、按键、HCSR04超声波、蜂鸣器模块等。 主要功能: 系统运行后,数码管显示超声波检测距离,当检…

Apache网页优化

本章主要介绍如何对Apache网页进行优化 Apache 网页压缩Apache 网页缓存Apache 隐藏版本信息Apache 网页防盗链 目录 1、网页压缩与缓存 1.1、网页压缩 (1)gzip介绍 (2)HTTP压缩的过程 (3)Apache的…

Scikit-Learn线性回归(五)

Scikit-Learn线性回归五:岭回归与Lasso回归 1、误差与模型复杂度2、正则化3、Scikit-Learn岭(Ridge)回归4、Scikit-Learn Lasso回归 1、误差与模型复杂度 在第二篇文章 Scikit-Learn线性回归(二) 中,我们已经给出了过拟合与模型泛…

均匀与准均匀 B样条算法

B 样条曲线的定义 p ( t ) ∑ i 0 n P i F i , k ( t ) p(t) \sum_{i0}{n} P_i F_{i, k}(t) p(t)i0∑​nPi​Fi,k​(t) 方程中 n 1 n1 n1 个控制点, P i P_i Pi​, i 0 , 1 , ⋯ n i0, 1, \cdots n i0,1,⋯n 要用到 n 1 n1 n1 个 k k k 次 B 样条基函数 …

手游开发项目经验简单总结

这是我最近一个完整的手游开发项目的总结信息,请大家指点 目录 引擎 语言 编辑器 项目开发模块规划分 主项目工程,UI资源项目工程,模型场景资源项目工程 热更框架 前后端协议 UI 图集 多语言适配 SLG场景和其他场景 战斗 美术模型资源 人物…

微信怎么删除聊天记录?进来Get常用的操作方法!

微信是国内使用最广泛的社交应用程序之一。在我们使用微信的过程中,删除聊天记录是一个常见的操作。人们会删除一些不需要的聊天记录,以此减少存储空间的占用。微信怎么删除聊天记录?本文将介绍删除聊天记录的常用方法,非常简单&a…

Git保姆级安装教程

Git保姆级安装教程 一、去哪下载二、安装2.1 具体安装步骤2.2 设置全局用户签名 一、去哪下载 1、官网(有最新版本):https://git-for-windows.github.io/ 2、本人学习时安装的版本,链接:https://pan.baidu.com/s/1uAo…