文章链接:https://arxiv.org/pdf/1711.04043.pdf

TL;DR

文章中将graph neural network与few-shot learning任务相结合,在模型的通用性,性能和采样复杂度之间做了一个很好的权衡,并且在不同实验的基础上比较了不同学习算法的优劣性。

Dataset/Algorithm/Model

文章中首先根据任务模型划分了不同学习方法之间的区别,数学模型如下所示:

T={{(x1,l1),(xs,ls)},{x~1,,x~r},{xˉ1,,xˉt};li{1,K},xi,x~j,xˉjPl(RN)} and Y=(y1,,yt){1,K}t\begin{aligned} \mathcal{T} &=\left\{\left\{\left(x_{1}, l_{1}\right), \ldots\left(x_{s}, l_{s}\right)\right\},\left\{\tilde{x}_{1}, \ldots, \tilde{x}_{r}\right\},\left\{\bar{x}_{1}, \ldots, \bar{x}_{t}\right\} ; l_{i} \in\{1, K\}, x_{i}, \tilde{x}_{j}, \bar{x}_{j} \sim \mathcal{P}_{l}\left(\mathbb{R}^{N}\right)\right\} \\ \text { and } Y &=\left(y_{1}, \ldots, y_{t}\right) \in\{1, K\}^{t} \end{aligned}

根据r,t,sr, t, s 之间的数量关系可以将学习方法分为以下三种:

  • Supervised learning.
  • Few-shot learning.
  • Semi-supervised learning.
  • Active Learning.

文章中提出的模型pipeline如下所示:

至于前半部分都是借鉴其它文中的模型,主要的创新点在于特征学习之后加上了GNN这个module,如下图所示:

现在来说下文中提出的GNN创新之处:

  • Adjacency matrix:

    一般想法都是将两个image features之间的相似度作为A的值, 但是这篇文章中使用了一个trainable adjacency。利用到的模型是Siamese neural architecture。数学表达如下所示:

φθ~(xi(k),xj(k))=MLPθ~(abs(xi(k)xj(k)))\varphi_{\tilde{\theta}}\left(\mathbf{x}_{i}^{(k)}, \mathbf{x}_{j}^{(k)}\right)=\operatorname{MLP}_{\tilde{\theta}}\left(a b s\left(\mathbf{x}_{i}^{(k)}-\mathbf{x}_{j}^{(k)}\right)\right)

还有一个不同之处在于在每个graph conv layer之前都要计算一遍A。

  • Node feature:

    节点的特征包含两方面:image feature 和 one-hot encoding of the label, 数学表达如下所示:$$\mathbf{x}{i}^{(0)}=\left(\phi\left(x{i}\right), h\left(l_{i}\right)\right)$$

Experiment Detail

实验中比较了不同参数下文中提出的模型的性能:

Thoughts

文中通过GNN学习images之间特征的联系从而用于few-shot learning中,提高了准确性的同时也增加了模型的复杂度,但总体上也是一个很好的方法。

联系作者