Snell, Jake,et al. “Prototypical Networks for Few-Shot Learning.” Advances in NeuralInformation Processing Systems, 2017, pp. 4077–4087.
一、论文发表简要信息:
这是NIPS-2017 Poster的一篇文章。
二、论文的主要思想:
首先是一个有着N个样本,样本有K个类别的训练集,从中随机抽样,然后产生支持集S,查询集Q, 支持集有NS个NC个类的样本,查询集Q有NQ个NC个类的样本,然后这两个样本集是互不相交的。
第一个部分就是计算所有类的原型表示。
在完成样本的采样之后,对支持集中的每一类样本,做一个嵌入映射,比如是第K类,在将所有的K类样本完成映射之后,计算出这一类的均值,作为这一类样本的原型表示,记作ck。按照这个办法计算出每一类的原型表示。
这里的嵌入映射是采用卷积网络实现的。网络由四个卷积块构成,每个卷积块包含一个64通道的3 * 3的卷积层,一个批规范化层,一个ReLU激活层和一个2 * 2的最大池化层。
第二个部分是损失函数计算,模型参数更新的部分。
从查询集Q中引入一些查询样本,计算每一个查询样本和所有类的原型表示的欧式距离,然后对距离进行一个softmax的处理,得到这个样本点是属于这个原型表示类ck的一个概率。 然后和查询集Q的真实标签,计算出损失函数的值,然后就是常规的梯度下降的方法,更新进行嵌入映射的网络。然后完成模型的训练。
这里作者用他的方法,对小样本学习做了一个推广,推广到无样本学习。左边这个小样本学习,在找到每类的原形表示之后,对于一个未分类的样本,计算它到每类的距离,判断它是属于哪一类。而对于零样本学习,是通过一个反映每个类别分布情况的一个元数据,得到嵌入映射之后的一个原型表示。来进行之后的分类,达到0样本学习的效果。