A Structured Self-Attentive Sentence Embedding
标签: 论文笔记
Abstract
本论文通过引入self-attention机制提出一种新的模型抽取一种可解释的句子嵌入向量。使用2-D矩阵,每行表示句子的不同部分的特征。本文提出self-attention机制和一种特殊的regularization term。并且能可视化地显示嵌入向量对句子每部分的表示。
Introduction
获得预训练句子的特征主要有两种方式,一是利用非监督的方式进行训练,在处理特定任务的模型中用监督方式进行训练。在一些任务中提出利用注意力机制添加额外的信息利用CNN或者LSTM进行训练。然而对于一些任务中,没有多余的信息,只有句子作为输入。面对这些情况,最常见的做法是,在所有的time steps中加入a max pooling或者averaging step。本论文认为将语义贯穿于一个循环模型的所有步骤中是相对困难的,也没有必要。本论文提出了self-attention机制,用来抽取一个句子的多个特征,好处是解决了LSTM长依赖效果不好的问题。
Approach
句子作为输入,每个词有一个d维向量表示,一共有n个词,所以输入矩阵维度是n-d,然后用双向LSTM学习词之间的关系,每个隐藏层cell大小是u,最后输出的隐藏层矩阵大小是n-2u,然后学习句子的特征。
a
=
s
o
f
t
m
a
x
(
w
s
2
t
a
n
h
(
W
s
1
H
T
)
)
a=softmax(w_{s2}tanh(W_{s1}H_T))
a=softmax(ws2tanh(Ws1HT))
W
S
1
W_{S1}
WS1是权重矩阵,维度是2u-
d
a
d_a
da,
w
s
2
w_{s2}
ws2是一个
d
a
d_a
da维的参数向量,最后得到n维的向量a,a通常表示句子的一个特征,可能映射到句子中的aspect或者句子的一个结构,但是一个句子中可能有多个结构,多个aspect,一个a向量并不能抽取出所有的关键点,因此把向量
w
s
2
w_{s2}
ws2改为维度为
r
−
d
a
r-d_a
r−da的矩阵
W
s
2
W_{s2}
Ws2,所以上式可以改为:
A
=
s
o
f
t
m
a
x
(
W
S
2
t
a
n
h
(
W
s
1
H
T
)
)
A=softmax(W_{S2}tanh(W_{s1}H_T))
A=softmax(WS2tanh(Ws1HT))
M
=
A
H
M=AH
M=AH
A的维度是n-r,得到r个不同的特征。每个特征是n维向量,就是每个词在句子中的权重。权重加和得到一个句子的向量m,维度是2u,r个不同特征,最会M维度是r-2u
penalization term
因为我们并不能保证抽取的每个向量a表示句子中的不同的特征和嵌入矩阵出现冗余问题。最好的方法评价两个向量之间的差异度是相对熵,但是在本方法中相对上是不稳定的,这里利用了另一个算法
P
=
∣
∣
(
A
A
T
−
I
)
∣
∣
F
2
P=||(AA_T-I)||_F^2
P=∣∣(AAT−I)∣∣F2
P越小表示两个向量之间的差异越大,越接近我们的要求,最小化P就可以了。
penalization term
如果注意机制总是提供相似的求和权值,嵌入矩阵M就会出现冗余问题。也就是把A的每行表示句子中不同的部分。最好的方法评价两个向量之间的差异度是相对熵,但是在本方法中相对上是不稳定的,这里利用了另一个算法
P
=
∣
∣
(
A
A
T
−
I
)
∣
∣
F
2
P=||(AA_T-I)||_F^2
P=∣∣(AAT−I)∣∣F2
P越小表示两个向量之间的差异越大,越接近我们的要求,最小化P就可以了。