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

基于元学习(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预测。

以上图为例,将每一个类的平均特征堆叠得到矩阵\(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
相关推荐
救救孩子把3 小时前
14-机器学习与大模型开发数学教程-第1章 1-6 费马定理与极值判定
人工智能·数学·机器学习
救救孩子把3 小时前
11-机器学习与大模型开发数学教程-第1章1-3 极限与连续性
人工智能·数学·机器学习
OG one.Z3 小时前
01_机器学习初步
人工智能·机器学习
HyperAI超神经3 小时前
AI预判等离子体「暴走」,MIT等基于机器学习实现小样本下的等离子体动力学高精度预测
人工智能·神经网络·机器学习·ai·强化学习·可控核聚变·托卡马克
nju_spy4 小时前
华为AI岗 -- 笔试(一)
人工智能·深度学习·机器学习·华为·笔试·dbscan·掩码多头自注意力
OpenBayes6 小时前
教程上新|重新定义下一代 OCR:IBM 最新开源 Granite-docling-258M,实现端到端的「结构+内容」统一理解
人工智能·深度学习·机器学习·自然语言处理·ocr·图像识别·文档处理
C嘎嘎嵌入式开发6 小时前
【机器学习算法篇】K-近邻算法
算法·机器学习·近邻算法
ARM+FPGA+AI工业主板定制专家7 小时前
【JETSON+FPGA+GMSL】实测分享 | 如何实现激光雷达与摄像头高精度时间同步?
人工智能·数码相机·机器学习·fpga开发·机器人·自动驾驶
武子康7 小时前
AI-调查研究-105-具身智能 机器人学习数据采集:从示范视频到状态-动作对的流程解析
人工智能·深度学习·机器学习·ai·系统架构·机器人·具身智能
dingzd958 小时前
TikTok推荐算法快速解析
算法·机器学习·web3·facebook·推荐算法·tiktok·instagram