meta-learning
machine learning:由给定的learning algorithm f 和D_train学得函数f*,f*能完成当前任务
meta-learning:学一个函数F,F能找到适用于当前任务的learning algorithm f,再由f和D_train学得函数f*,f*能完成当前任务
machine learning的目标是学得f*,meta-learning的目标是学得F
为什么F能找到 适用于当前任务的learning algorithm f ?因为它通过学习之前个若干个machine learning任务,学会了一些learning skills,有了这些learning skills,就能很快找到新任务上(也就是当前任务)的learning algorithm
few-shot learning
large-scale training set, few-shot support set, one query:
在large-scale的training set上训练一个Siamese network,得到一个feature extractor f
n-way k-shot的support set(few-shot,指k很小,比如k=1)中的n个类别没有在training set中出现过,想要知道query sample属于support set中的哪一类
将query sample和support set中的各类样本进行对比,对比的方式为:计算support set中各类的feature vector和query sample的feature vector的余弦相似度:
当然这样效果可能还不太好,因为feature extractor从未见过support set中的这些类,所以可以用support set中的少量样本来fine tune一个softmax分类器:
softmax分类器中的权重初始化为M:
训练出softmax分类器的W和b后,最后query sample的预测为:
meta-learning和few-shot learning的关系:
比如上面的few-shot learning的例子,是有了large-scale training set上进行图片相似度判断(相当于之前任务)的经验,要在新的类别上判断query sample所属类别(相当于新任务),即使新类每类只有少量support样本也能迅速学会如何判断新类类别
参考: