基本信息
- github:地址
- 会议:2019 AAAI
- 标签:关系抽取、小样本
笔记
1. 整体思路是什么?
- 问题设定:小样本关系抽取,N way K shot 的任务。
- 数据集:FewRel 1.0数据集,在数据集中引入了 (错误标注的情况)
- 出发点:在小样本中噪声数据对模型影响是巨大的。小样本学到的特征是稀疏的。
- 方式:小样本学习中的metric learning方法,用了之前Prototypical网络,作了一定改进。将简单的avg换成了attention。引入了基于实例、基于特征的混合注意力。缓解出发点提到的两个问题。
- 做法:对每个query,都是拿整个support set与其计算相似度,最终是一个N维的相似度量,取最大作为其类别。
2. 模型流程是什么?
输入:
(
S
u
p
p
o
r
t
,
x
q
u
e
r
y
)
(Support,x_{query})
(Support,xquery)
输出:
x
q
u
e
r
y
x_{query}
xquery对应的类别。
2.1 Instance Encoder
- 使用Glove词向量,参考PCNN,每个词的embedding是词向量+位置编码。
- 用CNN做编码器。一维卷积,最大池化,得到句向量。
- Query的句子也是同样编码方式。
- 用CNN作者是综合了表现与计算效率的考量
2.2 Prototypical Networks
-
Prototypical Networks的作用是进行一系列计算,得到每个关系的prototype。
-
对每个关系,输入是K个编码完的句向量,输出一个prototype向量。
-
原本的方式简单平均:
【关系i的prototype向量】
-
然后就是计算query编码与每个prototype距离,做个softmax,得到预测类别。
2.3 Hybrid Attention
本文对于这个网络的改进,就是第三个模块。
Instance-level Attention
-
就是将avg变为att:
-
其中:
-
这边 g ( ⋅ ) g(·) g(⋅)就是一个线性函数,然后激活函数 σ ( ⋅ ) \sigma(·) σ(⋅)用的是tanh。
-
目的:缓解数据集噪声的情况。就是说,在这个关系的实例中,与查询向量更类似的,会有更高的注意力权重。所以那些被错误标注的,往往会有更低的权重。总之就是比平均好。
Feature-level Attention
- 出发点:先前研究论证了距离函数的选择会影响这个网络的能力。小样本数据集意味着特征是稀疏的,简单的欧式距离能力不足。虽然特征空间是稀疏的,但总会有些维度有更强的区分能力,所以需要特征层面的注意力机制。
- 修改距离计算:
- 这里的关系 i i i 的注意力得分就不是一个标量了,而是一个得分向量 z i z_i zi。
- 就是将该关系下的K个实例的编码向量
(
x
1
,
x
2
,
.
.
.
x
K
)
(x_1,x_2,...x_K)
(x1,x2,...xK)进行多次卷积得到的。
具体操作就是这张图。
3. 最终实验如何?
3.1 实验操作
-
考虑到训练集有64类关系,更多的关系会使模型在训练集得到更好地结果,因此,对每个Batch随机采样20个关系做N-K。
-
其他所有超参数在验证集上调参。用grid search。特别提到了初始学习率和权重衰减值。优化策略主要体现在学习率方面。按步数衰减学习率,做了非常多的尝试。【到时复现再说】
3.2 实验结果
-
【笔记中不全,感兴趣可阅读原文】
-
全文没有做N-way 1-Shot 因为这样没法算注意力。
-
在数据集中按照一定比例替换标签(制造错误标注),进行对比。
-
没有噪声时与其他baseline的对比。
-
特征级别的attention得分对比:对隐藏层embedding的230特征进行排序,最高的20个与最低的20个做PCA。
4. 个人想法
- 对于N-way 1 Shot 问题,是否有类似的办法?
- 作者也提到,今后尝试混合注意力机制与其他模型的适用性。
- 在FewRel 2.0数据集的两个任务上,基于这个模型应该也有一定的发挥空间。