首页 > 其他分享 >解决Few-shot问题的两大方法:元学习与微调

解决Few-shot问题的两大方法:元学习与微调

时间:2023-11-11 11:12:52浏览次数:37  
标签:task shot 训练 微调 学习 Few mathrm

基于元学习(Meta-Learning)的方法:

Few-shot问题或称为Few-shot学习是希望能通过少量的标注数据实现对图像的分类,是元学习(Meta-Learning)的一种。

Few-shot学习,不是为了学习、识别训练集上的数据,泛化到测试集,而是为了让模型学会学习。也就是模型训练后,能理解事物的异同、区分不同的事物。如果给出两张图片,不是为了识别两张图片是什么,而是让模型知道两张图片是相同的事物还是不同的事物。

Few-shot可以被定义为K-way,N-shot问题,表示支持集有k个类别,每个类别有n个样本。不同于训练深度深度神经网络每个类有大量样本的数据集,Few-shot的训练数据集规模很小

Meta-Learning的核心思想就是先学习到一个先验知识(prior),这需要经历多个task的训练,每个task的分为支持集(support set)和查询集(query set),支持集包含了k个类、每个类n张图,模型需要对查询集的样本进行归类以训练模型的学习能力。

经过了很多个task学习先验知识,才能解决新的task,新的task涉及的类,不包含在学习过的task! 我们把学习训练的task称为meta-training task,新的task称为meta-testing task。最后的评价指标就是根据红色部分表现结果。

meta training task
support query
support query
...
support query
meta testing task
support query

需要注意查询集和测试集的区别,因为在Few-shot训练过程也有查询集,在Few-shot测试中,接触的支持集和测试集都是全新的类。

Supervised Learning vs. Few-shot Learning

传统监督学习 Few-shot 学习
测试样本未在训练集中见过 查询样本没见过
测试样本的类在训练集中见过 查询样本的类属于未知

基于微调(Fine-Tuning)的方法:

基于微调的Few-shot方法封为三个步骤:

  1. 预训练:使用模型在大规模的数据集进行预训练作为特征提取器\(f\)。
  2. 微调:在支持集上训练分类器。
  3. Few-shot预测:
    1. 将支持集上的图像通过分类器转为特征向量;
    2. 对每一个类的特征向量求平均,得到类的特征向量:\(\mu_1,\dots,\mu_k\);
    3. 将查询的特征与\(\mu_1,\dots,\mu_k\)比较。

先省略第二步的微调,看看一般的预训练Few-shot预测。

图片来源[3] 图片来源[3]

以上图为例,将每一个类的平均特征堆叠得到矩阵\(M\in\mathbb{R}^{3\times n}\),这里\(n\)表示特征数。

\[M =\begin{bmatrix} \mu_1 \\ \mu_2 \\ \mu_3 \end{bmatrix}\tag{1} \]

将查询的图片提取特征、做归一化得到\(q\in\mathbb{R}^{1\times n}\),并进行预测。

\[p = \mathrm{Softmax}(Mq) \tag{2} = \mathrm{Softmax}(\begin{bmatrix} \mu_1^Tq \\ \mu_2^Tq \\ \mu_3^Tq \end{bmatrix}) \]

本例中,输出的第一类的概率最大。

归纳一下上述使用预训练模型预测查询集图像的步骤:

  1. 设置查询集的标记样本:\((x_j,y_j)\)。
  2. 用预训练模型提取特征:\(f(x_j)\)。
  3. 进行预测:\(p_j = \mathrm{Softmax}(W\cdot f(x_j)+b)\)。

以上固定了\(W=M, b=2\)。但可以在支持集进行训练,微调\(W\)和\(b\)。于是设置损失函数去学习\(W\)和\(b\),由于支持集较小,需要加入正则项防止过拟合:

\[\min\sum_j\mathrm{CrossEntropy}(y_j,p_j)+\mathrm{Regularization}\tag{3} \]

大量实验证明,微调确实能提高精度。以下是一些常用的技巧:

  1. 对于预测分类器\(p=\mathrm{Softmax}=(W\cdot f(x)+b)\),可以进行初始化\(W=M,b=0\)。
  2. 对于正则项的选择可以考虑Entropy Regularization,相关的解释可以参考文献[3]。
  3. 将余弦相似度加入Softmax分类器,即:

\[p=\mathrm{Softmax}=(W\cdot f(x)+b)=\mathrm{Softmax}(\begin{bmatrix} w^T_1q+b_1 \\ w^T_2q+b_2 \\ w^T_3q+b_3 \end{bmatrix}) \\ \Downarrow \\ p=\mathrm{Softmax}(\begin{bmatrix} \mathrm{sim}(w_1,q)+b_1 \\ \mathrm{sim}(w_2,q)+b_2 \\ \mathrm{sim}(w_3,q)+b_3 \end{bmatrix}) \tag{4} \]

其中\(\mathrm{sim}=\frac{w^Tq}{\lVert w\rVert_2\cdot \lVert q\rVert_2}\)。

对比

基于两种方式解决Few-shot问题的对比

元学习(Meta-Learning) 微调(Fine-Tuning)
策略 基于元学习的方法旨在通过在元任务上训练来使模型学会更好地适应新任务。它们通常涉及在多个元任务(task)上进行训练,以使模型能够从不同任务中学到共性。 基于微调的方法通常涉及在一个预训练的模型上进行微调,以适应特定的 few-shot 任务。在训练阶段,模型通常会使用大规模的数据集进行预训练,然后在少量训练数据上进行微调。
适用性 基于元学习的方法特别适用于 few-shot 任务,因为它们的目标是使模型从少量示例中快速学习。它们在少量数据和新任务上通常表现出色。 基于微调的方法在具有大量预训练数据的情况下通常表现出色。它们适用于很多不同类型的任务,但在数据稀缺或新领域的 few-shot 问题上可能表现不佳。
泛化能力 基于元学习的方法旨在提高模型在新任务上的泛化能力,因为它们通过从多个元任务中学习共性来实现这一目标。它们在适应新任务和未见数据上的表现通常较好。 基于微调的方法通常在预训练领域上有较强的泛化能力,但在新任务上的泛化能力可能有限,特别是当训练数据非常有限时。

参考文献

  1. Few-shot learning(少样本学习)入门
  2. Few-shot learning(少样本学习)和 Meta-learning(元学习)概述
  3. 小样本学习 Few-Shot Learning

标签:task,shot,训练,微调,学习,Few,mathrm
From: https://www.cnblogs.com/zh-jp/p/17825659.html

相关文章

  • 波士顿大学「鸭嘴兽-70B」登顶Hugging Face大模型排行榜!高效数据集+独特LoRA微调是关
    HuggingFace上的开源大模型排名榜又更新了,这次荣登榜一的是:鸭嘴兽(Platypus2-70B)!和现在抱脸开源榜单上大部分的模型一样,鸭嘴兽是来自波士顿大学的研究人员基于Llama2微调而来。同时,鸭嘴兽的进步就像之前所有的开源大模型那样:在提升性能的同时,使用更少的计算资源和数据。一个13B的......
  • 【论文阅读笔记】【OCR-文本检测】 Few Could Be Better Than All: Feature Sampling
    CVPR2022读论文思考的问题论文试图解决什么问题?一些基于DETR的方法在ICDAR15,MLT17等文字尺度变化范围较大的数据集上文本检测的效果不佳DETR运用的高层特征图难以捕捉小文字的特征,且会引入很多无关的背景噪声,增加了检测的困难程度即使使用DETR的改进模型......
  • 第五周阅读笔记|人月神话————胸有成竹(Calling the Shot)
    这个章节标题是胸有成竹,而要做到胸有成竹就必须在项目计划阶段我们对项目的预测和估算都需要很准确。因此整个章节的内容就是在讲估算,而估算就涉及到预测和估算模型,估算要做到准确必须通过前期多个历史项目和版本的积累,同时通过历史版本和数据的积累来发现预测指标Y和相应......
  • 论文阅读:Prototypical Networks for Few-shot Learning
    PrototypicalNetworksforFew-shotLearning摘要我们提出了原型网络,用于解决少样本分类问题,在这种情况下,分类器必须对训练集中未见的新类进行归纳,而每个新类只有少量的例子。原型网络学习一个度量空间,在这个空间中,可以通过计算与每个类别的原型表示的距离来进行分类。与最近的少......
  • 快照snapshot
    快照snapshot快照功能通常是以写入时复制技术来实作。Linux通过逻辑卷轴管理员实作快照功能。写入时复制写入时复制(英语:Copy-on-write,简称COW)是一种计算机[程序设计]领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获......
  • 【论文阅读笔记】【SAM相关】 Matcher: Segment Anything with One Shot Using All-Pu
    读论文时思考的问题论文试图解决什么问题?如何更好地建立视觉方面的fundationmodel如何建立一个模型,使得其在没有人类输入信号的情况下(这里主要是one-shotimage)能更好地挖掘SAM的能力,实现相同的语义元素(好像不一定要求是一个实例)的分割(并提取割出来的物体的语义信息?)......
  • gerrit 快捷键说明 shotcuts 说明
    gerrit是一个git仓库,可以快速的对比代码的不同。下面记录一下快捷键NavigationwithinthereviewUIcanbecompletelydonebykeys,andmostactionscanbecontrolledbykeyboardshortcuts.Typing?opensapopupthatshowsalistofavailablekeyboardshortcu......
  • 使用 DDPO 在 TRL 中微调 Stable Diffusion 模型
    引言扩散模型(如DALL-E2、StableDiffusion)是一类文生图模型,在生成图像(尤其是有照片级真实感的图像)方面取得了广泛成功。然而,这些模型生成的图像可能并不总是符合人类偏好或人类意图。因此出现了对齐问题,即如何确保模型的输出与人类偏好(如“质感”)一致,或者与那种难......
  • chatGPT发展中Few-Shot, Zero-Shot & One-shot 的通俗理解
    先解释one-shot。公司门禁用了人脸识别,你只提供一张照片,门禁就能认识各个角度的你,这就是one-shot。可以把one-shot理解为用1条数据finetune模型。在人脸识别场景里,one-shot很常见。zero-shot与few-shot,回到NLP场景。用wikipedia、新闻等,训练一个GPT模型,直接拿来......
  • 论文阅读:Few-Shot Point Cloud Semantic Segmentation via Contrastive Self-Supervis
    Few-ShotPointCloudSemanticSegmentationvia ContrastiveSelf-SupervisionandMulti-ResolutionAttention基于对比自我监督和多分辨率注意力的小样本点云语义分割摘要本文提出了一种适用于现实世界应用的有效的小样本点云语义分割方法。现有的点云小样本分割方法在很大程......