One-shot Learing/Few-shot Learning、Zero Shot Learning详解

版权声明:站在巨人的肩膀上学习。 https://blog.csdn.net/zgcr654321/article/details/84781136

Zero-shot Learing和One Shot Learning(又叫Few-shot Learning)都是迁移学习中的概念。

Zero-shot Learing:

就是训练样本里没有这个类别的样本,但是如果我们可以学到一个映射,这个映射好到我们即使在训练的时候没看到这个类,但是我们在遇到的时候依然能通过这个映射得到这个新类的特征。

如,训练样本是一些具有标签的小动物,如何猫和狗。但是测试样本是草泥马的图片,并且没有标签告诉你这个是草泥马。

如何解决呢?

第一个解决方案是进一步细化特征,比如说我们原来训练了猫,狗,然后用这个网络去测试一个我们都没有见过的物种,那么很明显是不能得到很好的结果的,那么如果是人,他就会进行推断。比如,这个物种,有几只眼睛几条腿。根据这些特征推断这个物种可能是哪种物种的变异体或者是近亲。 

举个例子,我们将动物的特征细化到是不是两个眼睛,是不是四条腿,是不是毛茸茸的,用多少条腿走路等特征,这样的话,训练的时候我们就可以训练出一个网络,这个网络可以识别出图片中特征的个数,这个时候当我们见到没有见过的生物的时候仍然可以通过特征对他们进行大致的识别和区分。

One-shot Learing/Few-shot Learning:

类别下训练样本只有一个或者很少,我们依然可以进行分类。比如我们可以在一个更大的数据集上或者利用knowledge graph、domain-knowledge 等方法,学到一个一般化的映射,也就是学习一个映射,然后再到小数据集上进行更新升级映射。

如:

为了完成识别新类(狗)的问题,于是需要新来一张标好 label 的样本(如 :有 label,样本是田园土狗, 称作 sample set 或 support set)用来泛化模型,那么再来 test 样本时候(如:无 label,样本是哈士奇,称作 query set 或者 test set),我们就可以把这个 哈士奇的样本 label 标出来,达到分类的目的。这种学习叫做 one-shot learning,即单样本学习。

同样的,如果刚才来的是一堆标好 label 的样本(除了田园土狗,可能还有京巴、吉娃娃、泰迪等做 support set),这种学习叫做 few-shot learning,即小样本学习,一般 few 不会大于 20。

一个相对严谨的定义:

即模型只有少量的有 label 的训练样本 S ,S 中包括 N 个样本,yi 代表各样本的 label。因为测试样本集中每个样本都有一个正确的类别,我们希望,再来新的待分类的测试样本 x’ 时候,正确预测出 x' 标签是 y'。如果把每个类别 yi 的单个样本换成 k个样本就变成了k-shot learning , few-shot一般指的是 k 不超过 20。

猜你喜欢

转载自blog.csdn.net/zgcr654321/article/details/84781136