ACL2022-HiCLRE: A Hierarchical Contrastive Learning Framework for Distantly Supervised Relation Extraction
论文:https://aclanthology.org/2022.findings-acl.202.pdf
代码:https://github.com/MatNLP/HiCLRE
期刊/会议:ACL 2022
摘要
远程监督假设任何包含相同实体对的句子都反映了相同的关系。先前的远程监督关系抽取(DSRE)任务通常独立地关注sentence-level或bag-level去噪技术,忽略了跨级别的显式交互。在本文中,我们提出了一种用于远程监督关系抽取的分层对比学习框架(HiCLRE),以减少有噪声的句子,该框架集成了全局结构信息和局部细粒度交互。具体而言,我们提出了一个三级分层学习框架来与跨级别交互,通过调整现有的多头自注意来生成去噪上下文感知表示,称为Multi-Granularity Recontextualization。同时,还通过基于动态梯度的数据增强策略,即动态梯度对抗性扰动,在特定级别提供伪正样本用于对比学习。实验表明,在各种主流DSRE数据集中,HiCLRE显著优于强基线。
1、简介
远监督关系抽取(DSRE)通过自动生成训练文本样例来解决数据标注开销、稀疏的问题。但是DSRE会引来噪声数据,可能会损失模型的性能。为此多实例学习(MIL)被提出,用于分配”至少一个“正确的关系三元组的bag。
先前的DSRE主要分为:sentence-level和bag-level。sentence-level和bag-level在实体级别上提供了大量的语义信息,如图1所示。不同的bag-level存在语义信息具有很大的差距。
为了克服上述挑战,我们提出了一种用于远程监督关系抽取(HiCLRE)的分层对比学习框架,该框架有助于在特定级别和跨级别内进行语义交互:
(1)Multi-Granularity Recontextualization:为了捕获跨级别的结构信息,我们将多头自注意机制调整为三级粒度,包括entity-level、sentence-level和bag-level。我们将每一层的上下文内容特征分别与注意力机制的输入对齐。通过由其他两个级别聚合的注意力得分,为相应级别挑选作为重新文本化交互语义的精细表示。
(2) 动态梯度对抗性扰动:为了获得更准确的特定水平表示,我们使用基于梯度的对比学习(Hadsell et al,2006;van den Oord et al,2018)来抽取构建的伪正样本的信息,并推送负样本的差异。具体地,我们从两个方面计算了动态扰动,包括任务损失的归一化梯度和上一个和当前轮次之间的时间加权记忆相似性。
本文的主要贡献:
- 我们提出了一种用于DSRE任务的分层对比学习框架(HiCLRE),该框架充分利用了特定级别和跨级别内的语义交互,减少了噪声数据的影响。
- 提出了Multi-Granularity Recontextualization来增强跨级别交互,并且动态梯度对抗性扰动在三个特定级别内学习更好的表示。
- 大量实验表明,我们的模型优于DSRE数据集的强基线,详细分析表明这些模块也是有效的。
2、相关工作
2.1 远监督的关系抽取
可以分为两个类别:人工设计的特征、神经网络表示。
2.2 对比学习
损失函数:NCE,通过概率密度函数区分干净样本和噪声样本。InfoNCE,在NCE的基础上加入手工特征,最大化相似和最小化区别。
数据增强:简单文本处理的数据增强,EDA(同义词替换,随即插入,随即删除),CIL(使用TF-IDF去插入/替换实例中不重要的词,构建正样本)。嵌入处理的数据增强,ConSBRT,SimCSE。外部知识的数据增强,ERICA。
这些数据增强方法都是在数据层面,忽略了模型训练过程中的影响。本文提出的模型能捕捉全局结构信息,在不同层级内进行交互微调。
3、方法
3.1 模型总览
模型的整体结构如图2所示,HiCLRE主要包含两个部分:Multi-Granularity Recontextualization旨在整合跨级别的重要性,以确定在目标级别中应该抽取哪些有价值的表示。Dynamic Gradient Adversarial Perturbation针对特定级别,提出了通过构造伪正样本来增强内部语义的方法。
在HiCLRE中,输入样本是确定的token S i j = ( t i 1 , t i 2 , … , t i k ) S_{ij}=(t_{i1},t_{i2},\ldots,t_{ik}) Sij=(ti1,ti2,…,tik), S i j S_{ij} Sij指的是bag B j B_j Bj中的第 i i i个句子。 k k k是 S i j S_{ij} Sij中token的数量, j j j是bag的索引。 e i 1 , e i , 2 e_{i1},e_{i,2} ei1,ei,2是句子 S i j S_{ij} Sij中的实体头和尾。每一个bag中包含 n n n个句子 B j = ( S 1 j , S 2 j , … , S n j ) B_j=(S_{1j},S_{2j},\ldots,S_{nj}) Bj=(S1j,S2j,…,Snj)。我们的模型的目的是预测包 B j B_j Bj的 ∣ r ∣ |r| ∣r∣中的特定关系 r j r_j rj。 d d d指的是预训练语言模型的隐藏层维度。
3.2 分层学习建模
3.2.1 句子表示
具体地说,句子编码器的输入是句子
S
i
j
S_{ij}
Sij及其对应的头部实体
e
i
1
e_{i1}
ei1和尾部实体
e
i
2
e_{i2}
ei2的token序列。文本编码器对每个token的token嵌入、分段嵌入和位置嵌入求和,以实现其输入嵌入,然后计算上下文感知的隐藏表示
H
=
{
h
t
i
1
,
h
t
i
2
,
,
…
,
h
e
i
1
,
…
,
h
e
i
2
,
…
,
h
t
i
k
}
H=\{h_{t_{i1}},h_{t_{i2}},,\ldots,h_{e_{i1}},\ldots,h_{e_{i2}},\ldots,h_{t_{ik}}\}
H={hti1,hti2,,…,hei1,…,hei2,…,htik}:
H
=
F
(
{
t
i
1
,
t
i
2
,
…
,
t
i
k
}
)
(1)
H=\mathcal{F}(\{t_{i1},t_{i2},\ldots,t_{ik} \}) \tag{1}
H=F({ti1,ti2,…,tik})(1)
F
\mathcal{F}
F是预训练语言模型编码器,
H
∈
R
k
×
d
H \in \mathbb{R}^{k \times d}
H∈Rk×d。句子的嵌入将用头实体,尾实体和[CLS]标签进行计算。
h
S
i
j
=
σ
(
[
h
e
i
1
∥
h
e
i
2
∥
h
[
C
L
S
]
]
⋅
W
S
)
+
b
S
(2)
h_{S_{ij}}=\sigma([h_{e_{i1}} \parallel h_{e_{i2}} \parallel h_{[CLS]} ] \cdot W_S)+b_S \tag{2}
hSij=σ([hei1∥hei2∥h[CLS]]⋅WS)+bS(2)
∥
\parallel
∥是连接操作,
W
S
∈
R
3
d
×
d
,
b
S
W_S \in \mathbb{R}^{3d \times d},b_S
WS∈R3d×d,bS分别代表的是权重矩阵和偏置,
σ
\sigma
σ是非线性激活函数。
3.2.2 bag表示
使用句子级注意力机制来产生合并的Bag表示。
h
B
j
∈
R
d
h_{B_j} \in \mathbb{R}^d
hBj∈Rd指的是bag的表示,它将被计算通过句子注意力权重
α
i
j
\alpha_{ij}
αij和隐藏表示
h
S
i
j
h_{S_{ij}}
hSij。
h
B
j
=
∑
i
=
1
n
α
i
j
h
S
i
j
(3)
h_{B_j}=\sum_{i=1}^{n} \alpha_{ij} h_{S_{ij}} \tag{3}
hBj=i=1∑nαijhSij(3)
为了避免简单地平等对待Bag种的每一句话,选择性注意力机制赋予了减少噪音的重要性。每个权重
α
i
j
\alpha_{ij}
αij由一个基于查询的函数生成:
α
i
j
=
exp
(
f
i
j
)
∑
n
exp
(
f
i
j
)
(4)
\alpha_{ij}=\frac{\exp (f_{ij})}{\sum_{n} \exp (f_{ij})} \tag{4}
αij=∑nexp(fij)exp(fij)(4)
f
i
j
f_{ij}
fij测量输入句子
S
i
j
S_{ij}
Sij和预测关系
r
j
r_j
rj匹配的程度。
f
i
j
=
h
S
i
j
A
j
r
j
(5)
f_{ij}=h_{S_{ij}} \mathbf{A_j r_j} \tag{5}
fij=hSijAjrj(5)
A
j
∈
R
d
×
d
,
r
j
∈
R
d
\mathbf{A_j}\in \mathbb{R}^{d \times d},\mathbf{r_j} \in \mathbb{R}^{d}
Aj∈Rd×d,rj∈Rd分别表示权重对角矩阵和关系
r
j
r_j
rj从关系标签的映射表示。最终bag的关系类型
B
j
B_j
Bj将被预测:
p
(
r
j
∣
h
B
j
,
θ
)
=
exp
(
O
r
)
∑
p
=
1
∣
r
∣
exp
(
O
p
)
(6)
p(r_j|h_{B_j},\theta)=\frac{\exp (O_r)}{\sum_{p=1}^{|r|} \exp (O_p)} \tag{6}
p(rj∣hBj,θ)=∑p=1∣r∣exp(Op)exp(Or)(6)
O r = σ ( W r ⋅ h B j ) + b r (7) O_r=\sigma(W_r \cdot h_{B_j})+b_r \tag{7} Or=σ(Wr⋅hBj)+br(7)
W
r
∈
R
∣
r
∣
×
d
W_r \in \mathbb{R}^{|r| \times d}
Wr∈R∣r∣×d是可训练的变化矩阵,
b
r
∈
R
∣
r
∣
b_r \in \mathbb{R}^{|r|}
br∈R∣r∣是偏置。
θ
\theta
θ是bag模型的参数。
O
r
∈
R
∣
r
∣
O_r \in \mathbb{R}^{|r|}
Or∈R∣r∣是我们模型最后的输出,其联系着所有的关系类型。因此,关系分类目标函数DSRE任务将被定义为:
L
t
a
s
k
=
−
∑
j
=
1
∣
r
∣
log
p
(
r
j
∣
h
B
j
,
θ
)
(8)
L_{task}=-\sum_{j=1}^{|r|} \log p(r_j|h_{B_j},\theta) \tag{8}
Ltask=−j=1∑∣r∣logp(rj∣hBj,θ)(8)
3.3 Multi-Granularity Recontextualization
上述分层学习过程忽略了跨级别的显式交互,以细化更好级别的表示。因此,在更新了PLM生成的隐藏表示之后,我们的HiCLRE模型试图对每个级别的增强表示进行重新文本化。这是使用修改的Transformer层(Vaswani et al,2017)实现的,该层在目标层级和其他两个层级的表示之间用多头注意力代替多头自注意力。
多头注意力机制被定义为:
A
t
t
.
(
Q
,
K
,
V
)
=
s
o
f
t
m
a
x
(
Q
K
T
d
k
)
V
(9)
Att.(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V \tag{9}
Att.(Q,K,V)=softmax(dkQKT)V(9)
h B j ′ = M L P ( A t t . ( h e , h S i j , H B j ) ) (10) h_{B_j}'=MLP(Att.(h_e,h_{S_{ij}},H_{B_j})) \tag{10} hBj′=MLP(Att.(he,hSij,HBj))(10)
MLP是多层线性函数。
我们将增强的目标级别表示与原始分层隐藏状态连接起来,以获得信息级别的表示:
h
B
a
t
t
j
=
σ
(
[
h
B
j
∥
h
B
j
′
]
⋅
W
a
t
t
)
+
b
a
t
t
(11)
h_{B_{att_j}}=\sigma([h_{B_j} \parallel h_{B_j}'] \cdot W_{att}) +b_{att} \tag{11}
hBattj=σ([hBj∥hBj′]⋅Watt)+batt(11)
最后三个层级强化表示
h
e
a
t
t
j
,
h
S
a
t
t
j
,
h
B
a
t
t
j
h_{e_{att_j}},h_{S_{att_j}},h_{B_{att_j}}
heattj,hSattj,hBattj将取代层级隐藏表示。
3.4 动态梯度对抗性扰动
3.4.1 梯度扰动
持续的梯度扰动
p
t
a
d
v
pt_{adv}
ptadv将从被具有任务损失参数
V
V
V的梯度
g
g
g计算。
g
j
=
▽
V
L
t
a
s
k
(
h
B
j
;
θ
)
(12)
g_j=\bigtriangledown_V L_{task}(h_{B_j};\theta) \tag{12}
gj=▽VLtask(hBj;θ)(12)
V
V
V是bag的句子表示。我们对实体进行区分,以生成句子级别的梯度扰动和实体级别的token。
p
t
a
d
v
j
=
ϵ
⋅
g
j
∥
g
j
∥
(13)
pt_{adv_j} = \epsilon \cdot \frac{g_j}{\parallel g_j \parallel} \tag{13}
ptadvj=ϵ⋅∥gj∥gj(13)
∥
g
j
∥
\parallel g_j \parallel
∥gj∥是来自损失函数的梯度的范数,$\epsilon $是控制扰动程度的超参数。
随着训练轮次的增加,我们使用不同粒度的时序信息来进一步提高内部语义的鲁棒性。具体来说,我们在扰动项上添加了惯性权重信息(Shi和Eberhart,1998),这利用了上一个和当前轮次之间的表示差异。惯性重量信息表示如下:
I
w
=
T
−
u
T
s
i
m
(
r
e
p
(
u
)
,
r
e
p
(
u
−
1
)
)
(14)
I_w =\frac{T-u}{T} sim (rep_{(u)},rep_{(u-1)}) \tag{14}
Iw=TT−usim(rep(u),rep(u−1))(14)
其中
T
T
T是训练过程的总轮次数,
u
u
u是当前轮次索引。
r
e
p
(
u
)
rep_{(u)}
rep(u)可以分别表示第
u
u
u个轮次的实体、句子或bag表示。rep是按照元素索引的顺序保存语义记忆的嵌入矩阵,在训练过程中从第二个轮次更新。然后,我们将惯性重量信息与bag-level的梯度扰动相结合:
p
t
a
d
v
j
=
ϵ
g
j
∥
g
j
∥
+
T
−
u
T
s
i
m
(
r
e
p
(
u
)
,
r
e
p
(
u
−
1
)
)
(15)
pt_{adv_j}=\epsilon \frac{g_j}{\parallel g_j \parallel} + \frac{T -u}{T} sim (rep_{(u)},rep_{(u-1)}) \tag{15}
ptadvj=ϵ∥gj∥gj+TT−usim(rep(u),rep(u−1))(15)
最后采用InfoNCE损失函数,如下所示:
L
bag
info
=
−
log
exp
(
cos
(
h
B
j
,
h
B
j
′
)
/
τ
)
∑
k
=
1
m
1
[
k
≠
j
]
exp
(
cos
(
h
B
j
,
h
B
k
j
)
/
τ
)
(16)
\mathcal{L}_{\text {bag }}^{\text {info }}=-\log \frac{\exp \left(\cos \left(h_{B_{j}}, h_{B_{j}}^{\prime}\right) / \tau\right)}{\sum_{k=1}^{m} \mathbb{1}_{[k \neq j]} \exp \left(\cos \left(h_{B_{j}}, h_{B_{k j}}\right) / \tau\right)} \tag{16}
Lbag info =−log∑k=1m1[k=j]exp(cos(hBj,hBkj)/τ)exp(cos(hBj,hBj′)/τ)(16)
3.5 训练目标
总的训练目标将遵循:
L
t
o
t
a
l
=
λ
1
L
e
n
i
n
f
o
+
λ
2
L
s
e
n
i
n
f
o
+
λ
3
L
b
a
g
i
n
f
o
+
λ
4
L
t
a
s
k
(17)
L_{total}=\lambda_1 L_{en}^{info}+\lambda_2 L_{sen}^{info}+\lambda_3 L_{bag}^{info}+\lambda_4 L_{task} \tag{17}
Ltotal=λ1Leninfo+λ2Lseninfo+λ3Lbaginfo+λ4Ltask(17)
λ
l
\lambda_l
λl是超参数,其中
∑
l
=
1
4
λ
l
=
1
\sum_{l=1}^{4} \lambda_l=1
∑l=14λl=1。
4、实验
6、总结
在本文中,我们提出了HiCLRE,一种用于远程监督关系抽取的分层对比学习框架。HiCLRE的Multi-Granularity Recontextualization模块利用多头自注意机制,在三个层次上传输信息。动态梯度对抗性扰动模块将梯度扰动与惯性记忆信息相结合,为对比学习构建更好的伪正样本。实验表明,在各种DSRE数据集中,HiCLRE对强基线模型的有效性。