**
Prototypical Networks for Few-shot Learning.(用于少样本分类的原型网络)
**
摘要
文章提出了一种用于少样本分类的原型网络,其中分类器必须可以推广(泛化)到在训练集里面没有见过的新的类别,并且每个新的类别只有很少一部分样本。原型网络学习一个度量空间,执行分类只需要简单的计算到每个类的原型表示的距离。与其他方法的主要一点不同是原型网络反映了一种在数据集不足情况下的归纳偏差。最后一点是原型网络可以用于zero-shot learning(零样本学习)。
简单的设计选择带来了实质性的改进
本质思想
使用一个神经网络学习一个 embedding 将输入映射到一个映射空间里面,而每个类的原型就是简单的这个类的 support set 所有样本(support set 的定义参见后文)的均值。分类的执行:将需要分类的样本用学习到的映射函数映射到嵌入空间里面,然后离他最近的原型就是我们的预测类。
介绍
- few-shot learning 问题的本质之一是样本很少,一般每个类的样本少于20个。另外一个本质是这些类是全新的类。few-shot learning 问题的分类器必须调整以适应新的类,并且新的类中每个类的样本很少。传统的方法是在新的数据上重新训练新的模型,但是由于样本太少,往往会导致过拟合 (overfitting)。但是**我们人类是可以做到 few-shot learning **的,因此迈向普世的人工智能,few-shot leanring 问题是一个重要问题。
- 文章假设:由于样本有限,我们的分类器会有一个归纳偏差 (inductive bias)。 原型网络基于这样的想法:存在一种 embedding,使得其中每个类的点(可能多个)聚集在每个类的单个原型表示周围。
- 方法概述:使用一个神经网络学习一个 embedding 将输入映射到一个映射空间里面,而每个类的原型就是简单的这个类的 support set 所有样本(support set 的定义参见后文)的均值。分类的执行:将需要分类的样本用学习到的映射函数映射到嵌入空间里面,然后离他最近的原型就是我们的预测类。zero-shot learning 类似,只不过每个类没有标记 (label),而是一个关于类的高级描述 (high-level description of the class)。
方法
- 符号定义:support set 是我们具有的 N N N 个标记的样本 S = { ( x 1 , y 1 ) , … , ( x N , y N ) } S=\left\{\left(\mathbf{x}_{1}, y_{1}\right), \ldots,\left(\mathbf{x}_{N}, y_{N}\right)\right\} S={ (x1,y1),…,(xN,yN)},其中 x i ∈ R D \mathbf{x}_{i} \in \mathbb{R}^{D} xi∈RD 是一个 D D D维的向量, y i ∈ { 1 , … , K } y_{i} \in\{1, \ldots, K\} yi∈{ 1,…,K} 使对应的类, S k S_{k} Sk 表示类别为 k k k 的样本的集合。
- 模型:首先一个映射函数 (embedding): f ϕ : R D → R M f_{\phi} : \mathbb{R}^{D} \rightarrow \mathbb{R}^{M} fϕ:RD→RM 参数为 ϕ \phi ϕ,将输入空间映射到嵌入空间 (嵌入空间的维度为 M M M),然后计算每个类的原型: c k = 1 ∣ S k ∣ ∑ ( x i , y i ) ∈ S k f ϕ ( x i ) \mathbf{c}_{k}=\frac{1}{\left|S_{k}\right|} \sum_{\left(\mathbf{x}_{i}, y_{i}\right) \in S_{k}} f_{\phi}\left(\mathbf{x}_{i}\right) ck=∣Sk∣1∑(xi,yi)<