Tianyu Gao, et.al, “Hybrid Attention-Based Prototypical Networks for Noisy Few-Shot Relation Classification”, AAAI 2019
1 简介
对 ProtoCNN 做出两点改进:① 计算 proto 的时候考虑了 query 与 support set 样本的相似度,进行 attn ② 预测计算距离时,对构成 proto 的所有样本,拼起来做 attn,对不同特征维度上的距离调整距离的权重。
想法是很有道理的,① 就相当于与 query set 更接近的 support instance 在计算proto 的时候有更大的 contribution;② 就是常规 attn,故事讲得也还算可以。可惜,这篇文章最后实验结果和 ProtoCNN 相差并不太多。
2 方法
2.1 Hybrid Attn
计算 proto 的时候,对每个 instance 求和时有个权重:$$c_i = \sum_{j=1}^{n_i}\alpha_j \textbf{x}_i^j$$ $$\alpha_j = \frac{\exp(e_j)}{\sum_{k=1}^{n_i}\exp(e_k)}$$ $$e_j = sum\{sigma(g(\textbf{x}_i^j)\odot g(\textbf{x}))\}$$
其中下角标是 relation 类别,上角标是 support set 的第 $i$ 个 instance。就是在确定 proto 的时候,让 query 和每一个 instance 交互,就是总体上,让对于 query set 更有用的 instance 在计算 proto 的时候有更大的权重。
这时我突然想到,如果只是在最后给 query 归类的时候还保存着 proto 的 embedding 和所有 support instance 的 embedding,到时再做这个交互,那么不就相当于,把 k-means 分类和最近邻分类这两种方法取了一个折中吗?这样的方法会不会是有效的呢?我猜肯定早就有人做过了,回来查一下。【#TODO1】
2.2 Feature-level Attn

在最后给 query 归类计算距离时,加了一个权重:$$d(\textbf{s}_1, \textbf{s}_2) = \textbf{z}_i \dot (\textbf{s}_1 – \textbf{s}_2)^2$$
这里 $\textbf{z}_i$ 是关系 i 的一个分数,由关系 i 的所有 instance 过图中 (b) 的卷积网络得到,就是取 feature map。这样在最后计算距离的时候,相当于在 feature 那个维度有更多的权重。
3 实验结果
- 抗噪声性能更强,clean data 也有更强
- 收敛快
- 降维画图,分的更开、case study 解决了混淆的问题(这一条感觉所有模型都可以挑出来)
4 TODO
- 只在预测 query 时做交互