当前位置: 首页 > news >正文

few shot learnning笔记

课程地址 https://youtu.be/hE7eGew4eeg?si=KBM0lY7eY_AdD8Wr
PPT地址 https://github.com/wangshusen/DeepLearning
第一节 Few-Shot Learning Basics
第二节 Siamese Network
第三节 Pretraining + Fine Tuning

(以图像识别举例)

基础

support set:数量很少的样本集合,为模型完成任务而提供更多的信息。
query:模型的输入样本,其并未出现在训练集中,其所属类别肯定包含在支持集中。

小样本学习(few shot learnning)是一种元学习(meta learning)方法。
元学习:自己学会学习(learn to learn)。

监督学习:测试样本之前并未见过(这个样本并不在训练集中),样本属于已知类(这个类别在训练集中有)。
小样本学习:查询样本之前并未见过,样本属于未知类。

k-way:支撑集有k类,k越大预测准确率越低。
n-shot:每个类别有n个样本,n越大预测准确率越高。
称呼支持集时,带上前缀k-way n-shot support set。

小样本学习的基本思想:学习一个相似度函数(similarity function)。
1、用一个很大的训练集学习一个相似度函数。
2、给定一个query样本,用相似度函数与support set判断出其所属类别(计算support set中的样本与query样本的相似度,取相似度最高的类别作为预测)

下面介绍两种方法:连体网络,预训练+微调。

siamese network(连体网络,孪生网络)

将训练集 D = { I 1 , . . . , I n } D=\{I_1, ..., I_n\} D={I1,...,In}重新构造为包含同样数量的正样本与负样本的新训练集。
正样本: ( I i , I j ) (I_i, I_j) (Ii,Ij),两张图像属于同一类,其标签为1。
负样本: ( I i , I j ) (I_i, I_j) (Ii,Ij),两张图像属于不同类,其标签为0。

给卷积神经网络 f ( ⋅ ) f(\cdot) f()输入正样本,其输出为输入的特征:
h i = f ( I i ) h_i = f(I_i) hi=f(Ii)
h j = f ( I j ) h_j = f(I_j) hj=f(Ij)
z i j = ∣ h i − h j ∣ z_{ij} = |h_i - h_j| zij=hihj
z i j z_{ij} zij输入至全连接层,得到一个标量,预测两个图片间的相似度,其中激活函数用sigmoid,输出区间为 [ 0 , 1 ] [0,1] [0,1]
注: h , z h, z h,z为向量

计算样本的标签与预测值的损失函数,反向传播更新卷积网络与全连接网络的权重。

预测:
将支持集中的所有样本分别与query构造成一对新样本 ( q , s i ) (q,s_i) (q,si)输入给网络,预测两者相似度。
选出相似度最高的一对样本 ( q , s j ) (q,s_j) (q,sj),query便属于 s j s_j sj的类别。

triplet loss

这是另一种训练卷积神经网络的方法。

训练集中随机抽样作为一个anchor(锚点)。
从achor所属的类别中随机抽样一个样本,记为正样本。
再从除achor所属的类别外的剩余训练集中随机抽样一个样本,记为负样本。

三个样本同时输入卷积网络:
f ( x + ) , f ( x a ) , f ( x − ) f(x^+), f(x^a), f(x^-) f(x+),f(xa),f(x)
计算特征间的距离:
d + = ∣ f ( x + − f ( x a ) ) ∣ 2 d^+ = |f(x^+ - f(x^a))|_2 d+=f(x+f(xa))2
d − = ∣ f ( x − − f ( x a ) ) ∣ 2 d^- = |f(x^- - f(x^a))|_2 d=f(xf(xa))2
注: d d d为标量

计算损失函数:
如果 d − ≥ d + + α d^- \geq d^+ + \alpha dd++α,则 l o s s = 0 loss=0 loss=0;否则 l o s s = d + + α − d − loss=d^+ + \alpha - d^- loss=d++αd
其中, α > 0 \alpha > 0 α>0
注:上述就是max函数。
补充:卷积神经网络将图片映射为特征空间中的一点

通过损失函数,训练出卷积网络 f ( ⋅ ) f(\cdot) f()

预测:
通过 f ( ⋅ ) f(\cdot) f()计算query与所有支持集样本的特征,然后计算出query与所有支持集样本的距离 d ( q , s i ) d(q,s_i) d(q,si)
选出距离最近的一对样本 ( q , s j ) (q,s_j) (q,sj),query便属于 s j s_j sj的类别。

预训练与微调

两个向量的cosine similarity: c o s θ = x T w / ( ∣ x ∣ 2 ⋅ ∣ w ∣ 2 ) cos \theta = x^Tw/(|x|_2 \cdot |w|_2) cosθ=xTw/(x2w2)
如果 x , w x,w x,w为单位向量,则 c o s θ = x T w cos \theta = x^Tw cosθ=xTw,即相似度为两个单位向量内积。
单位向量内积较大表示,一个向量在另一个向量上的投影较大。

softmax函数:将向量 ϕ \phi ϕ映射为一个概率分布 p p p
p i > 0 , Σ i p i = 1 p_i > 0, \Sigma_i p_i = 1 pi>0,Σipi=1.

预训练(pretraining)一个卷积网络用于特征提取。
注:特征提取也称embeding。

(以3-way 2-shot support set举例)
支撑集每个类别的特征向量为该类所有样本的特征向量求平均,再进行归一化,得到 μ 1 , μ 2 , μ 3 \mu_1, \mu_2, \mu_3 μ1,μ2,μ3
同理,对query也做同样的步骤,得到 q q q

矩阵 M = [ μ 1 μ 2 μ 3 ] M = \begin{bmatrix} \mu_1 \\ \mu_2 \\ \mu_3\end{bmatrix} M= μ1μ2μ3

计算一个三维向量 p = s o f t m a x ( M q ) p = softmax(Mq) p=softmax(Mq)
p p p中最大元素为 p i p_i pi,则 q q q属于支持集中的 i i i

微调

在卷积网络后面接一层全连接: p = s o f t m a x ( W ⋅ f ( x ) + b ) p = softmax(W \cdot f(x) + b) p=softmax(Wf(x)+b)

之前不进行微调,即 W = M , b = 0 W=M, b=0 W=M,b=0,而学习 W , b W,b W,b称为微调。

损失函数: l o s s = c o r s s E n t r o p y ( y , p ) loss = corssEntropy(y, p) loss=corssEntropy(y,p)
其中, y y y为真实标签,是一个one hot向量。
反向传播,训练出 W , b W,b W,b

介绍三个小技巧:
1、初始化权重 W = M , b = 0 W=M, b=0 W=M,b=0
2、为防止过拟合,加入正则化。(下面介绍熵正则化)
一个query预测结果为 p = s o f t m a x ( W ⋅ f ( x ) + b ) p = softmax(W \cdot f(x) + b) p=softmax(Wf(x)+b)
H ( p ) = − Σ i p i l o g ( p i ) H(p)=-\Sigma_i p_i log(p_i) H(p)=Σipilog(pi)
熵正则化为所有query的熵的平均。
我们希望熵正则化越小越好。
3、结合余弦相似度与softmax分类器,即先将 W W W的行向量与 f ( x ) f(x) f(x)作归一化,再计算矩阵向量乘积。
p = s o f t m a x ( W ⋅ f ( x ) + b ) p = softmax(W \cdot f(x) + b) p=softmax(Wf(x)+b)

相关文章:

few shot learnning笔记

课程地址 https://youtu.be/hE7eGew4eeg?siKBM0lY7eY_AdD8Wr PPT地址 https://github.com/wangshusen/DeepLearning 第一节 Few-Shot Learning Basics 第二节 Siamese Network 第三节 Pretraining Fine Tuning(以图像识别举例) 基础 support set&…...

2022最新版-李宏毅机器学习深度学习课程-P25 Spacial Transformer Layer

data augmentation/spacial transformer CNN 并不能够处理影像放大缩小,或者是旋转的问题。所以在做影像辨识的时候,往往都要做 Data Augmentation,把你的训练数据截一小块出来放大缩小、把图片旋转,CNN 才会做到好的结果。 有一个架构叫 spacial Tran…...

轻松上手,制作电子期刊就这么简单

嗨,年轻的朋友们!你是否想过用你的创意和热情来制作一本属于自己的电子期刊?现在,这个梦想已经触手可及!只需要用到这款工具即可轻松上手,就能拥有自己的电子期刊 工具:FLBOOK在线制作电子杂志平…...

网络电视机顶盒怎么样?内行揭晓网络电视机顶盒排名

网络电视机顶盒怎么样?可以说是家家户户不可或缺的部分,但很多朋友买回家发现经常死机和卡顿,究竟要如何选择才不踩坑呢?我身为业内人士给各位分享业内最新发布的网络电视机顶盒排名,跟着我一起看看哪些网络机顶盒最值…...

2023秋招华为技术岗线上面试经历

2023/10/16 个人情况:博士,预计2024年毕业,参加了2023秋招,华为应聘到3面主管面。 下面按招聘流程顺序,记录我的面试经历。因为想写详细一点的独立文章,所以想来想去还是放到CSDN上。 1. 宣讲会 宣讲会…...

保姆级VitrualBox下载ubantu

首先先到此处下载VitrualBox选择对应的配置 Oracle VM VirtualBox 下载VitrualBox的同时要下载一个Visual,支持VitrualBox运行 最新受支持的 Visual C 可再发行程序包下载 | Microsoft Learn 同时再根据下面的网址去下载Ubantu 下载好后桌面出现这两个&#xff0c…...

【学习笔记】RabbitMQ-6 消息的可靠性投递2

参考资料 RabbitMQ官方网站RabbitMQ官方文档噼咔噼咔-动力节点教程 文章目录 十一、队列Queue的消息属性11.1 具体属性11.2 自动删除11.2 自定义参数11.2.1 **Message TTL** 消息存活时间11.2.2 **Auto expire** 队列自动到期时间11.2.3 **Overflow behaviour** 溢出行为11.2.4…...

黑豹程序员-知识点-写一个bat一次执行多条命令

start cmd 执行命令行窗口 /c 执行完命令就关闭,/k执行完命令不关闭 执行多条命令,命令直接使用&&连接 echo onstart cmd /k "pnpm create vite vhello --template vue && cd vhello && pnpm install && pnpm run…...

从头开始机器学习:线性回归

一、说明 本篇实现线性回归的先决知识是:基本线性代数,微积分(偏导数)、梯度和、Python (NumPy);从线性方程入手。 代码/注释存储库链接 拉曼欣德 GitHub - ramanthind02/Machine_learning_from…...

1-k8s1.23.6-底座搭建-基于docker

这里写自定义目录标题 一、服务器准备二、安装docker三、安装k8s四、安装部署dashboard 一、服务器准备 服务器准备 服务器名称服务器IP角色CPU(最低要求)内存(最低要求)master192.168.248.10master2核2Gworker1192.168.248.11node2核2Gworker2192.168.248.12node2核2G 修改ip&…...

【SA8295P 源码分析 (一)】76 - Thermal 功耗 之 /dev/thermalmgr 相关调试命令汇总

【SA8295P 源码分析】76 - Thermal 功耗 之 /dev/thermalmgr 相关调试命令汇总 1、配置文件:/mnt/etc/system/config/thermal-engine.conf2、获取当前SOC所有温度传感器的温度:cat /dev/thermalmgr3、查看所有 Thermal 默认配置和自定义配置:echo query config > /dev/th…...

每日汇评:随着上升趋势的恢复,黄金在1950美元上方等待破位

周三早间,黄金价格逼近1950美元,买家纷纷出手; 尽管市场情绪谨慎,但美元与美债交投疲弱,中国的乐观情绪逐渐消退; 金价重拾200日移动均线,但料持续升穿1950美元; 金价正从每盎司1943…...

postgresql字符串处理的函数

1. SPLIT_PART SPLIT_PART() 函数通过指定分隔符分割字符串,并返回第N个子串。语法: SPLIT_PART(string, delimiter, position) string : 待分割的字符串 delimiter:指定分割字符串 position:返回第几个字串,从1开始&…...

(1)攻防世界web-Training-WWW-Robots

1.开启环境,查看网页 翻译一下 2.前往robots.txt 命令:http://61.147.171.105:57663/robots.txt 3.前往fl0g.php 命令:http://61.147.171.105:57663/fl0g.php 4.得到flag cyberpeace{92ec1ef9b6d900100399093b9ae9e386}...

list.set交换数据需要(or不需要)添加其他中间变量,两个例子告诉你

说明:set()方法是来修改指定位置的元素。 两个参数,第一个参数是要修改的元素的索引,第二个参数是要设置的新值。 案例一:当链表中传入的是字符串时: public static void main(String[] args) {List list new Linke…...

Linux中的主要系统调用

Linux 操作系统中就是创建进程。创建进程的系统调用叫fork。在 Linux 里,要创建一个新的进程,需要一个老的进程调用 fork 来实现,其中老的进程叫作父进程(Parent Process),新的进程叫作子进程(C…...

在vscode中配置git bash终端、git 源码管理

打开vscode文件->首选项->设置,打开设置搜索shell windows将以下配置添加到vscode中的settings.json中 注意: terminal.integrated.profiles.windows这个配置项是就是添加终端的terminal.integrated.defaultProfile.windows这个是配置默认选项的…...

(三十四)大数据实战——scala运行环境安装配置及IDEA开发工具集成

前言 本节内容我们主要介绍一下scala运行环境的安装配置以及在idea开发工具中集成scala插件,便于scala项目的开发。 在开始scala安装配置之前,我们要先安装好jvm运行环境,scala运行于Java虚拟机(JVM)上,并…...

Double 4 VR智能互动教学系统的教学应用

1. 激发学习兴趣 Double 4 VR智能互动教学系统通过虚拟现实技术为学生创造了一个身临其境的学习环境。学生可以通过戴上VR头盔,进入虚拟世界中与教学内容互动。这种沉浸式的学习方式能够激发学生的学习兴趣,使他们更加主动地参与到课堂中来。 2. 提供直…...

GPU 驱动下载记录

1. 我的GPU 是这个:GeForce RTX 2060 下载链接是:Official Drivers | NVIDIA...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

Web后端基础(基础知识)

BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...

go 里面的指针

指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...