内容摘自王老师的B站视频,大家还是尽量去看视频,老师讲的特别好,不到一小时的时间就缕清了小样本学习的基础知识点~Few-Shot Learning (1/3): 基本概念_哔哩哔哩_bilibili
Few-Shot Learning(小样本分类)
假设现在每类只有一两个样本,计算机能否做到像人一样的正确分类?
-
这个例子Support Set有两类,每类只有一两个样本,靠这些样本,难以训练出一个深度神经网络,这个集合只能提供一些参考信息。对于小样本问题,不能用传统的分类方法。
小样本分类与传统的监督学习有所不同,小样本学习的目标不是让机器通过学习训练集中图片,知道哪类是什么样子;当我拿一个很大的训练集来训练神经网络后进行小样本分类,预训练模型的目的是让机器自己学会学习-----也就是学习事物的异同,学会区分不同的事物。
现在训练集有五类,其中并没有松鼠这个类别
训练完成之后,可以问模型这两张图片是否是相同的东西呢?这时候模型已经学会分辨了事物的异同,比如给出两张松鼠图片,模型知道这两个动物之间长得很像,模型能够告诉你两张图片很可能是相同的东西。
支持集
给出一张图片,神经网络不知道这是什么。
这时候就需要支持集(Support Set),每类给出少样本(1~2)张,神经网络将Query图片和支持集中的每个类别依次对比,找出最相似的。
训练集和支持集的区别
-
训练集规模很大,每类有很多张图片,可以训练一个深度神经网络
-
支持集每类只有一张或几张图片,不足以训练一个大的神经网络,只能在做预测时候提供一些额外信息。
-
用足够大的训练集训练的目的不是让模型识别训练集中的大象、老虎,而是知道事物的异同。对于训练的模型,只要提供含有该类别的小样本信息,模型就能区分类别,尽管训练集中没有这个类别。
小样本分类:Learn To Learn
带小朋友去动物园,小朋友不知道这个动物是什么,但是小朋友只需要翻一遍卡片(将目标与卡片上动物对应),就知道看到的动物是什么,这个卡片就是支持集,前提是小朋友有读卡片的能力,也就是得先经过训练学习。
如果卡片中每类只有一张,那就是One-Shot Learning(单样本学习)
传统监督学习 和 小样本学习 步骤的区别
-
传统监督学习:测试图片虽然不是训练集中图片,但包含在训练集类别,模型已经见过上千张该类别图片,能够判断出是哪类。
-
小样本学习:测试图片不但不包含在训练集中,也不是训练集中的类别。所以小样本学习比传统监督学习更难。因为不是训练集中的类别,所以要提供支持集,提供更多信息(给模型看小卡片,每张卡片有一个图片和一个标签,模型发现测试图片和某张卡片相似度高,就知道测试图片属于哪个标签)
小样本学习两个术语
-
k-way :支持集含有的种类数
-
n-shot : 支持集中每个种类有多少张图片
小样本学习预测准确率
-
横轴是支持集类别数量。随着类别数量增加,分类准确率会降低。
-
比如从三选一变成六选一
-
-
每类样本越多,做预测越容易
相似度函数
sim(x, x'), x,x'为两个input
理想情况:sim(x1,x2) = 1 , sim(x1,x3) = 0, sim(x2,x3) = 0