Zero-shot、Few-shot和One-shot

本文最后更新于:2024年3月18日 晚上

One-shot

公司门禁用了人脸识别,你只提供一张照片,门禁就能认识各个角度的你,这就是 one-shot。可以把 one-shot 理解为用 1 条数据 finetune 模型。

Zero-shot

即,利用已有的数据和知识,来推理辨认模型从没见过的数据,也就是“0条没见过的数据”

例子:

小明和爸爸,到了动物园,看到了马,然后爸爸告诉他,这就是马;之后,又看到了老虎,告诉他:“看,这种身上有条纹的动物就是老虎。”;最后,又带他去看了熊猫,对他说:“你看这熊猫是黑白色的。”然后,爸爸给小明安排了一个任务,让他在动物园里找一种他从没见过的动物,叫斑马,并告诉了小明有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后,小明根据爸爸的提示,在动物园里找到了斑马

定义:

  1. 有训练集数据XtrX_{tr}及其标签YtrY_{tr},包含了模型需要学习的类别(马、老虎、熊猫)
  2. 有测试集数据XteX_{te}及其标签YteY_{te},包含了模型需要识别的类别(斑马)
  3. 有训练集数据和测试集数据的描述AtrAteA_{tr},A_{te},将每个类别yiYy_i \in Y,都表示成一个语义向量aiAa_i \in A的形式,这个向量的每个维度都是一个具体的属性,例如有嘴巴,有尾巴,有眼睛…,当这个类包含这个属性时,该维度的值设为非零值
  4. 希望使用XtrAtrYtrX_{tr},A_{tr}和Y_{tr}来训练模型,然后希望模型能够根据AteA_{te}来识别XteX_{te},就是Zero-shot的目的

方法:

  1. 将图片数据XX通过GoogleNet等模型提取图片特征数据,称之为特征空间
  2. 将类别的语义化表示AA,称为语义空间
  3. 需要做的就是将特征空间映射到语义空间,或者将语义空间映射到特征空间,例如使用岭回归的方法
  4. xiXtex_i \in X_{te}特征空间映射到语义空间后,计算离它最近的aiAtea_i \in A_{te},则该样本对应的标签即为aia_i所对应的标签yiy_i

Few-shot

few-shot即是因为Zero-shot的效果不尽人意,因此人为地标注了少量(few)优质数据加入训练以提高模型准确率。


零次学习(Zero-Shot Learning)入门 (zhihu.com)
数据集案例Describing Objects by their Attributes (uiuc.edu)


Zero-shot、Few-shot和One-shot
http://starnight.top/2023/11/01/Zero-shot、Few-shot和One-shot/
作者
Cardy Xie
发布于
2023年11月1日
许可协议