few-shot learning, zero-shot learning, one-shot learning,any-shot learning, C-way K-shot,Meta-learn

-------------------------------------------------------------------------------------------------------

更新(2021.7.6):元学习(meta-learning)与机器学习(machine learning)

machie learning: 通常是单任务学习,每个任务有训练集和测试集,在训练集上训练模型,在测试集上测试模型。

meta-learning:是多任务学习。把所有的任务划分为训练任务和测试任务。每个训练任务都包含自己的训练集和测试集。每个测试任务也包含自己的训练集和测试集。

meta-learning的训练分为两个阶段:

    阶段1:利用每个训练任务的训练集预更新网络参数,计算预更新后的参数在这个训练任务的测试集上的损失。

    阶段2:汇总所有预训练任务测试集损失正式更新网络参数。

tip1:训练任务的测试集参与训练

tip2:测试任务完全不参与训练

参考:李宏毅 meta-learning 课程视频

------------------------------------------------------------------------------------------------------

最近读文献,发现有人用any-shot learning 的方法做异常检测问题,不理解什么意思,所以上网查了一下。

在网上搜索“any-shot learning”关键词时,发现提到最多的就是这篇文章:《f-VAEGAN-D2: A Feature Generating Framework for Any-Shot Learning》,这篇文章里是这么提到“any-shot learning”的: “In this paper, we tackle any-shot learning problems i.e. zero-shot and few-shot, in a unified feature generating framework that...”。可见文章是把any-shot learning作为zero-shot learning  和 few-shot learning的统称。

什么是few-shot learning和zero-shot learning 呢?

shot: 发射;炮弹;射手;镜头。 在这里可以理解为“样本”的意思。few-shot和zero-shot的意思就是:在分类任务中,针对某个特定类别,在训练集中仅仅只有少量属于该类别的样本(few-shot)或没有属于该类别的样本(zero-shot)。one-shot learning 是few-shot learning的一个特例,即该在训练集中仅有一个属于该类别的样本。

few-shot learning,zero-shot learning,one-shot learning,any-shot learning可以翻译为如下(个人认为):

  • few-shot learning : 少样本学习。 (许多人喜欢翻译为小样本学习,我觉得翻译为小样本容易引起误导为:小“尺寸”样本学习)
  • one-shot learning:单样本学习
  • zero-shot learning:零样本学习
  • any-shot learning:任意样本学习。(个人理解,可以理解成是对few-shot 情况和zero-shot情况都适用的学习方法,或者也对大量样本情况也适用的学习方法,或者,适应于极端样本不平衡情况的学习方法。)

一个关于few-shot learning 的形象的示意图,

few-shot learning


 few-shot learning 中涉及到的一些概念:

N-way, K-shot: 在我们的训练集中共有N个类别,每个类别只有K个样本。即,我们的训练集中一共只有N*K个样本。示意图如下(5-way 1-shot 情况,图片来自论文《Optimization as a Model for Few-Shot Learning.》):

                         å¨è¿éæå¥å¾çæè¿°

Meta-learning(元学习):在没有任何背景先验知识的情况下进行few-shot learning是非常困难的,即使人也不可能。所以解决few-shot learning的常用策略是使用迁移学习,先在一个别的、与few-shot任务有关联的任务上训练网络,使网络先具有一些先验知识(prior,meta Knowledge(元知识)),然后再在few-shot任务上进行训练。

这个在相关联的其他任务上训练网络的过程称为元学习的训练阶段meta-training(元学习训练过程)。该阶段学到的知识称为meta Knowledge(元知识)。

将元学习训练阶段得到的模型在当前任务上在训练的过程,称为元学习的测试阶段meta-testing.

比如,我们要训练一个网络去识别熊猫,但是我们只有一张熊猫的照片,如果只用这一张熊猫的照片去从零训练一个网络,那么这个网络的泛化性很可能会不好(很可能只能认识这一张照片是熊猫,熊猫换个姿态或测面就不认识了,也有可能把猪,狗等也误判成熊猫,一切都有可能)。        但是我们有大量的猪,狗,鸡,鸭,鱼,鹅,鸟的标记图片,我们可以先用这些图片去训练网络,使网络对这些类别有识别能力,即使网络具有一些识别目标的初级能力。这个训练过程就是元学习或meta-training,这个阶段学到的知识就叫元知识。然后,我们可以用熊猫图片去训练已具有元知识的网络。这样我们可以期待新训练得到的网络在对熊猫的识别任务上具有较好的泛化能力(不但认识训练集中的熊猫图片,熊猫换个姿势,角度也能认识)。这个用熊猫图片训练网络的过程称为meta-testing。

元学习过程,尤其meta-training阶段,一般是一个多任务学习,即,训练一个网络,使这个网络能完成多种相关任务。每一个元学习过程中的任务都包含自己的训练集和测试集。为了避免每个任务的“训练集”与“测试集”的命名与meta-trainingmeta-testing混淆,我们把每个元学习任务中的训练集称为 support set, 测试集称为 query set.

如下图所示:


 few-shot learning 作为一个单独的研究方向,具有多个数据集:如miniImagenettiered-imagenetomniglotCIFAR-FSCUB-200-2011。这些数据集包含很多类别的样本,每个类别也有许多样本。在使用这些数据集做few shot learning时,通常的策略是:在meta-training 阶段,从所有类别中随机抽取N个类别,每个类别提取K个样本作为 support sets,这N个类别的剩余样本或剩余样本的采样作为query sets。这就是N-way K-shot的问题了。

示例说明如下:

如上描述,\boldsymbol{D}_{base}就是 meta-training阶段使用的数据,\boldsymbol{D}_{novel}就是meta-testing阶段使用的数据。无论是\boldsymbol{D}_{base}还是\boldsymbol{D}_{novel}都包含support set与query set。


参考博客:few-shot learning是什么

                 few-shot learning——图神经网络专题

备注:我不是做few shot learning方向的,以上仅是我的课题有算法涉及到这方面的知识,所以了解一下,并不深入。如果有理解错误的地方希望指正。

### 回答1: n-way-k-shot是一种机器学习方法,在这个过程中,我们需要从n个类别中选择k个样本进行学习。该方法的具体流程如下: 1. 首先,从n个分类中选择需要学习的k个样本。通常,这些样本是从许多不同的图像中挑选出来的。 2. 然后,使用这些样本来训练模型,以便让模型可以通过图像将不同的类别分类。 3. 在针对新数据集中的新类别进行分类时,模型可以使用其之前学习到的知识来进行分类。 总的来说,n-way-k-shot是一种有效的机器学习方法,可以使模型能够快速分类新的数据集并且准确地分类它们。 ### 回答2: n-way-k-shot是一种常见的多分类任务评估方法,其流程如下: 1. 数据准备:首先,我们需要准备用于训练和测试的数据集。数据集中的每个样本都有一个标签,表示其所属的类别。我们将数据集分为训练集和测试集,确保每个类别的样本数量均匀分布。 2. 模型训练:我们使用训练集来训练一个模型。在训练阶段,模型通过观察不同类别的样本来理解类别之间的区别和共性。可以使用各种机器学习算法或深度学习模型进行训练。 3. 模型评估:接下来,我们使用测试集来评估已经训练好的模型的性能。在传统的分类任务中,我们通常会计算准确率或混淆矩阵等评估指标。但在n-way-k-shot任务中,评估方法略有不同。 4. 测试样例的选择:在n-way-k-shot评估中,我们首先从测试集中选择n个类别(称为n-way),然后从这n个类别中随机选择k个样本(称为k-shot)。这些样本将用于评估模型。 5. 特征提取:随后,我们使用已经训练好的模型对测试样例进行特征提取。特征可以是模型的中间层输出或模型的某些参数。 6. 相似度度量:对于每个测试样例,我们计算其特征与训练集中每个类别的特征之间的相似度。通常使用欧式距离或余弦相似度等度量方法。 7. 预测结果:根据相似度度量的结果,我们选择与测试样例特征最相似的k个训练样例作为预测结果。这些训练样例所属的类别作为预测结果的输出。 8. 评估模型性能:最后,我们将预测结果与测试集的真实标签进行比较,计算模型在n-way-k-shot任务上的准确率或其他评估指标。 通过以上流程,n-way-k-shot任务能够更好地评估模型的泛化能力,即在少样本情况下对新类别的分类能力。 ### 回答3: N-way-k-shot是指在机器学习领域中用于评估和比较模型性能的一种方法。它的具体流程可以描述如下: 1. 数据准备:首先需要准备好用于训练和测试的数据集。数据集应该包含n个不同的类别,每个类别有k个样本。假设有m个类别,那么总的样本数量为n * k * m。 2. 划分训练集和测试集:将准备好的数据集划分为训练集和测试集。通常情况下,训练集用于训练模型,而测试集用于评估模型的性能。 3. 训练模型:使用划分好的训练集对模型进行训练。训练的过程可以根据具体的机器学习算法进行,例如神经网络、支持向量机等。 4. 测试模型:使用划分好的测试集对训练好的模型进行测试。对于每个测试样本,模型将预测它属于哪一个类别。 5. 性能评估:对模型的性能进行评估。常用的评估指标包括准确率、精确率、召回率等。可以计算每个类别的指标,以及整体的指标。 6. 重复步骤2至5:为了获得更具统计意义的评估结果,需要多次重复步骤2至5。每次重复时采用不同的训练集和测试集划分,以及不同的训练和测试样本。 7. 汇总结果:将多次重复得到的评估结果进行汇总,可以计算平均值和标准差,从而更准确地评估和比较模型的性能。 总之,N-way-k-shot方法通过多次划分训练集和测试集,并对模型进行多次训练和测试,以获得更具统计意义的性能评估结果。这种方法可以更全面地评估模型在多个类别上的性能,帮助选择最佳模型或算法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值