基于带有标签嵌入的共同关注网络的文本分类
原论文链接地址:https://www.sciencedirect.com/science/article/abs/pii/S0925231221016507
论文作者:Minqian Liu, Lizhao Liu, Junyi Cao, Qing Du
一、带标签嵌入的共同关注网络
作者提出了一个带标签嵌入的共同关注网络(CNLE)来联合编码输入文本序列和标签序列,然后使用它们的共同参与表示来生成文本分类的目标标签。CNLE的总体方案如图1所示。
1.总体方案
在本文中,作者在先前的标签嵌入方法的基础上,重点关注将文本合并到标签注意中,以进一步利用标签中的信息。为此,作者提出了一种文本标签协同关注体系结构,以在编码过程中获得文本关注标签表示和标签关注文本表示,然后利用这两种表示生成目标标签序列。作者提出的共同注意机制背后的直觉是文本和标签的信息可以相互融合。这样模型能够关注文本序列和标签序列中的相关部分。
形式上,考虑文档中包含m个单词标记的文本序列x和预定义标签集C中包含c个标签标记的标签序列l。值得注意的是,标签序列是从标签集C转换而来的,在训练和推断期间,每个样本的标签序列都是相同的。我们的目标是合并标签信息和文本信息,以获得标签关注的文本表示
z
x
∣
l
z_{x|l}
zx∣l和文本关注的标签表示
z
l
∣
x
z_{l|x}
zl∣x:
z
x
∣
l
,
z
l
∣
x
=
f
e
n
c
(
x
,
l
)
z_{x|l},z_{l|x}=f_{enc}(x,l)
zx∣l,zl∣x=fenc(x,l)
其中,
f
e
n
c
f_{enc}
fenc是要学习的任何映射函数。在获得这两种表示之后,使用解码器为每个类生成一个概率序列
y
^
\hat{y}
y^:
y
^
=
f
d
e
c
(
z
x
∣
l
,
z
l
∣
x
)
,
\hat{y}=f_{dec}(z_{x|l},z_{l|x}),
y^=fdec(zx∣l,zl∣x),
其中,
f
d
e
c
f_{dec}
fdec是要学习的任何映射函数。通过这种方式,解码器能够利用相互关注的表示来促进标签预测。
2.文本标签共同关注编码器(TLCE)
TLCE旨在将文本序列和标签序列联合编码为相互关注的文本和标签表示。具体来说,TLCE由上下文编码层、共同关注层和最终编码层组成。
(1)上下文编码层
为了将单词标记和标签标记编码为有意义的编码,作者采用双向长短记忆(BiLSTM)来捕获文本中的上下文线索和标签之间的相关性。
给定输入单词序列
x
∈
R
m
x∈R^m
x∈Rm和标签序列
l
∈
R
c
l∈R^c
l∈Rc,首先将它们分别映射到单词嵌入
X
e
m
b
∈
R
m
×
d
e
m
b
X_{emb}∈R^{m×d_{emb}}
Xemb∈Rm×demb和标签嵌入
L
e
m
b
∈
R
c
×
d
e
m
b
L_{emb} ∈ R^{c×d_{emb}}
Lemb∈Rc×demb。单词嵌入是用预先训练的单词向量初始化的,而标签嵌入是随机初始化的。为了提高计算效率,作者使用了两个独立的线性投影层,将
X
e
m
b
X_{emb}
Xemb和
L
e
m
b
L_{emb}
Lemb分别投影到维度更小的更紧凑的嵌入中,即
X
p
r
o
j
∈
R
m
×
d
X_{proj}∈R^{m×d}
Xproj∈Rm×d和
L
p
r
o
j
∈
R
c
×
d
L_{proj}∈R^{c×d}
Lproj∈Rc×d。这里
d
<
d
e
m
b
d<d_{emb}
d<demb。
为了捕获文本序列中的上下文信息和标签序列中的相关性,作者分别对投影单词嵌入
X
p
r
o
j
∈
R
m
×
d
X_{proj}∈R^{m×d}
Xproj∈Rm×d和投影标签嵌入
L
p
r
o
j
∈
R
c
×
d
L_{proj}∈R^{c×d}
Lproj∈Rc×d应用 BiLSTM:
X
e
n
c
=
B
i
L
S
T
M
(
X
p
r
o
j
)
;
X_{enc}=BiLSTM(X_{proj});
Xenc=BiLSTM(Xproj);
L
e
n
c
=
B
i
L
S
T
M
(
L
p
r
o
j
)
;
L_{enc}=BiLSTM(L_{proj});
Lenc=BiLSTM(Lproj);
其中
X
e
n
c
∈
R
m
×
d
X_{enc}∈R^{m×d}
Xenc∈Rm×d是文本编码和
L
e
n
c
∈
R
c
×
d
L_{enc}∈R^{c×d}
Lenc∈Rc×d是标签编码。为了减少参数的数量,共享此BiLSTM的权重。
(2)共同关注层
为了获得文本关注标签表示和标签相关文本表示,作者将Transformer中广泛应用的self-attention模块修改为共同关注层。作者没有使用self-attention,而是在文本编码和标签编码之间使用co-attention来相互关注。直观地说,标签关注的文本表示可以帮助模型更加关注分类任务的相关单词,而文本关注的标签表示能够强调与文本更好匹配的标签。
为了方便起见,首先回顾Transformer中的标度点积注意和多头注意。标度点积注意定义如下:
A
t
t
e
n
t
i
o
n
(
Q
,
K
,
V
)
=
S
o
f
t
m
a
x
(
Q
K
T
d
h
)
V
,
Attention(Q, K, V)=Softmax(\frac{QK^{T}}{\sqrt{d_{h}}})V,
Attention(Q,K,V)=Softmax(dhQKT)V,
其中,
Q
∈
R
q
×
d
k
,
K
∈
R
k
×
d
k
,
V
∈
R
k
×
d
v
Q∈R^{q×d_k},K∈R^{k×d_k},V∈R^{k×d_v}
Q∈Rq×dk,K∈Rk×dk,V∈Rk×dv。多头注意力定义为:
M
u
l
t
i
H
e
a
d
(
Q
,
K
,
V
)
=
S
o
f
t
m
a
x
(
[
H
1
;
.
.
.
;
H
p
]
)
W
O
,
MultiHead(Q, K, V)=Softmax([H_1; ...;H_p])W^O,
MultiHead(Q,K,V)=Softmax([H1;...;Hp])WO,
其中,
H
i
=
A
t
t
e
n
t
i
o
n
(
Q
W
i
Q
,
K
W
i
K
,
V
W
i
V
)
,
H_i= Attention(QW_i^Q,KW_i^K,VW_i^V),
Hi=Attention(QWiQ,KWiK,VWiV),投影参数为
W
i
Q
∈
R
d
k
×
d
p
,
W
i
K
∈
R
d
k
×
d
p
,
W
i
V
∈
R
d
v
×
d
p
,
W
i
O
∈
R
p
d
p
×
d
h
W_i^Q∈R^{d_k×d_p},W_i^K∈R^{d_k×d_p},W_i^V∈R^{d_v×d_p},W_i^O∈R^{pd_p×d_h}
WiQ∈Rdk×dp,WiK∈Rdk×dp,WiV∈Rdv×dp,WiO∈Rpdp×dh,使用
d
k
=
d
v
=
d
p
,
d
p
=
d
h
/
p
d_k=d_v=d_p,d_p=d_h/p
dk=dv=dp,dp=dh/p是每个头的维数,其中d是间隔模型维数,p是头的数量。使用[·]表示连接操作。原始的多头self-attention只考虑文本模态,即矩阵Q,K和V是文本编码。为了相互细化文本和标签,作者通过将文本编码的
X
e
n
c
X_{enc}
Xenc和标签编码的
L
e
n
c
L_{enc}
Lenc都输入到多头注意模块中,将自我注意转换为共同注意:
X
a
t
t
=
M
u
l
t
i
H
e
a
d
X
(
X
e
n
c
,
L
e
n
c
,
L
e
n
c
)
,
X_{att}=MultiHead_X(X_{enc},L_{enc},L_{enc}),
Xatt=MultiHeadX(Xenc,Lenc,Lenc),
L
a
t
t
=
M
u
l
t
i
H
e
a
d
L
(
L
e
n
c
,
X
e
n
c
,
X
e
n
c
)
,
L_{att}=MultiHead_L(L_{enc},X_{enc},X_{enc}),
Latt=MultiHeadL(Lenc,Xenc,Xenc),
其中,
X
a
t
t
∈
R
m
×
d
h
X_{att}∈R^{m×d_h}
Xatt∈Rm×dh和
L
a
t
t
∈
R
c
×
d
h
L_{att}∈R^{c×d_h}
Latt∈Rc×dh分别是标签参与的文本表示和文本参与的标签表示。
与Transformer架构类似,作者也在层规范化(LN)之后应用剩余连接和两个独立的前馈网络(FFN)来获得它们的融合编码:
X
f
u
s
e
=
L
N
X
(
F
F
N
X
(
X
a
t
t
)
+
X
e
n
c
)
,
X_{fuse}=LN_X(FFN_X(X_{att})+X_{enc}),
Xfuse=LNX(FFNX(Xatt)+Xenc),
L
f
u
s
e
=
L
N
L
(
F
F
N
L
(
L
a
t
t
)
+
L
e
n
c
)
.
L_{fuse}=LN_L(FFN_L(L_{att})+L_{enc}).
Lfuse=LNL(FFNL(Latt)+Lenc).
FFN将输入投射到维度d中,并进一步传播相互关注的信息,而剩余连接将关注的表示与其原始编码相融合。
(3)最终编码层
为了进一步利用标签相关文本编码的上下文信息和文本关注标签编码的相关性,作者在共同关注层的顶部应用了一个最终编码层。在最后的编码过程中,两个独立的BiLSTM分别用于在融合文本编码和融合标签编码中传播相互关注的信息。一个BiLSTM将融合文本编码
X
f
u
s
e
X_{fuse}
Xfuse编码为文本最终表示
X
f
i
n
X_{fin}
Xfin:
X
f
i
n
=
B
i
L
S
T
M
X
(
X
f
u
s
e
)
,
X_{fin}=BiLSTM_X(X_{fuse}),
Xfin=BiLSTMX(Xfuse),
其中,
X
f
i
n
∈
R
m
×
d
X_{fin}∈R^{m×d}
Xfin∈Rm×d。注意
B
i
L
S
T
M
X
BiLSTM_X
BiLSTMX内部的隐藏状态
h
∈
R
d
×
1
h∈R^{d×1}
h∈Rd×1和单元状态
c
∈
R
d
×
1
c∈R^{d×1}
c∈Rd×1被保留用于后续解码过程。它们分别用于初始化LSTM解码器中的隐藏状态和单元状态。
另一个BiLSTM对融合标签编码进行编码,以生成标签序列
L
f
i
n
∈
R
c
×
d
L_{fin}∈R^{c×d}
Lfin∈Rc×d的最终表示:
L
f
i
n
=
B
i
L
S
T
M
L
(
L
f
u
s
e
)
.
L_{fin}=BiLSTM_L(L_{fuse}).
Lfin=BiLSTML(Lfuse).
3.自适应标签解码器(ALD)
ALD利用文本表示和标签表示来生成标签。对于每个时间步,ALD的解码过程分为两个步骤:
1)用LSTM解码器获得隐藏状态、单元状态和循环上下文状态;
2)通过自适应分类器计算每个类的概率。
(1)LSTM解码器
为了在不修改模型的情况下处理多类和多标签分类,作者采用LSTM解码器来生成标签,它能够进一步建模标签之间的相关性。具体来说,作者采用了一个带注意力的标准LSTMCell来实现LSTM解码器。在训练过程中,首先在第t-1解码步骤中为真实标签寻找标签嵌入
e
t
−
1
∈
R
d
×
1
e_{t-1}∈R^{d×1}
et−1∈Rd×1,而在推断过程中寻找预测标签的嵌入。然后,LSTMCell把前一时间步的标签嵌入
e
t
−
1
e_{t-1}
et−1、循环上下文状态
r
t
−
1
∈
R
d
×
1
r_{t-1}∈R^{d×1}
rt−1∈Rd×1、隐藏状态
h
t
−
1
∈
R
d
×
1
h_{t-1}∈R^{d×1}
ht−1∈Rd×1和单元状态
c
t
−
1
∈
R
d
×
1
c_{t-1}∈R^{d×1}
ct−1∈Rd×1作为输入。它输出当前时间步t的隐藏状态
h
t
h_t
ht和单元状态
c
t
c_t
ct,如下所示:
h
t
,
c
t
=
L
S
T
M
C
e
l
l
(
[
e
t
−
1
;
r
t
−
1
]
,
h
t
−
1
,
c
t
−
1
)
.
h_t,c_t=LSTMCell([e_{t-1};r_{t-1}],h_{t-1},c_{t-1}).
ht,ct=LSTMCell([et−1;rt−1],ht−1,ct−1).
这里使用编码过程中的h和c分别初始化
h
0
h_0
h0和
c
0
c_0
c0。
e
0
e_0
e0和
r
0
r_0
r0都是用零向量初始化的。
在获得隐藏状态
h
t
h_t
ht之后,计算注意力权重
a
t
∈
R
m
×
1
a_t∈R^{m×1}
at∈Rm×1来帮助解码器关注与时间步t相关的文本信息:
a
t
=
S
o
f
t
m
a
x
(
X
f
i
n
W
1
h
t
)
a_t=Softmax(X_{fin}W_1h_t)
at=Softmax(XfinW1ht),
其中,
W
1
∈
R
d
×
d
W_1∈R^{d×d}
W1∈Rd×d是一个可训练的矩阵。然后,获得时间步t的循环上下文状态
r
t
r_t
rt,如下所示:
r
t
=
T
a
n
h
(
W
2
[
X
f
i
n
T
a
t
;
h
t
]
)
,
r_t=Tanh(W_2[X_{fin}^{T}a_t;h_t]),
rt=Tanh(W2[XfinTat;ht]),
其中,
W
2
∈
R
d
×
2
d
W_2∈R^{d×2d}
W2∈Rd×2d是一个可训练的矩阵,循环上下文状态
r
t
r_t
rt将在下一个时间步中用于计算隐藏状态
h
t
+
1
h_{t+1}
ht+1。
然后,隐藏状态
h
t
h_t
ht将被传递给自适应分类器以进行后续过程。
(2)自适应分类器
为了利用信息型文本参与标签表示,作者提出了一种自适应分类器。与大多数现有方法中使用的线性投影层相比,自适应分类器能够专注地利用文本参与标签表示来直接输出每个类的概率。
给定时间步t的隐藏状态
h
t
h_t
ht,自适应分类器将最终标签编码
L
f
i
n
L_{fin}
Lfin和隐藏状态
h
t
h_t
ht作为输入,并在时间步t产生概率
y
^
t
\hat{y}_t
y^t:
y
^
t
=
S
o
f
t
m
a
x
(
L
f
i
n
W
3
h
t
)
,
\hat{y}_t=Softmax(L_{fin}W_3h_t),
y^t=Softmax(LfinW3ht),
其中,
W
3
∈
R
d
×
d
W_3∈R^{d×d}
W3∈Rd×d是一个可训练的矩阵,
y
^
t
∈
R
1
×
c
\hat{y}_t∈R^{1×c}
y^t∈R1×c是一个包含每个类在时间步t的概率的向量。通过这种方式,可以直接合并文本参与的标签表示,以方便分类过程。
生成所有T时间步的概率后,计算目标函数L来优化模型,如下所示:
L
=
−
∑
t
=
1
T
∑
i
∈
C
1
[
y
t
=
i
]
l
o
g
(
y
^
t
)
,
L=-\sum_{t=1}^{T}\sum_{i∈C}1[y_t=i]log(\hat{y}_t),
L=−t=1∑Ti∈C∑1[yt=i]log(y^t),
其中,
y
^
t
\hat{y}_t
y^t是在时间步t的真实标签;1[·]是指示函数,若A为真,1[A]=1;若A为假,1[A]=0。另外,该公式可用于多标签分类和多类别分类任务。
二、实验结果
1.定量结果
在这一部分中,作者总共比较了9个基准测试中不同方法的性能。在表3中展示了多类分类的结果,在表4中展示了多重标签分类的结果。
(1)多类别分类
如表3所示,与以前的基线方法相比,本文的CNLE在6个多类数据集上通常获得了更高的精度,这验证了本文方法的有效性。与具有更复杂体系结构的方法(如VDCNN和Encoder1-Encoder2)相比,标签嵌入方法(即LEAM、EXAM)具有良好的性能。与之不同的是,本文的模型同时使用了文本参与的标签表示和标签参与的文本表示。结果表明,与以前的先进方法相比,本文的模型在性能上取得了显著的改进。这很符合直觉,即进一步利用标签中的信息可以更有效地改进文本分类任务。
(2)多标签分类
作者还将本文的模型与以前的多标签分类方法进行了比较。从表4中可以看出,本文的模型优于先前的工作,通常有很大的差距。值得注意的是,在路透社数据集上,本文的模型比以前的方法高出2.9%。改进表明,本文的模型能够更好地处理多标签分类。
2.定性结果
我们将标签到文本的注意力和文本到标签的注意力都可视化到图2中的共同注意力层中。如图所示,分类的重要部分,例如the new york sirloin cooked well, but it was pretty tough两边的注意力得分都较高。这表明本文的共同注意层捕获了文本序列和标签序列中与分类相关的部分,从而验证了所提出的文本标签共同注意机制的有效性。注意,多头注意力模块中的一些注意力被证明是多余的,这一问题已经在一些文献中进行了研究。因此,冗余头部上相应的注意力得分并没有区别,这使得它们看起来很相似。然而,一些注意头(如图2所示,橙色、浅蓝色和蓝色)具有足够的辨别力,便于分类。
三、结论
在本文中,作者介绍了一种文本标签共同关注机制,以实现更有效的文本分类。主要是寻求获得文本序列和标签序列的相互参与表示,这样就能够专注于文本的相关部分和标签,方便文本分类。此外,使用生成解码器可以在不修改模型的情况下处理多类分类和多标签分类。在7个多类分类基准和2个多标签基准上的大量实验表明,本文的方法优于所考虑的基准方法。在未来的工作中,共同注意机制的思想可以进一步应用于其他NLP任务,如小样本文本分类和机器阅读理解。
原论文链接地址:https://www.sciencedirect.com/science/article/abs/pii/S0925231221016507