《Few-Shot Learning With Graph Neural Networks》解读

文献地址:https://arxiv.org/abs/1711.04043

摘要

  • 思想:使用 inference prism 来研究小样本问题
  • 说明:inference 是基于部分观察到的图模型,该图模型是由一系列的输入图像构建得到的,在这些输入图像中,它们的标签信息可以是可以观测到的,也可以是无法观测到的
  • 方式:通过将通用的消息传递推理算法与其神经网络算法进行同化
  • 提出的模型的特点:
      1. 概括了最近提出的小样本学习模型
      1. 可以改进数值性能
      1. 能够容易地扩展到小样本学习的 变体
      • 半监督学习
      • 主动学习

介绍

  • 监督式端到端学习取得成功的原因

    • 优化方法的改进
    • 大型数据集
    • 深度卷积或者递归架构的简化设计
  • 小样本学习任务

    • 含义:从很少的例子中学习的能力
    • 元学习:利用相似任务分布的方法,其输入输出对不再是由独立同分布的图像和对应的标签给出,而是由独立同分布的一系列图像样本及其相关标签相似度给出
    • 思想:学习上斜纹相关且特定于任务的相似性度量
      • 相似性度量的方法:
        • 首先使用CNN对图像进行嵌入处理
        • 然后学习出如何组合集合中的嵌入图像以便将标签信息传播到目标图像
      • 端到端体系结构方法:
        • 将小样本学习问题映射成为一个监督分类任务
        • 将支持集中的图像映射成需要的标签
        • 使用注意力机制将这些支持集作为输入
  • 文章中的模型:

    • 实现了任务驱动的消息传递算法
    • 使用端到端训练获取任务不变性
    • 在简单性、通用性、性能以及复杂性之间做了很好的折中
  • 半监督学习以及主动学习

    • 含义:从带标签和未带标签的样本中学习
    • 方式:学习者通过 request 那些对预测任务有帮助的缺失标签
  • 我们的方法:

    • 使用基于图的体系结构可以自然地扩展到上述设置
    • 在训练阶段,只需要进行最小的更改即可
  • 三点贡献

      1. 将小样本学习任务作为一种有监督的消息传递任务,这个任务使用图神经网络进行端到端的训练
      1. 使用更少的参数与在Omniglot数据集和Mini-ImageNet数据集的最佳性能进行匹配
      1. 在半监督学习和主动学习中扩展模型

相关工作

  • 小样本历程:

      1. Fei-Fei 首次提出 One-shot learning
      1. 提出的分层贝叶斯模型在小样本学习字母识别任务中达到了与人类水平的错误
      1. 提出的基于深度学习的模型,使用孪生网络计算承兑样本之间的距离,学习到的距离可以使用K近邻算法用来解决One-Shot问题
      1. 提出的使用余弦距离的端到端可训练的K近邻,同时引用了一种注意力LSTM模型的上下文机制,该机制在计算元素之间的成对距离期间考虑了子集T的所有样本
      1. 使用欧式距离代替余弦距离,同时使用原型对样本进行表示
      1. 提出的使用深层残差模型和一个生成模型估计成对样本之间的距离
      1. 提出的元学习方法使用LSTM给特定的episode分配权值
      1. 提出的元学习架构可以进行跨任务学习 meta-knowledge,并且通过快速参数化改变其归纳偏见
      1. 使用基于梯度下降的模型不可知元学习器训练一个分类模型,在给定新任务的情况下,只需要少量的梯度步骤以及很少的数据就可以完成泛化
      1. 使用基于扩张卷积的时间卷积的深度递归网络,利用子集T的上下文信息得到了很好的结果
  • 图神经网络历程:

      1. 在2005年第一次被提出
      1. 使用可训练的递归消息传递,其中固定点是可以进行调整的
      1. 通过解开递归层来加宽模型。同时使用门控注意力提出了一些非线性更新
      1. 提出图拉普拉斯算子的平滑谱乘法器
      1. 学习图拉普拉斯多项式解决瓶颈问题,从而避免了特征向量的计算并且完成了与GNN的连接
      1. 提出在半监督分类问题中使用GNN
      1. 得到图交互网络,从而学习成对的相互作用并将其应用于离散的粒子物理动力学
      1. 使用GNN架构的变体研究分子指纹
      1. 将模型与集合表示相结合进一步开发模型
      1. 得到分子预测的最新结果

问题设置:

  • 符号说明

    • (T_i, Y_i) 表示来自于部分标记的图像集合的分布 P 的输入输出对
    • T 的表示:T = \{\{(x_1, l_1), \cdot \cdot \cdot, (x_s, l_s)\}, \{\widetilde{x}_1, \cdot \cdot \cdot, \widetilde{x}_r\}, \{\overline{x}_1, \cdot \cdot \cdot, \overline{x}_t\}; l_i \in \{1, K\}, x_i, \widetilde{x}_j, \overline{x}_j \sim P_l(R^N)\}
    • Y的表示:Y = (y_1, \cdot \cdot \cdot, y_t) \in \{1, K\}^t
    • s 表示带标签样本的个数
    • r 表示不带标签的样本的个数 (用于半监督学习以及主动学习)
    • t 表示需要分类的样本数
    • K 表示类别的个数
    • t = 1时,每个任务 T 只需要对一个样本进行分类
    • P_l(R^N) 表示在 R^N 上的特定于类别的图像
    • 目标Y_i与指定的图像\overline{x}_1, \cdot \cdot \cdot, \overline{x}_t \in T_i的类别相关,这些输入样本是不带标签的
    • 给定训练集 \{(T_i, Y_i)_i\}_{i \leq L}
    • 目标函数:\min_\Theta \frac 1L \sum_{i \leq L}l(\Phi(T_i;\Theta), Y_i) + R(\Theta)
    • 其中\Phi(T;\Theta) = p(Y | T)
    • R 值的是标准正则化的对象
  • 定义:

    • 小样本学习:当r=0, t=1, s=qK,集合中只有一个图像带有未知标签,如果每个类别出现q次,那么该问题可以定义为K-way q-shot问题

    • 半监督学习:当r>0, t=1,并且输入集合含有辅助图像\widetilde{x}_1, \cdot \cdot \cdot, \widetilde{x}_r,通过充分利用这些样本是从确定的分布中的提取出来的事实,可以提高预测精度的模型

    • 主动学习:学习者能够从子集\{\widetilde{x}_1, \cdot \cdot \cdot, \widetilde{x}_r\}中得到标签,文章中感兴趣的情况是s+r=s_0, s \ll s_0,这种主动学习相比于半监督学习能够提升性能,同时与 one-shot learning 设置的性能相匹配。

模型

  • 设置以及图输入表示
    • 输入T:含有带标记和不带标记的图像的集合

    • 小样本学习的目标:将标签信息从标记的样本传播到未标记的样本

    • 信息传播的形式:对由输入图像和标签确定的图形模型的后验推断

    • 模型的设计:

      • 将任务 T 与全连接图 G_T = (V, E),其中 v_a \in V 对应于任务 T 中的图像(有带标签的也有未带标签的)
      • 没有指定图像之间的相似性度量
    • One-shot learning 设置的可视化表示


      One-shot learning 设置的可视化表示
  • 图神经网络

    • 简单的表示:
      • F \in R^{V \times d} 是带权图上节点的信号
      • 考虑邻接运算符:A:F -> A(F),其中(AF)_i:=\sum_{j \sim i} w_{i, j}F_j,如果f(i, j) \in E,那么 i \sim j,并且 w_{i, j} 是相应的权值
      • 一个GNN层G_c(\cdot)接收的输入:一个信号 x^{(k)} \in R^{V \times d_k},并且得到 x^{(k+1)} \in R^{V \times d_{k+1}}
      • 公式表达为:x_l^{(k+1)} = G_c(x^{(k)}) = \rho(\sum_{B \in A}Bx^{(k)}\theta_{B, l}^{(k)}).l=d_1, \cdot \cdot \cdot, d_{k+1}
      • 可训练的参数 \Theta 的表达式为 \Theta = \{\theta_1^{(k)}, \cdot \cdot \cdot, \theta_{|A|}^{(k)}\}_k, \theta_B^{(k)} \in R^{d_k \times d_{k+1}}
      • \rho(\cdot) 表达式的含义是逐点非线性,比如LeakyRelu
        • \rho(\cdot)的选择:
            1. 使用LeakyRelu
            1. 使用门控操作
            1. 将生成器族泛化到拉普拉斯多项式
            1. 使用A的二次幂 A_J=min(1, A^2) 对每个节点的2跳邻居进行编码
            1. 使用上述x_l^{k+1}的表达式可以近似各种推理任务
            1. 泛化GNN,从而能够从当前节点隐表示中学习边缘特征 \widetilde{A}^{(k)} \widetilde{A}_{i, j}^{(k)} = \varphi_\widetilde{\theta}(x_i^{(k)}, x_j^{(k)}),其中 \varphi 是一个对称函数的参数,文中使用两个向量节点之间的绝对值的差之后堆叠的多层感知机,公式表达为 \varphi_\widetilde{\theta}(x_i^{(k)}, x_j^{(k)}) = MLP_\widetilde{\theta}(abs(x_i^{(k)} - x_j^{(k)}))\varphi 是一个度量标准,可以通过对两个节点的各个特征之间的绝对值的差进行非线性组合来学习,并且其是对称的,即\varphi_\widetilde{\theta}(a, b) = \varphi_\widetilde{\theta}(b, a),并且 \varphi_\widetilde{\theta}(a, a)=0,然后在每行执行softmax操作,将可训练的邻接关系归一化为随机核
            1. 将边特征核添加到生成器族A中即可以得到节点特征的更新规则
    • GNN 的图形表示:
      GNN的结构图
  • 初始节点特征的构建

    • 输入集的设置:将其映射到节点特征 x_i^{(0)} = (\phi(x_i), h(l_i))
    • x_i \in T表示带有标签 l_i 的图像
    • 标签的处理:进行 one-hot encoding处理并且与GNN输入的图像嵌入特征进行 concat
    • 其中 \phi 表示卷积神经网络
    • h(l) \in R_+^K 是标签的one-hot encoding
    • \widetilde{x}_j, \overline{x}_j表示的是两张图像
    • 未知标签的处理:使用均匀分布替换h(l),使用的是K-simplex:V_j = (\phi(\widetilde{x}_j), K^{-1}1_k)
  • 与现有模型之间的关系

    • 孪生网络:可以解释成文章中的模型的单层消息传递迭代,同时使用相同的初始化节点嵌入 x_i^{(0)} = (\phi(x_i), h_i),使用不可训练的边特征:\phi(x_i,x_j) = ||\phi(x_i) - \phi(x_j)||, \widetilde{A}^{(0)} = softmax(-\phi),边估计的结果:\widetilde{Y}_* = \sum_j \widetilde{A}_{*, j}^{(0)}<x_j^{(0)}, u>,其中 u 是从 x 的标签域中选择的标签,因而可以简化学习方式为学习欧式度量与标签相似度一致的图像嵌入 \phi(x_i)
    • 原型网络:通过聚合具有相同标签的节点确定每个集群中聚合信息来发展孪生网络,可以使用GNN进行实现A_{i, j}^{(0)}=\begin{cases} q^{-1} & 如果 l_i=l_j \\ 0 & 其他 \end{cases},其中q表示每个类别的样本个数,x_i^{(1)} = \sum_j \widetilde{A}_{i, j}^{(0)}x_j^{(0)},其中x^{(0)}是使用孪生网络进行定义的,文中使用\widetilde{A}^{(1)} = softmax(\phi)得到类原型\widehat{Y}_* = \sum_j \widetilde{A}_{*, j}^{(1)}<x_j^{(1)}, u>
    • 匹配网络:匹配网络使用集合表示来表示T中的图像,文中提出的方法与此类似,但是有两个主要的区别:
        1. 集合中考虑的注意力机制类似于边特征学习,匹配网络使用的机制与相同的节点嵌入相关,文中模型使用的是堆叠邻接学习
        1. 模型分别处理标签字段与图像字段,最后一步使用训练核的线性总标签防止模型在中间阶段利用标签和图像之间的复杂依赖性

训练

  • 小样本以及半监督学习:在此情况下,要求模型预测与图像相关的标签Y,对\overline{x} \in T进行分类,并且与图中的节点 * 相关联,在最后一层使用 softmax 将节点特征映射到 K-simplex 上,然后考虑节点评估的交叉熵损失: l(\Phi(T; \Theta), Y) = -\sum_k y_klogP(Y_* = y_k|T),半监督设置的不同在于节点的初始标签字段由相对应\widetilde{x}_j的均匀分布填充

  • 主动学习:主动学习中,模型具有查询样本\{\widetilde{x}_1, \cdot \cdot \cdot, \widetilde{x}_r\}中标签之一的能力,网络能够学习到询问最有信息的标签,从而对样本进行分类,使用函数 g(x_i^{(1)}) \in R^1将无标签向量节点映射到一个标量值,g是两层神经网络的参数,注意力的获取方式:Attention = Softmax(g(x_{\{1, \cdot \cdot \cdot, r\}}))为了只是查询一个样本,文章将 Attention \in R^r中的非1元素全部设置为0,训练阶段对多项式概率进行随机采样,随后将样本与注意力相乘得到标签向量 w \cdot h(l_{i*}) = <Attention', h(l_{\{1, \cdot \cdot \cdot, r\}})> 最终的表达式:x_{i*}^{(1)} = [G_c(x_{i*}^{(0)}, x_i^{(0)})] = [G_c(x_{i*}^{(0)}), (\phi(x_{i*}), h(l_{i*}))

实验:

  • 数据集以及实现

    • Omniglot:

      • 说明:
        • 50类字符,总共1623个字符
        • 每类字符由20个不同的人绘制而成
        • 文中将数据集分成1200个类别进行训练,其余的423类进行测试
      • 架构:
        • 使用CNN作为嵌入函数
        • 嵌入函数的组成:
          • 64个3 x 3卷积层
          • BatchNormalization
          • 2 x 2 的MaxPooling
          • LeakyRelu
    • Mini-ImageNet:

      • 说明:
        • 100 个类别
        • 每张图片是 84 x 84
        • 每个类别有600个样本
        • 文中将64类作为训练,16类用作验证以及20类用于测试
      • 架构:


        用于Mini-ImageNet数据集的架构
    • GNN 模型架构:


      GNN模型架构

      G

  • 小样本

    • 在Omniglot数据集上的结果


      Omniglot上的结果
    • 在Mini-ImageNet数据集上的结果


      Mini-ImageNet数据集上的记过
  • 半监督

    • Omniglot 数据集上的结果


      Omniglot数据集上的结果
    • Mini-ImageNet数据集上的结果


      Mini-ImageNet数据集上的结果
  • 主动学习

    • 两个数据集上的结果


      两个数据集上的结果

结论

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。