[NLP论文阅读] A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING

论文原文:A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING

引言

这篇文章提出了使用self-attention技术来生成可解释句子向量的模型。通常我们使用向量(vector)来表示单词、短语或者句子向量,在这篇文章中,作者提出可以使用二维句子来表示句子,矩阵的每一行表示句子的不同部分。作者在3个不同的数据集上进行了3种不同的task,分别是author profiling,sentiment classification以及textual entailment,都取得了不错的效果。

模型

作者提出的模型主要由2部分组成。第1部分是一个双向LSTM,第2部分是self-attention mechanism,该机制提供了对LSTM的隐藏层状态进行加和的权重。

模型结构图如下a:
[NLP论文阅读] A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING_第1张图片

模型的输入: S=(w1,w2,...,wn)Rnd ,一个含有n个token的序列, wi 表示序列中第i个token对应的word embedding

输入的S进入一个双向LSTM,第t个单词对应的前向和后向隐藏状态计算方法如下:
双向LSTM
然后将前向和后向的隐藏状态进行连接得到用于后续计算的 ht ,如果LSTM的隐藏单元数为u,则 htR2u 。文中用句子 HRn2u 表示所有隐藏状态h的集合:
隐藏状态集合
至此,BiLSTM的使命结束了。

上图中b部分就是用于生成self-attention的简单前馈神经网络:

a=softmax(Ws2tanh(Ws1HT))

其中, Ws1Rda2u,HTR2un,Ws2R1da ,所以最终a的形状为 R1n ,并且由于使用了softmax函数进行了归一化,a的每一维度可以认为是对应位置单词的attention。
至此,self-attention机制介绍完毕。

然后就可以得到句子表示 m=aHR12u 。但是这不是引言中提到的二维矩阵句子表示。

作者认为常见的向量表示只能表示句子中的某个特定component,那么如何全面的把句子的大部分甚至所有component都表现出来呢,那么一个很自然的想法就是把向量扩展成矩阵。所以我们不能只用单个attention,我们需要对每个component都提供一个attention,所以就要将a变成A。

如果我们需要对句子的r个component进行建模,那么只需要提供r个a,即一个r*2u的矩阵。为了得到这个矩阵,作者将参数 Ws2 的形状从 R12u 调整成了 Rr2u ,那么 aR1n 也就变成了 ARrn .

最终句子表示也从向量 m=aHR12u 变成了 M=AHRr2u
至此,我们得到了矩阵级别的句子表示。

PENALIZATION TERM

作者在实验中发现,如果计算得到的attention句子A中有部分行的值相似的话,最终得到的句子表示矩阵中也会出现一些行的值是相似的,这样就让M变得冗余了。所以在设计网络的损失函数时,需要考虑加入penalization term来让模型得到的A的每一行的差别明显。

作者的设计是在loss加入这么一项:

P=||(AATI)||2F

其中, ||||F 表示的矩阵的Frobenius范数,I是单位矩阵。

设A是mxn的矩阵,其F范数定义为:

||A||F=i=1mj1n|aij|2

所以在模型中,最终的损失函数为cost=交叉熵+ α P,其中 α 是调节P的比重的系数。

实验结果

作者使用了三个不同的数据集:
the Age dataset:一个推特的推文数据集,推文中有对用户年龄的描述,作者将其分为了5个年龄段,该数据上进行的任务是根据推文判断用户年龄段。分类问题。
the Yelp dataset:一个用于情感分类任务的数据集,包含2.7M个评论,分类任务是根据输入的评论推测出评论对应的星数(从1星到5星)。
the Stanford Natural Language Inference(SNLI) Corpus:一个用于关系推理的数据集,其实也是一个分类任务,根据输入的句子对,推测出对应的关系。

实验结果如下:

Models Yelp Age
BiLSTM+Max Pooling+MLP 61.99% 77.40%
CNN+Max Pooling+MLP 62.05% 78.15%
Our Model 64.21% 80.45%

推理任务的实验结果:

Model Test Accuracy(%)
300D LSTM encoders (Bowman et al., 2016) 80.6
600D (300+300) BiLSTM encoders (Liu et al., 2016b) 83.3
300D Tree-based CNN encoders (Mou et al., 2015a) 82.1
300D SPINN-PI encoders (Bowman et al., 2016) 83.2
300D NTI-SLSTM-LSTM encoders (Munkhdalai & Yu, 2016a) 83.4
1024D GRU encoders with SkipThoughts pre-training (Vendrov et al., 2015) 81.4
300D NSE encoders (Munkhdalai & Yu, 2016b) 84.6
Our Method 84.4

探索型的实验

在这个模块主要对penalization term和r的参数设置进行了探索,不多说直接上图。
1. penalization term系数的影响

Penalization coefficient Yelp Age
1.0 64.21% 80.45%
0.0 61.74% 79.27%

2. r的大小(1-30)选择
[NLP论文阅读] A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING_第2张图片

另外,这篇论文有开源的代码,明天学习一下。
我的开源实现:A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING

2017.10.25 上海。

你可能感兴趣的:(paper阅读)