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

小样本学习介绍

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

什么是小样本学习?

当我开始接触“小样本”这个术语的时候,给我的第一感觉就是他的数据集很小(这也是我入坑小样本学习最开始的原因,以为炼丹不需要太久),相信很多人有个同样的感觉,但是事实上并不是这样的,在我将小样本学习这一方向介绍给自己的同门或者其他同学的过程中,我发现很多人也都对小样本有着同样的误解。实际上,小样本的“小”并不是体现在数据集上。相反,小样本的数据集是很大的,比如常用的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上下得到的结果是最优的。

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

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

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

相关文章

莫比乌斯函数

积性函数定义 若gcd(p,q)1,有f(p*q)f(p)*f(q),则f(x)是积性函数 其中规定f(1)1,对于积性函数有:所有的积性函数都可以用筛法求出 常见的积性函数有欧拉函数和莫比乌斯函数 筛法求莫比乌斯函数 const int N 1e9 5; const int …

用开源大语言模型开发的智能对话机器人初版原型验证

用开源大语言模型开发的智能对话机器人初版原型验证 0. 背景1. 初版检证效果展示2. 验证效果总结 0. 背景 同事要想做一个智能对话机器人,特别的需求有有些几点, 通过预置提示词(包括确认事项),让大语言模型用会话式…

OpenAI ChatGPT-4开发笔记2024-02:Chat之text completion

API而已 大模型封装在库里,库放在服务器上,服务器放在微软的云上。我们能做的,仅仅是通过API这个小小的缝隙,窥探ai的奥妙。从程序员的角度而言,水平的高低,就体现在对openai的这几个api的理解程度上。 申…

【springboot+vue项目(零)】开发项目经验积累(处理问题)

一、VUEElement UI (一)elementui下拉框默认值不是对应中文问题 v-model绑定的值必须是字符串,才会显示默认选中对应中文,如果是数字,则显示数字,修改为: handleOpenAddDialog() {this.dialogT…

vue-动态高亮效果

个人练习&#xff0c;仅供参考 实现如下效果&#xff1a;点击某块&#xff0c;某块变成其他颜色。 具体实现代码&#xff1a; 上边&#xff1a; <template><div><h3 style"color: #f69">动态高亮效果</h3><hr> <!-- 对象 -->…

SwiftUI之深入解析如何使用新地图框架MapKit

一、前言 一旦将 App 目标更新到 iOS 17&#xff0c;Xcode 会将任何使用旧的 Map 初始化器的用法标记为已弃用&#xff1a; 会有警告提示&#xff1a;init coordinate region 已在 iOS 17 中弃用。请改用带有 MapContentBuilder 参数的地图初始化器。在 iOS 17 中&#xff0c;…

Java-replaceAll()同时替换多个字符

今天复现了raplaceAll&#xff08;&#xff09;的用法&#xff0c;但是通常都是对一种字符进行替换&#xff0c;我就在想有没有操作可以一次性替换多个不同的字符&#xff0c;百度一搜&#xff0c;果然有。具体情况如下 首先是替换字的 String str1 "小明&#xff0c;小…

案例091:基于微信小程序的农场驿站平台的设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

Redis (三)

1、redis复制 简单的概括就是主从复制&#xff0c;master以写为主&#xff0c;Slave以读为主&#xff0c;当master数据发生变化的时候&#xff0c;自动将更新的数据异步同步到其他的slave是数据库。 使用这种机制的话&#xff0c;可以做到读写分离&#xff0c;可以减轻主机负担…

14.两数之和

题目 class Solution {public int[] twoSum(int[] nums, int target) {int[] ret {-1,-1};for(int i0;i<nums.length;i) {for(int ji1;j<nums.length;j) {if(nums[i] nums[j] target) {ret[0] i;ret[1] j;}}}return ret;} }

uniapp 无限级树形结构面包屑、单选-多选、搜索、移除功能插件,基于【虚拟列表】高性能渲染海量数据,加入动态高度、缓冲区

hyq-tree-vtw 无限级树形结构面包屑、单选-多选、搜索、移除功能 示例项目 单选-user 单选-任意一项 多选-关联下级 多选-任意一项 已选择数据弹框 说明 本插件需要使用uni-popup、uni-transition用于已选择数据弹框&#xff0c;因此需要有这些依赖,请自行导入本插件基于【虚…

企业培训系统开发:构建灵活高效的学习平台

企业培训系统的开发在当今数字化时代是至关重要的。本文将介绍一些关键技术和代码示例&#xff0c;以帮助您构建一个灵活、高效的企业培训系统。 1. 技术选型 在开始企业培训系统的开发之前&#xff0c;首先需要选择合适的技术栈。以下是一个基本的技术选型示例&#xff1a;…

Python(wordcloud):根据文本数据(.txt文件)绘制词云图

一、前言 本文将介绍如何利用python来根据文本数据&#xff08;.txt文件&#xff09;绘制词云图&#xff0c;除了绘制常规形状的词云图&#xff08;比如长方形&#xff09;&#xff0c;还可以指定词云图的形状。 二、相关库的介绍 1、安装相关的库 pip install jieba pip i…

HTTP和TCP代理原理及实现,主要是理解

Web 代理是一种存在于网络中间的实体&#xff0c;提供各式各样的功能。现代网络系统中&#xff0c;Web 代理无处不在。我之前有关 HTTP 的博文中&#xff0c;多次提到了代理对 HTTP 请求及响应的影响。今天这篇文章&#xff0c;我打算谈谈 HTTP 代理本身的一些原理&#xff0c;…

C++完成Query执行sql语句的接口封装和测试

1、在LXMysql.h 创建Query执行函数 //封装 执行sql语句 if sqllen 0 strlen获取字符长度bool Query(const char*sql,unsigned long sqllen0); 2、在LXMysql.cpp编写函数 bool LXMysql::Query(const char* sql, unsigned long sqllen){if (!mysql)//如果mysql没有初始化好{c…

使用qtquick调用python程序

一. 内容简介 使用qtquick调用python程序 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3pytorch 安装pytorch(http://t.csdnimg.cn/GVP23) 2.4QT 5.14.1 新版QT6.4,&#xff0c;6.5在线安装经常失败&#xff0c;而5.9版本又无法编译64位程序&#xf…

UE4 4.21使用编辑器蓝图EditorBlueprint方法

在UE4 4.21中&#xff0c;编辑器蓝图&#xff08;Editor Blueprint&#xff09;是一个强大的工具&#xff0c;允许开发者扩展和自定义Unreal编辑器的功能。通过编辑器蓝图&#xff0c;我们可以创建自定义的工具和功能&#xff0c;以优化开发流程。 本教程将指导您如何在UE4 4.…

【LeetCode-剑指offer】--19.验证回文串II

19.验证回文串II 方法&#xff1a;双指针 首先考虑如果不允许删除字符&#xff0c;如何判断一个字符串是否是回文串。常见的做法是使用双指针。定义左右指针&#xff0c;初始时分别指向字符串的第一个字符和最后一个字符&#xff0c;每次判断左右指针指向的字符是否相同&#…

技术学习|CDA level I 多维数据透视分析

对基于多源表的结构数据进行商业智能分析&#xff0c;可以帮助决策者从多个不同业务角度对业务行为结果进行观测&#xff0c;进而帮助决策者全面、精确地定位业务问题&#xff0c;实现商业洞察的相关内容。通过商业智能分析产出的分析成果被统称为商业智能报表&#xff0c;简称…