目录
摘要
This week, I did a simple comparison of models such as RNN, LSTM, and Attention, and learned about some other variants of Attention. In addition, I read a paper on joint neural models for information extraction with global features. The paper proposes a joint end-to-end IE framework that combines global features to capture the interdependence between knowledge elements for information extraction. The model includes two sub-models for entity recognition and relation extraction, which share an LSTM layer to leverage global features and improve the performance of information extraction.
本周,我将RNN、LSTM、Attention等模型做了一个简单的比较,学习了Attention一些其他的变式;另外,我阅读了一篇用于全局特征进行信息提取的联合神经模型,文章提出了一个联合的端到端IE框架,该框架结合了全局特征来捕捉知识元素之间的相互依赖性,用于信息抽取。该模型包括两个子模型,一个用于实体识别,一个用于关系提取,两个子模型共享一个LSTM层以利用全局特征,提高信息抽取的性能。
深度学习
1、RNN、LSTM、Attention、Self Attention比较
RNN、LSTM: 如果是 RNN 或者 LSTM,需要依次序列计算,对于远距离的相互依赖的特征,要经过若干时间步步骤的信息累积才能将两者联系起来,而距离越远,有效捕获的可能性越小。
Attention:
优点:解决了长序列依赖问题,并行问题,且得到的新的词向量具有句法特征和语义特征(表征更完善)
缺点:
1、开销变大了
2、既然可以并行,也就是说,词与词之间不存在顺序关系(打乱一句话,这句话里的每个词的词向量依然不会变),即无位置关系
Self Attention:
1、更容易捕获句子中长距离的相互依赖的特征,因为 Self Attention 在计算过程中会直接将句子中任意两个单词的联系通过一个计算步骤直接联系起来,所以远距离依赖特征之间的距离被极大缩短,有利于有效地利用这些特征;
2、对于一句话中的每个单词都可以单独的进行 Attention 值的计算,也就是说 Self Attention 对计算的并行性也有直接帮助作用,而对于必须得依次序列计算的 RNN 而言,是无法做到并行计算的。
2、Masked(掩码)self-Attention
假设在此之前我们已经通过 scale 之前的步骤得到了一个 attention map,而 mask 就是沿着对角线把灰色的区域用0覆盖掉,不给模型看到未来的信息。举例:
“i” 作为第一个单词,只能有和 “i” 自己的 attention;
“have” 作为第二个单词,有和 “i、have” 前面两个单词的 attention;
“a” 作为第三个单词,有和 “i、have、a” 前面三个单词的 attention;
“dream” 作为最后一个单词,才有对整个句子 4 个单词的 attention。
并且在做完 softmax 之后,横轴结果合为 1,如下图所示:
为什么做这个改进:NLP中有生成模型(生成单词),一个一个生成,当做生成任务时,想对生成的单词做注意力计算,就需要用到掩码自注意力机制
3、Multi-Head Self-Attention(多头自注意力机制)
Transformer 使用的都是 Self Attention 的进阶版 Multi-head Self Attention。Multi-Head Attention 就是把 Self Attention 得到的注意力值 Z切分成 n 个
Z
1
,
Z
2
,
⋯
,
Z
n
Z_1,Z_2,⋯,Z_n
Z1,Z2,⋯,Zn,然后通过全连接层获得新的
Z
′
Z^′
Z′。
多头的个数用h表示,一般h=8,把x切分成8块(8个子空间),这样一个原先在一个位置上的x,去了空间上8个位置,通过对8个点进行寻找,找到更合适的位置。可以通过下图看看 multi-head attention 的整个流程:
4、Positional Encoding(位置编码)
Self Attention 的 Q、K、V 三个矩阵是由同一个输入
X
1
=
(
x
1
,
x
2
,
⋯
,
x
n
)
X_1=(x_1,x_2,⋯,x_n)
X1=(x1,x2,⋯,xn) 线性转换而来,也就是说对于这样的一个被打乱序列顺序的 $X_2=(x_2,x_1,⋯,x_n) $而言,由于 Attention 值的计算最终会被加权求和,也就是说两者最终计算的 Attention 值都是一样的,进而也就表明了 Attention 丢掉了
X
1
X_1
X1 的序列顺序信息。
如上图所示,为了解决 Attention 丢失的序列顺序信息,Transformer 的提出者提出了 Position Embedding,也就是对于输入X进行 Attention 计算之前,在 X 的词向量中加上位置信息,也就是说 X 的词向量为
X
f
i
n
a
l
e
m
b
e
d
d
i
n
g
=
E
m
b
e
d
d
i
n
g
+
P
o
s
i
t
i
o
n
a
l
E
m
b
e
d
d
i
n
g
X_{final_embedding}=Embedding+Positional\ Embedding
Xfinalembedding=Embedding+Positional Embedding
但是如何得到 X 的位置向量呢?其中位置编码公式如下图所示:
其中 pos 表示位置、i 表示维度、
d
m
o
d
e
l
d_{model}
dmodel表示位置向量的向量维度 、2i、2i+1 表示的是奇偶数(奇偶维度),上图所示就是偶数位置使用 sin函数,奇数位置使用cos函数。
举例:
对于 “我爱吃苹果” 这一句话,有 5 个单词,假设序号分别为 1、2、3、4、5。
假设 pos=1=我、k=2=爱、pos+k=3=吃,也就是说 pos+k=3位置的位置向量的某一维可以通过 pos=1位置的位置向量的某一维线性组合加以线性表示,通过该线性表示可以得出 “吃” 的位置编码信息蕴含了相对于前两个字 “我” 的位置编码信息。
总而言之就是,某个单词的位置信息是其他单词位置信息的线性组合,这种线性组合就意味着位置向量中蕴含了相对位置信息。
文献阅读
1、题目
A Joint Neural Model for Information Extraction with Global Features
2、简介
背景:
大多数现有的用于信息提取的联合神经模型使用局部任务特定的分类器来预测单个实例(如:触发器、关系)的标签,不考虑它们的相互作用。
解决办法:
为了捕捉这种跨子任务和跨实例的相互依赖关系,提出了一个联合的神经框架(OneIE),旨在从输入句子中提取全局最优的IE结果作为图。
OneIE在四个阶段执行端到端的IE:
1、对输入语句进行编码(Embedding);
2、识别句中的实体(Entity)和事件(Event)并用结点(Node)进行表示;
3、使用句内信息(Local classifier)计算所有结点及其连接(Link)的标签分数(Label Score);
4、解码(Decoding)时使用束搜索(Beam search)找到全局最优图。
3、方法
3.1 编码
输入一句包含L个词的语句,使用预训练的BERT模型将每个词表示为 x i x_i xi,实验发现使用最后三层BERT在大多数的子任务上表现较好。
3.2 识别
在这个阶段,确定句子中的实体提及和事件触发点,它们将作为信息网络的节点。使用前馈网络FFN来计算每个词的得分向量
y
ˆ
i
\^y_i
yˆi=FFN(
x
i
x_i
xi),其中
y
ˆ
i
\^y_i
yˆi中的每个值代表目标标签集中一个标签的得分。之后,使用条件随机场CRFs层来捕捉预测标签之间的依赖关系,计算一个标签路径tag path
z
ˆ
=
{
z
ˆ
1
,
.
.
.
,
z
ˆ
L
}
\^z = \{\^z_1,...,\^z_L\}
zˆ={zˆ1,...,zˆL}的分数:
s
(
X
,
z
^
)
=
∑
i
=
1
L
y
^
i
,
z
i
^
+
∑
i
=
1
L
+
1
A
z
^
i
−
1
,
z
^
i
s(X,\hat{z})=\sum_{i=1}^{L}{\hat{y}_{i,\hat{z_i}}}+\sum_{i=1}^{L+1}{A_{\hat{z}_{i-1},\hat{z}_{i}}}
s(X,z^)=i=1∑Ly^i,zi^+i=1∑L+1Az^i−1,z^i
其中
X
=
{
x
1
,
.
.
.
,
x
L
}
X = \{x_1,...,x_L\}
X={x1,...,xL}是输入序列的上下文表示,
y
ˆ
i
,
z
ˆ
i
\^y_{i,\^z_i}
yˆi,zˆi是分数向量
y
ˆ
i
\^y_i
yˆi的第z个分量,
A
z
ˆ
i
−
1
,
z
ˆ
i
A_{\^z_i-1,\^z_i}
Azˆi−1,zˆi是矩阵A中的
z
ˆ
i
−
1
\^z_i-1
zˆi−1到
z
ˆ
i
\^z_i
zˆi的转移分数。A中的权重是在训练中学习的。作者在标签路径上附加两个特殊的标签和作为
z
ˆ
0
\^z_0
zˆ0和
z
ˆ
L
+
1
\^z_{L+1}
zˆL+1来表示序列的开始和结束。在训练阶段,最大化标准标签路径的对数可能性:
log
p
(
z
∣
X
)
=
s
(
X
,
z
)
−
l
o
g
∑
z
^
∈
Z
e
s
(
X
.
z
^
)
\log{p(z|X)}=s(X,z)-log{\sum_{\hat{z}\in Z}{e^{s(X.\hat{z})}}}
logp(z∣X)=s(X,z)−logz^∈Z∑es(X.z^)
其中Z是一个给定句子的所有可能的标签路径的集合。因此,作者将识别损失定义为:
L
I
=
−
log
p
(
z
∣
X
)
L^I=-\log{p(z|X)}
LI=−logp(z∣X)
3.3 分类
通过对每个识别的节点的单词向量表示进行平均,将其表示为
v
i
v_i
vi。之后使用单独的特定任务前馈网络来计算每个节点的标签分数:
y
^
i
t
=
F
F
N
t
(
v
i
)
\hat{y}_{i}^{t}=FFN^t(v_i)
y^it=FFNt(vi)其中t表示一个特定的任务。为了得到第i个节点和第j个节点之间的边缘的标签分数向量,作者把它们的跨度表示拼接起来,计算出向量为:
y
^
k
t
=
F
F
N
t
(
v
i
,
v
j
)
\hat{y}_{k}^{t}=FFN^t(v_i,v_j)
y^kt=FFNt(vi,vj)对于每个任务,训练目标是最小化以下交叉熵损失:
L
t
=
−
1
N
t
∑
i
=
1
N
t
y
i
t
log
y
^
i
t
L^{t}=-\frac{1}{N^t}\sum_{i=1}^{N^t}{y_i^{t}\log{\hat{y}^{t}_{i}}}
Lt=−Nt1i=1∑Ntyitlogy^it其中,
y
i
t
y {^t_i}
yit是向量的正确标签,
N
t
N^t
Nt是任务t中的实体数量。
如果忽略了节点和边之间的相互依赖关系,可以简单地预测每个知识元素的最高分值的标签,从而生成局部最佳图
G
ˆ
\^G
Gˆ。
G
ˆ
\^G
Gˆ的分数的计算方法为:
s
′
(
G
^
)
=
∑
t
∈
T
∑
i
=
1
N
t
max
y
^
i
t
s'(\hat{G})=\sum_{t\in T}\sum_{i=1}^{N^t}{\max{\hat{y}_i^t}}
s′(G^)=t∈T∑i=1∑Ntmaxy^it
其中T是任务的集合。把 s ′ ( G ˆ s'(\^G s′(Gˆ)称为 G ˆ \^G Gˆ的局部得分。
3.4 全局特征
局部分类器的一个局限性是,它们无法捕捉信息网络中知识元素之间的相互依赖关系。在作者的框架中,考虑两种类型的相互依赖关系:
1、实体、关系和事件之间的跨子任务相互作用,如图(a)所示:
例如:A civilian aid worker from San Francisco was killed in an attack in Afghanistan.
一个局部分类器可能会预测 "San Francisco"是一个VICTIM的论据,因为在 "was killed"之前提到的实体通常是受害者,尽管一个GPE不太可能是VICTIM的事实。
2、句子中多个事件和/或关系实例之间的跨实例相互作用,如图3(b)所示:
例如:South Carolina boy, 9, dies during hunting trip after his father accidentally shot him on Thanksgiving Day.
由于这两个词之间的距离很远,局部分类器预测 "boy"是由 "shot "引发的攻击事件的受害者,这可能是一个挑战。然而,如果一个实体是死亡事件的受害者,它也可能是同一句子中攻击事件的受害者。
作者设计了一套全局特征类型模板(Event schemas)来捕捉以上两类相互作用,模型填充所有可能的类型来生成特征,并在训练过程中学习每个特征的权重。对于给定的一张图,将它的全局特征向量描述为:
f
G
=
{
f
1
(
G
)
,
.
.
.
,
f
M
(
G
)
}
f_G = \{f_1(G),...,f_M(G)\}
fG={f1(G),...,fM(G)}
其中,M全局特征的数量,
f
i
f_i
fi(⋅)是一个评估某个特征并返回一个标量的函数,对某个特征求值并返回标量,比如:
f
(
x
)
=
{
1
,
G
h
a
s
m
u
l
t
i
p
l
e
A
T
T
A
C
K
e
v
e
n
t
s
0
,
o
t
h
e
r
w
i
s
e
f(x)= \begin{cases} 1,\ G\ has\ multiple\ ATTACK\ events\\ 0,\ otherwise \end{cases}
f(x)={1, G has multiple ATTACK events0, otherwise
之后,ONEIE框架学习到一个权重向量
u
∈
R
M
u ∈ R^M
u∈RM,并且将
f
(
G
)
f(G)
f(G)和u的点乘作为图G的全局特征分数。将图G的局部分数和全局特征分数之和作为G的全局分数:
s
(
G
)
=
S
′
(
G
)
+
u
f
G
s(G) = S'(G) + uf_G
s(G)=S′(G)+ufG
假定一条语句的最佳(Gold-standard)图应该拥有最高的全局分数。所以,最小化该损失函数:
L
G
=
s
(
G
ˆ
)
−
S
(
G
)
,
L^G = s(\^G) - S(G),
LG=s(Gˆ)−S(G),
其中,
G
ˆ
\^G
Gˆ是由局部分类器预测的图,G是最佳图。
最后,在训练期间优化以下联合目标函数:
L
=
L
I
+
∑
t
∈
T
L
t
+
L
G
L = L^I + \sum_{t ∈ T}L^t + L^G
L=LI+t∈T∑Lt+LG
3.5 解码
ONEIE对所有的结点和成对的边进行联合决策,得到全局的最优图。最基本的方法是计算所有候选图的全局分数,选择分数最高的作为最终结果。为了优化复杂度,作者设计了一个以束搜索为基础的解码器(Beam search-based decoder)。
对于给定的识别出的结点集V、所有结点的标签分数(label scores)和他们之间的成对联系执行解码,初始束集(initial beam set)为B = {
k
0
k_0
k0},
k
0
k_0
k0 是一个零阶图。每一步i分为两小步,分别对结点和边进行扩展:
1、Node Step
选择
v
i
∈
V
v_i ∈ V
vi∈V,定义候选集为
V
i
=
{
<
a
i
,
b
i
,
l
i
(
k
)
>
∣
1
≤
K
≤
β
v
}
V_i=\{<a_i,b_i,l_i^{(k)}>|1\le K \le\beta_v\}
Vi={<ai,bi,li(k)>∣1≤K≤βv},其中
l
i
(
k
)
l_i^{(k)}
li(k)表示
v
i
v_i
vi中分数第k kk高的局部标签分数,
β
v
\beta_v
βv是控制候选标签数量的超参数(hyper-parameter)。通过如下公式更新束集(beam set):
B
←
{
G
+
v
∣
(
G
,
v
)
∈
B
×
V
i
}
B\leftarrow\{G+v|(G,v)\in B\times V_i\}
B←{G+v∣(G,v)∈B×Vi}
2、Edge Step
迭代地选择一个i ii之前的结点
v
j
∈
V
,
j
<
i
v_j\in V,j<i
vj∈V,j<i,同时在
v
j
v_j
vj和
v
i
v_i
vi之间添加可能的边。如果
v
i
v_i
vi和
v
j
v_j
vj都是触发器(trigger)则跳过
v
j
v_j
vj。每一次迭代中,作者构造一个候选边集
E
i
j
=
{
<
j
,
i
,
l
i
j
(
k
)
>
∣
1
≤
k
≤
β
e
}
E_{ij}=\{<j,i,l_{ij}^{(k)}>|1\le k\le \beta_e\}
Eij={<j,i,lij(k)>∣1≤k≤βe},其中
l
i
j
(
k
)
l_{ij}^{(k)}
lij(k)是
e
i
j
e_{ij}
eij中分数第k kk高的标签,
β
e
\beta_e
βe是候选标签数量的阈值。之后,通过如下函数更新束集:
B
←
{
G
+
e
∣
(
G
,
e
)
∈
B
×
E
i
j
}
B\leftarrow \{G+e|(G,e)\in B\times E_{ij}\}
B←{G+e∣(G,e)∈B×Eij}在每次edge step的最后,如果
∣
B
∣
|B|
∣B∣超过束的宽度
θ
\theta
θ,对候选对象按全局分数从高到低进行排序,只保留分数最高的
θ
\theta
θ个。
最后一步之后,返回全局分数最高的图,作为输入语句中提取的信息网络。
4、结论
文章提出了一个联合的端到端IE框架,该框架结合了全局特征来捕捉知识元素之间的相互依赖性。与目前的技术水平相比,作者的框架取得了更好或相当的性能,并证明了全局特征的有效性;独立于语言,可应用于其他语言,并可以从多语言的训练中收益。
优点:
1、提出了一种新的联合神经模型,利用全局特征来捕捉知识元素之间的相互依赖性,从而提高信息抽取的性能。
2、模型包含两个子模型,分别用于实体识别和关系提取,两个子模型共享一个LSTM层,从而减少了模型参数数量,提高了模型的训练效率。
3、通过实验评估,论文证明了该模型在标准数据集上优于当前最佳的基于单独实体识别和关系提取的模型,具有实际应用价值。
展望(不足):
1、该论文只在少量数据集上进行了实验评估,需要在更广泛的数据集上进行验证。
2、该论文没有详细说明如何选择全局特征,以及如何平衡不同类型的特征对模型性能的影响。
3、该论文没有探讨模型的可解释性,即如何理解模型对知识元素之间相互依赖性的捕捉。
总结
本周继续学习了Attention的一些变式,并与RNN、LSTM等进行了对比,Attention相比RNN、LSTM,优势更加明显,但是也存在一些不足,例如位置信息的忽视、长距离依赖等问题,这些在变式上得到了很好的改善。