小样本学习--(1)概论
目录
一、概述
二、小样本学习的数据集
1、Omniglot
2、MiniimageNet
三、孪生网络
四、三元组损失函数
一、概述
小样本学习用于处理训练数据集中样本数量少的情况,一般来说,小样本学习流程是这样的,从一个多种类少量样本的巨大数据集中训练一个Pretrained网络模型(这一步不需要做),之后可以基于预训练模型根据微调、元学习或度量方法进行fine-tune,做到对查询集的一个分类和识别。
小样本学习的LibFewShot库:https://github.com/RL-VIG/LibFewShot
小样本学习与传统神经网络的区别:
假设训练猫狗分类问题,传统神经网络会从大量带标签的猫狗训练集中进行充分训练,得到较好的模型,然后测试集也是猫狗数据集,只不过是训练集中没有的图片,模型将对测试集进行分类。
小样本学习首先在一个较大的较多类别,每个类别较少数据的数据集(即辅助集,不包含猫狗类别)中进行预训练,通过迁移学习对预训练模型进行微调,微调时会利用一个Support set(支持集),支持集包含猫狗的图片和标签,根据支持集的类别共K类和每个类别的图片数量n张,又叫做K-way n-shot小样本问题,通常K取5或10,n取1或5。通过在支持集进行微调,达到少量样本完成对查询集(测试集,猫狗测试集)的分类。
小样本学习,不需要传统神经网络的过高层数,过多的融合来寻找分类的特征从而知道如何分类,而是通过有限的支持集进行相似度匹配,来达到分类的效果。
小样本学习例子:
下图的Query:兔子就是测试集,而辅助集在训练时没有见过兔子类,那么他是如何分类的呢?
通过依赖支持集Support Set对于预训练模型进行微调,来获得水獭与测试图片相似度最高的标签。

另外 K-way n-shot的举例如下:

K-way n-shot与测试集的Accuracy的关系:
(1)支持集类别数越多,测试集Accuracy越低,因为测试图片占测试种类的比例下降了。

(2)支持集图片越多,测试集Accuracy越高,这个很好理解,图片越多学的越好。

二、小样本学习的数据集
1、Omniglot
Omniglot是全语言文字数据集,包含50种语言的字母表,共计1623个类,每个字母由20个不同的人书写,也就是每个字母仅有20张图片,每个图片的像素为105*105。Omniglot数据集分为训练集和测试集,训练集有30个字母表,964个字符,测试集有20个字母表,659个字符,训练集和测试集类别不同,也就是说预训练也是进行的小样本学习,Omniglot数据集一般用作小样本训练。

2、MiniimageNet
MiniimageNet是一个从ImageNet数据集中抽取的数据集,一共100个类别,每个类别600张图片,共计6万张图片。MiniimageNet数据集的训练集64个类别,验证集16个类别,测试集20个类别。Miniimagenet用于针对各种生物、物品的小样本学习数据集。

三、孪生网络
孪生网络,利用相同样本和不同样本之间的区别,训练出一个能够分类的神经网络。
首先将训练集分成正负样本,且样本数量相等的三元组形式,类别相同的图片为正样本,类别不同的图片(首先选取一张图片a,再找从不属于a的图片中随机取样b图片)为负样本。

孪生网络前向传播输入两张图片,经过映射得到两个列向量,向量作差得到z层,经过全连接网络和激活函数,与所给target计算损失函数,并进行反向传播修改权重。

注意这个网络只是简单的一个解释,内部的网络已经更新换代,但大体依旧是输入两张图片与一个Target训练该模型。如下图这种就是图片映射的列向量进入网络层,而没有直接做差。

测试模型时,根据测试集与支持集的不同类别计算相似度,相似度最大的记为本次测试的类别。

四、三元组损失函数
三元组损失(Triplet Loss),是基于度量的小样本学习中的损失函数方法。首先从训练集中随机选择一张图片作为anchor,如下图中第一张老虎图片,再根据anchor的类别寻找该类的随机一张图片作为Positive,最后从trainset除去老虎类,随机抽取一张图片记为Negative。

根据三张图片,正样本和负样本去计算与anchor的2-范数,也就是几何距离,记作d+和d-,d+越小越好,正样本越接近anchor,d-越大越好,负样本越远离anchor。
如果d+=d-那么相当于随机模型,所以训练好的模型必须满足,我们定义三元组损失为

根据三元组损失计算预测图片与支持集中图片的距离dist,通过比较距离中最短的一个,就可以确定预测图片所属的类别。

相关视频:Siamese Network (孪生网络) (2/3)_哔哩哔哩_bilibili
相关文章:
小样本学习--(1)概论
目录 一、概述 二、小样本学习的数据集 1、Omniglot 2、MiniimageNet 三、孪生网络 四、三元组损失函数 一、概述 小样本学习用于处理训练数据集中样本数量少的情况,一般来说,小样本学习流程是这样的,从一个多种类少量样本的巨大数据集…...
数据结构之手撕顺序表(讲解➕源代码)
0.引言 在本章之后,就要求大家对于指针、结构体、动态开辟等相关的知识要熟练的掌握,如果有小伙伴对上面相关的知识还不是很清晰,要先弄明白再过来接着学习哦! 那进入正题,在讲解顺序表之前,我们先来介绍…...
小微企业是怎样从客户管理系统中获益的?
大企业普遍拥有成熟的客户管理系统,而对小微企业而言,客户管理系统的重要性更为突出。这是因为小微企业管理相对薄弱,资源有限,人力资金需要更加精细化的管理。那么,小微企业如何从客户管理系统中获益? 一…...
mysql整库备份表结构和数据
命令 mysqldump -P 端口 -h 主机 -u 用户名 -p 数据库 > xxxxbak.sql 将导出数据库的表结构及数据(建表语句和insert语句) 举例 mysqldump -P 3306 -h 100.120.56.23 -u my_username-p sys > system-230510.sql...
LinkedHashMap与LRU缓存
序、慢慢来才是最快的方法。 背景 LinkedHashMap 是继承于 HashMap 实现的哈希链表,它同时具备双向链表和散列表的特点。事实上,LinkedHashMap 继承了 HashMap 的主要功能,并通过 HashMap 预留的 Hook 点维护双向链表的逻辑。 1.缓存淘汰算法…...
2023大联盟6比赛总结
比赛链接 反思 A 为什么打表就我看不出规律!!! 定式思维太严重了T_T B 纯智障分块题,不知道为什么 B 100 B100 B100 比理论最优 B 300 B300 B300 更优(快了 3 倍),看来分块还是要学习一…...
05_51单片机led流水线的实现
1:step创建一个新的项目并将程序烧录进入51单片机 以下是51单片机流水线代码的具体实现 #include <REGX52.H>void Delay500ms() //11.0592MHz {unsigned char i, j, k;i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i); }void main(){while(1){P1 0…...
Java系列 | 如何讲自己的JAR包上传至阿里云maven私有仓库【云效制品仓库】
什么是云效 云效是云原生时代一站式 BizDevOps 平台,产研数字化同行者,支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现产研数字化,打造“双敏”组织&…...
小程序技术加速信创操作系统国产化替换
随着信息技术的不断发展,信息技术应用创新(简称“信创”)已经成为了当今企业数字化转型的重要趋势之一。信创是指在信息技术领域,以自主可控的国产软硬件产品和服务为核心,构建起一套完整的信息技术生态体系࿰…...
免费:实时 AI 编程助手 Amazon CodeWhisperer
点 ,一起程序员弯道超车之路 现已正式推出实时 AI 编程助手 Amazon CodeWhisperer,包括 CodeWhisperer 个人套餐,所有开发人员均可免费使用。最初于去年推出的预览版 CodeWhisperer 让开发人员能够保持专注、高效,帮助他们快速、安…...
面试准备-深入理解计算机系统-信息的表示与处理1
浮点运算是不可结合的(由于表示的精度有限)。比如(3.141e20)-1e20是0.0而3.14(1e20-1e20)是3.14。整数虽然只能编码一个较小的取值范围,但是是准确的;浮点数虽然能编码更大的范围,但是是近似的。 二进制转十六进制转换…...
搭建Atlas2.2.0 集成CDH6.3.2 生产环境+kerberos
首先确保环境的干净,如果之前有安装过清理掉相关残留 确保安装atlas的服务器有足够的内存(至少16G),有必要的hadoop角色 HDFS客户端 — 检索和更新Hadoop使用的用户组信息(UGI)中帐户成员资格的信息。对调…...
【运维笔记】swow源码编译安装
swow的github网址 https://github.com/swow/swow 从github中拉取源码 git pull https://github.com/swow/swow.git 编译安装 github中readme文件讲述了安装方法 这里整理了命令,进入拉取项目的目录后依次执行命令即可 #pwd 确保自己在swow目录中,如…...
【2023/10/16 下午10:32:39】
2023/10/16 下午10:32:39 BOOL Create(LPCTSTR strTitle, DWORD dwStyle, const RECT &rect, CWnd *pwndParent, DWORD dwPaletteSetStyle = PSS_PROPERTIES_MENU | PSS_AUTO_ROLLUP | PSS_CLOSE_BUTTON | PSS_SNAP); 2023/10/16 下午10:32:46 这是一个函数声明,看起来…...
qemu基础篇——VSCode 配置 GDB 调试
文章目录 VSCode 配置 GDB 调试安装 VSCode 插件调试文件创建调试配置配置脚本qemu 启动脚 启动调试报错情况一报错情况二报错情况三 调试界面运行 GDB 命令查看反汇编断点查看内核寄存器查看变量参考链接 VSCode 配置 GDB 调试 qemu-基础篇——arm 裸机调试环境搭建 上一节中…...
Spark常用算子
转换算子 value类型 算子名称作用Map映射a->bflatMap扁平化[[a,b],[c,d]] -> [a,b,c,d] ,二维变一维groupBy分组[1,2,3,4] ->[[1,3],[2,4] ],一维变二维filter过滤[1,2,3,4] -> [2,4] 符合条件进入,不符合去掉distinct去重[1,1…...
day35
今日内容概要 Socket抽象层(socket编程) 基于TCP协议的借助socket可以编程客户端和服务端的程序 链接循环 通信循环 基于UDP协议的套接字(socket)编程 粘包现象 如何解决粘包现象(重要的是解决的思路) struct模块的使用(打包、解包) 今日内容详细 Socket抽象层&#x…...
js原型链以及实现继承的手段
1.原型链 其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。 简单回顾一下构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。…...
jdk8u201版本cpu.load过高问题的排查和解决
文章目录 1、背景2、现象3、排查定位4、原因总结5、解决 1、背景 jdk8u45版本存在安全漏洞,性能问题。需要升级到8u201 2、现象 升级到201版本后,出现cpu.load过高 3、排查定位 使用压测工具压测时,cpu.load过高问题必现,确认…...
【计算机网络笔记】数据交换之报文交换和分组交换
系列文章目录报文交换分组交换存储-转发报文交换 vs 分组交换总结 系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 报文交换 报文:源(应用)发送的信息整体。比如一个文件、一…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
