简介
如下图所示,大部分人可能分不清犰狳和穿山甲,但是只需要看一下Support set(很小的数据集)中的图片,便可以辨认Query中是什么。 那么计算机能做到这种事吗?(我们知道,对于数量很小的数据集,是不足以训练一个深度神经网络的。)
few-shot learning 就是针对小样本分类问题的方法,他的目标不是让机器识别训练集中图片内容是什么,并且泛化到测试集,他的目标是让机器自己学会学习,让机器学会理解事物的异同。
大概步骤:
- 在一个很大的数据集上训练一个深度神经网络,让网络具有分辨异同的能力。
- 训练完毕后,测试下图所示这个问题。尽管训练集中没有松鼠这个类别(也就是说网络并不知道这是松鼠),但是网络已经具有分辨异同的能力,所以网络可以辨认出这是两张相同的图片。
?
- 换一种问法,给出一张Query图片,让神经网络给出类别,由于训练时并没有见过这个类别,所以神经网络无法辨别。所以需要增加一个Support Set包含这个类别,神经网络把Query与support set中的图片依次对比,选出最相似的。
注意训练集和Support Set的区别:训练集很大,用来训练一个深度神经网络。Support set很小,通常每类只有几张图片,用来在预测的时候提供额外信息。
Meta Learning
- few-shot learning is kind of meta learning
- Meta learning: learn to learn
举例:小朋友去动物园,并不认识眼前的动物,给他一堆卡片,小朋友翻过一遍卡片,便可以判断眼前是什么动物。
注意,前提是小朋友具有分辨异同的能力,这个能力的培养就是meta learning。
传统监督学习
Few shot learning
术语
预测准确率
预测准确率受Support set中类别与样本数量影响,如下图所示:
- 随类别数量增加降低:还是动物园的例子,给他三张卡片比给出六张卡片更容易选。
- 随每类样本数量增加而增加
Few shot基本思想
学习一个函数,判断相似度:
具体的:
常用数据集
Omniglot
只有几兆,类别多。有1600多个类,每类20个样本。
Mini-ImageNet
100类,每类600个样本,都是84*84的。