基本概念
Few-Shot Learning与传统监督学习的不同
Few-Shot Learning的数据集一般包括:training set
,support set
和query
。
Few-Shot Learning的目标是让模型能够在一个很大的training set上学会区分事物的能力,而不是学会对training set上的样本进行分类的能力(这是传统监督学习做的事情)。
Traditional supervised learning:
- Test samples are never seen before.
- Test samples are from known classes.
Few-Shot learning:
- Query samples are never seen before.
- Query samples are from unknown classes.
support set与training set的区别:
- 区别体现在数据量上,training set(成百上千)很大,大到能够训练一个DNN。而support set很小很小(个位数),不足以训练一个DNN,support set只能在predict的时候提供一些额外的信息。
k-way n-shot Support Set
- k-way: the support set has k classes.
- n-shot: every class has n samples.
k值大小与模型accuracy的关系:
n值大小与模型accuracy的关系:
Few-Shot Learning and Meta Learning
- Few-shot learning is a kind of meta learning
- Meta Learning: learn to learn(太故弄玄虚了,直接当做Few-Shot Learning理解吧,即培养模型进行自主学习(例如学会区分动物),从而能够在low resource数据上表现好)
Basic Idea: Learn a similarity function
Basic Idea: Learn a similarity function from large-scale training dataset.(比如孪生网络)
Pretraining and Fine-Tuning
前面介绍了一些
Few-Shot Prediction Using Pretrained CNN
pretrain a CNN for feature extraction(aka embedding)
如果只是使用pretraining,那么pretraining的作用就是用来提取特征的,pretraining的Network在pretraining之后是不会改变的~如果想改变,那么得使用fine-tuning。
pretraining+fine-tuning is better than pretraining alone~
关于模型参数的更新,可以更新pretraining的部分,也可以不更新pretraining的部分。
可以训练加入regularization防止过拟合。
Pretraining Alone
Fine-tuning
注意,在Training a classifier on the support set
的时候,除了训练$W$和$b$,也可以选择继续训练pretraining network(比如cv中的CNN,nlp中的BERT)。
Entropy regularization是作用在query之上的。。。