AAAI2021
本文主要用于改进用于处理长本文的LSTM,降低LSTM中step-to-step
这种传播方式中的时间复杂度。一个非常直观的念头是跳过不重要的单词,不进行门计算即可。本文在已有的Leap-LSTM的基础上引入外部知识,解决Leap-LSTM在跳过单词时对一些重要关键词的忽略的问题。
Leap-LSTM
首先,Leap-LSTM【Leap-LSTM: Enhancing Long Short-Term Memory for Text Categorization,IJCAI2019】根据当前token以及其上下文判断这个词是否应该跳过门计算:
x
t
x_t
xt表示当前token的特征,
f
p
r
e
c
e
d
e
(
t
)
\mathcal{f}_{precede(t)}
fprecede(t)以及
f
f
o
l
l
o
w
(
t
)
\mathcal{f}_{follow(t)}
ffollow(t)表示时间步长
t
t
t前后的上下文特征,最终
π
t
\pi_t
πt表示概率分布,然后这个概率分布上进行Gumbel-Softmax采样(为了保证可微分)得到一个【0-1】分布,也就是一个binary值
d
t
d_t
dt,用于决定当前的
t
t
t是否计算:
损失函数则是一个联合损失:
r
t
r_t
rt表示预定义的skip的概率,
r
r
r表示实际skip的概率。
f
p
r
e
c
e
d
e
(
t
)
\mathcal{f}_{precede(t)}
fprecede(t)表示当前token之前的已经处理过的特征,也就是
h
t
−
1
h_{t-1}
ht−1,而当前
t
t
t之后的特征由一个反向(从后往前读)的小(时间步为
x
t
+
1
:
T
x_{t+1:T}
xt+1:T)LSTM以及一个窗口大小为
x
t
+
1
:
t
+
m
x_{t+1:t+m}
xt+1:t+m的CNN的拼接获取(T表示最长的时间步):
Gumbel-Softmax的表达式如下:
然后,
h
t
h_t
ht更新为:
Knowledge-Aware Leap-LSTM
接下来讨论如何注入知识。本文采用了两种不同的方法:Factored KALL以及Gated KALL。模型的结构如下:
同Leap-LSTM差不多,只不过在计算skip概率的时候结合了外部知识关键词特征
f
t
f_t
ft。在具体介绍之前,介绍一下增强的损失函数:
L
s
\mathcal{L}_{s}
Ls表示skip机制造成的损失(即预定义的和实际的跳过率之间的差值,和Leap-LSTM的差不多),
L
k
\mathcal{L}_k
Lk表示与知识指导相关的成本,用于判定模型预测与关键词判别结果是否一致:
其中
k
w
t
=
1
k_{w_t}=1
kwt=1表示关键词判别器将其视为关键词。
Factored KALL
第一个集成方法是将关键字信息表示为单词嵌入输入中的一个因子,本文使用向量 f t f_t ft判定 w t w_t wt是否为一个关键词。比如 f t = [ d 0 , d 1 , d 2 , d 3 ] f_t=[d_0, d_1, d_2, d_3] ft=[d0,d1,d2,d3],其中 d 0 d_0 d0表示 w t w_t wt是单个关键字还是多关键字的一部分, d 1 ; d 2 ; d 3 d_1;d_2;d_3 d1;d2;d3分别表示 w t w_t wt在一个多字关键词中的起始位置,中间位置和结束位置。如果需要区分关键字之间的相对重要性,我们可以通过将 f t f_t ft设置为不同的正数来为每个关键字设定优先级。图1中的 E t E_t Et是 f t f_t ft与 w t w_t wt的简单拼接。
Gated KALL
通过一个门机制(见图2和图3),使模型保持所有关键字,同时保持网络的可微性。我们定义了两个门:一个关键字门和一个决策门。关键字门使用一个预定义的概率来表示一个词被认为是关键字的程度。将Sigmoid函数应用于预定义的关键字权重
f
t
f_t
ft,当
w
t
w_t
wt是关键词,设置其值远大于1;否则远小于-1。也就是:
决策门(Decision Gate)控制一个词是否被保留,它与关键词门的输入结合并进行进一步的判定计算是否skip:
其中
d
t
d_t
dt是Leap-LSTM决定的是否保留token的binary,
d
t
=
0
d_t=0
dt=0则表明保留;并且
θ
\theta
θ是一个阈值,用于结合关键字门的输出。当决策网络以及关键词门同时判定该词汇应该保留,则采用LSTM计算,否则则不更新。为了使神经网络可微,我们将隐状态更新函数重写为: