论文笔记 – Meta-Information Guided Meta-Learning for Few-Shot Relation Classification

Bowen Dong, Maosong Sun, et.al “Meta-Information Guided Meta-Learning for Few-Shot Relation Classification”, COLING 2020

1 简介

这篇文章是在关系抽取任务上,对于 MAML 的改进:原来 MAML 只用样本学习,MIML 引入了类别的 meta information(实际就是类别名),做出了如下改进:

  1. MAML 初始化时候,每个类别都是同一个起点 → MIML 每个类都有不一样的 init,这里的 init 就从 meta information 而来
  2. MAML 对于每个例子权重一样 → MIML 对 informative 的样本用更大的学习率(文章里说是 attention,好吧,softmax 就是 attention)

就如下图所示:

这两点就让 MIML 有了一些特点:1 使得 MIML 可以在 0-shot setting 使用,且在 1-shot 就能学的很好,超过人类;2 使得 MIML 抗噪声性能很好,在数据引入噪声时,性能下降最少。

2 方法

整个模型由四部分组成,下面分别介绍。

2.1 Instance Encoder

这部分就是求一对实体的 embedding。具体就是把句子中的两个实体周围加上起始 / 结束 marker,然后将句子用 bert embed,在结果里选出两个实体起始 marker 对应的 embedding 拼起来,就得到这一对实体最终的 embedding,记为 $\textbf{x}_j$。

2.2 Meta-Information Guided Fast Initialization

文中使用类别名作为 meta information,其实还可以用类别的文字描述等等。meta information 的 embedding $c_i$ 就是里面每个 token embedding 取平均,然后将 $c_i$ 过一个全连接层,就得到每一类都不同的初始参数 $\theta_0^i$(原文:class-aware initialization parameters)。$$\theta_i^0 = \Psi(c_i;\phi_n)$$

其中 $\Psi()$ 表示全连接层,$\phi_n$ 是参数。注意,当得到初始参数的时候,其实就已经可以做 0-shot 了:$$s_{i,j} = \theta_0^{iT}\textbf{x}_j$$

就是把句子表示和初始参数直接乘,就得到句子 $\textbf{x}_j$ 属于类别 $\mathcal{C}_i$ 的 logit 分数。

2.3 Meta-Information Guided Fast Adaptation

迭代的每一步为:$$\theta^{t+1} = \theta^t – \sum_{i,j}\alpha_{i,j}\triangledown_{\theta^t}\mathcal{L}(f_{\theta^t}, \{\phi_e, \phi_n\}, x_j, y_j)$$

在解释式子之前,先说一下这个“每一步”,也就是 $\theta$ 的右上角 $t$ 的意思。咱们每个 episode 不是 N-way k-shot 嘛,我们定义每个 episode 迭代 T 次,每次迭代(每一步)就是 $N\times k$ 个样本在更新参数,也就是 $\sum_{i,j}$ 的由来。

式子里面梯度部分无需解释,里面就是参数之类的,这个 $\alpha_{i,j}$ 是类别 $i$ 的 $\theta_i$ 在 support set 的样本 $(x_j, y_j)$ 上面的学习率,计算就非常有灵性:$$\alpha_{i,j} = \dfrac{\exp(e_{i,j})}{\sum_j\exp(e_{i,j})}$$

明明就是个 softmax,偏偏说成 attention,好吧。这里 $e_{i,j}$ 是句子 $\textbf{x}_j$ 属于类别 $\mathcal{C}_i$ 的分数。这时候是不是有点眼熟?是不是联系到了 $s_{i,j}$?(表示的东西都一样)但是可不一样,那个 $s$ 是用来推断的,现在的 $e$ 是用来训练的,所以 $e_{i,j}$ 的计算为:$$e_{i,j} = \textbf{q}_i^T\textbf{x}_j$$

这里 $\textbf{q}_i$ 是属于类别 $\mathcal{C}_i$ 的 query 的 embedding。这里说的 query 不是那个和 support set 对应的 query,而是 2.2 里面的 $c_i$ 过另一个全连接层得到的、其实也是表示 meta information 的向量。(高天宇的 Hatt-proto 是那个 query)

所以说用 meta information 选择重要 instance 的原理其实与 2.2 都一样,都是直接相乘,只是相乘的对象是用不同的网络 embedding 得到的。为啥这俩不能一样?废话,如果一样,那就变成“离初始点越近的越重要”了,那还怎么迭代出去,不就永远动不了啦。

这里的两个全连接层很容易过拟合(因为小样本),所以必须加上 l2 正则。同时还 “penalizing sharp changes in the meta-information space via virtual adversarial training (Miyato et al., 2017).”,“we add worst-case perturbations on the meta-information ci, such that the classification results on the query set reach the maximum changes. We measure the changes of classification results by Kullback-Leibler divergence, and penalize the changes to encourage a smooth meta-information space.” 这里是真的没看懂,还得看那篇文章。【#TODO 2】

2.4 Meta-Optimization

就是在 query 上面更新 meta param,略。

3 实验结果

  1. 没能超过 Google Matching the Blanks,但是能排第二,已经很强了
  2. 1-shot 就能超过人类水平
  3. 训练数据混入噪声,本方法降得最少
  4. 可以做 0-shot,效果要比所有“只用类别名”的好,但还是比用更多信息的差一点点
  5. 消融实验,发现正则化和那个用类别名初始化很重要,说明初始化很有用
  6. 还画了一张图,我没看懂

4 总结

所以我以前都无视 0-shot 的文章,开始后悔😕

TODO

[1] related meta-learning 部分

[2] Takeru Miyato, Andrew M. Dai, and Ian J. Goodfellow. 2017. Adversarial training methods for semi-supervised text classification. In Proceedings of ICLR.

[3] 4.1 对比实验那里好多文章

[4] Pang Wei Koh and Percy Liang. 2017. Understanding black-box predictions via influence functions. In Proceed- ings of ICML, pages 1885–1894.

发表评论