论文笔记 | Learning to Compare: Relation Network for Few-Shot Learning

这篇文章提出了利用计算“关系”的网络,通过meta-learning的方式,来解决Few-Shot Learning问题的框架。

模型介绍

对于一个Few-Shot learning的task来说,有3个数据集。分别为training set, support set, testing set. 这里的training set指的是许多个相似task的数据,而support set对应于通常所说的training set. 通常来说,support/testing set的label与training set的不完全相同。

作者将training set划分为多个episode。假设这是一个C-way K-shot的few-shot learning问题,所谓episode,就是从training set中随机选取C 个class,每个class选取K个样本,得到的sample set $\mathcal{S}=\{ (x_i, y_i) \}_{j=1}^{K\times C}$. 这样就可以模拟query set $\mathcal{Q} = \{ (x_i, y_i) \}_{j=1}^n$.

One-Shot

Relation Network含有两个模块,embedding module与relation module.

Embedding module $f_\varphi$ 接受样本$x_i\in\mathcal{S}, x_j\in\mathcal{Q}$并输出其特征$f_\varphi(x_i), f_\varphi(x_j)$. 将两特征拼接得到$\mathcal{C}(f_\varphi(x_i), f_\varphi(x_j))$, 这里作者选取的是在depth维度进行拼接。

拼接后的特征所谓输入进入relation module $g_\phi$,输出一个0到1的量,表示$x_i$与$x_j$的相似程度 relation score.

那么对于C-way one-shot任务,给定一个$x_j\in\mathcal{Q}$, 依次计算$x_j$与每一个$x_i\in\mathcal{S}$的relation score $r_{i,j}$.

K-shot

对于$\mathcal{S}$中的第$t$类的所有样本$x_i^t$, 分别将其输入$f_\varphi$得到特征,并全部相加,得到第$t$类的特征

将这一特征与$x_j\in\mathcal{Q}$的特征拼接,送入$g_\varphi$得到relation score.

Zero-shot

Zero-shot中support set并不是什么都没有,而是提供了每个class的特征$v_c$. 那么只需要将One-shot模型加以简单修改,对$\mathcal{S}, \mathcal{Q}$中的特征,样本应用不同的$f_\varphi$即可。

目标函数

文章中选用了MSE

Why work?

文章末尾作者就为什么这一模型work进行了一些探讨。

先前的研究者都是通过一些预设的,固定的度量方式来进行分类的,包括欧式距离,或是余弦距离。或者选择学习一个线性的马氏度量。这些方法假定embedding之后是线性可分的,因此极大的取决于学习到的embedding的质量。而RN则可以看作学习到了一个deep embedding和deep non-linear metric,可以更好的区分matching/mismatching pairs.