A Structured Self-attentive Sentence Embedding

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

文章来源:ICLR 2017

学术机构:IBM Watson / Montreal Institute for Learning Algorithms (MILA), Universite de Montr ´ eal

主要参考:学习ML的皮皮虾 左脚能拉小提琴

[图片上传失败...(image-5466aa-1511364279565)]\ldots(n-k+1)}{k!})
[图片上传失败...(image-dc72b9-1511364279565)]\left(u+1\right)}+a\right]^{3/2}\right)])

摘要

目前对于一句话encoder时候往往是通过对所有的隐状态的n-gram进行average或max pooling或者是取最后时刻的隐状态作为一句话的表示,但是要使得模型从全部的隐状态中获取语义讯息很难并且是没有必要的。

本文提出一种self-attention机制來代替上述操作,用一个matrix表示一个句子,并且matrix中的每一个vector都是句子语义某一方面的表示,增强了sentence embedding的可解释性。同时也提出了对模型的一种特殊的正则化项,使得每一行的attention分布尽量集中在某些方面,同时行与行之间的分布尽可能差异化。

除此之外作者还展示将这些attention进行了可视化展示。我们评估我们的模型在3个不同的任务:笔者分析,情感分类,和文本蕴涵。结果表明,比起其他句子嵌入方法在所有的3个任务上的表现我们的模型产生了显着的性能增益。

相关工作

本部分主要讲了从词到段落嵌入式表达的发展及重要的方法

Word Embedding

  • word embedding是一种单个词的分布式表达,可以表示词的语义信息。通常有通常有N-gram和CBOW两种方法。

Phrase/Sentence/Paragraph embeddings

  • 可以很好获得短语和句子的包含语义的分布式表达的方法主要分为两类:

    1. 通过监督学习,为某个明确的任务训练得到的句子表达。通常与接下来的任务有关。

    2. 通过无监督学习获得的全局句子嵌入表达:SkipThought vectors和DBOW模型。全局训
      练可以利用大量的不标记的语料。

    3. 通常,特定训练的句子表达性能优于全局表达。

  • 通过自预测进行句子嵌入式表达(Sentence Embedding via Self-Prediction):类似于自编码的思想,即通过预测自己来嵌入式表达句子。

    • ParagraphVector:优化句子嵌入式表达来预测句子中的以词袋模型表达的句子。
    • Sequential Denoising Autoen-coders (SDAE):应用基于LSTM的编码解码框架。通过>将句子中词的顺序考虑进来,编码器把句子表示为一个嵌入表达,解码器用来预测这个句子。
    • recursive auto-encoder:学习一个句子的句法树的每个节点的嵌入表达,通过预测这
      个节点的子节点来优化嵌入表达。
  • 通过预测临近句子的句子嵌入式表达(Sentence Embeddings via Predicting Adjacent Sentences):充分利用句子的上下文信息。

    • SkipThought and FastSent:通过预测临近句子来训练句子嵌入表达。一个特殊情况就
      是利用编码-解码器通过预测双语平行句来训练句子的嵌入表达。
  • 总结:

    • 所有的以前的在半监督句子嵌入结构的工作要不是通过在句子中词的嵌入表达上做max/average pooling,要么是直接提取LSTM的最后一层作为嵌入式表达。
    • 这些方法限制了嵌入表达——单个向量不能覆盖和区别在同一个句子的不同方面。
  • 本文工作:通过结合自注意力机制和矩阵表达,解决了上述问题。

  • 其他工作:通过利用外部语言结构如分词和依赖树提高句子的表达。但是本文没有
    利用语言结构来指导句子表达模型。

模型

[图片上传失败...(image-a65e82-1511363807983)]

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

Bi-LSTM

模型的输入:$S=\left ( w_1,w_2,...,w_n \right )\epsilon R^{n*d}$,一个含有n个token的序列,w_i表示序列中第i个token对应的word embedding。

输入的S进入一个双向LSTM,第t个单词对应的前向和后向隐藏状态计算方法如下:

![][http://latex.codecogs.com/svg.latex?\vec{h_t}=\vec{LSTM}\left( w_t\vec{h_{t-1}}\right)]

![][http://latex.codecogs.com/svg.latex?\bar{h_t}= \bar{LSTM} \left ( w_t, \bar{h_{t-1}}\right ) ]

然后将前向和后向的隐藏状态进行连接得到用于后续计算的$h_t$,如果LSTM的隐藏单元数为u,则$h_t \epsilon R^{2u}$。文中用句子$H\epsilon R^{n*2u}$表示所有隐藏状态h的集合:
![][http://latex.codecogs.com/svg.latex?H=\left(h_1,h_2,...,h_n\right )]

自注意力机制

上图中b部分就是用于生成self-attention的简单前馈神经网络:
![][http://latex.codecogs.com/svg.latex?a=softmax(W_{s2}tanh(W_{s1}H^T))]
其中,$W_{s1}\epsilon R{d_a*2u}$,$HT\epsilon R^{2un}$,$H\epsilon R^{n2u}$,$W_{s1}\epsilon R{1*d_a}$,所以最终a的形状为$R{1∗n}$,并且由于使用了softmax函数进行了归一化,a的每一维度可以认为是对应位置单词的attention。 至此,self-attention机制介绍完毕。

然后就可以得到句子表示$m=a·H\epsilon R^{1∗2u}$。但是这不是引言中提到的二维矩阵句子表示.作者认为常见的向量表示只能表示句子中的某个特定component,那么如何全面的把句子的大部分甚至所有component都表现出来呢,那么一个很自然的想法就是把向量扩展成矩阵。所以我们不能只用单个attention,我们需要对每个component都提供一个attention,所以就要将a变成A。

如果我们需要对句子的r个component进行建模,那么只需要提供r个a,即一个r2u的矩阵。为了得到这个矩阵,作者将参数$W_{s2}$的形状从$R{1∗2u}$调整成了$R{r∗2u}$,那么$a\epsilon R^{1∗n}$也就变成了$A\epsilon R^{r∗n}$.*

最终句子表示也从向量$m=a·H\epsilon R^{1∗2u}$变成了$M=A·H\epsilon R^{r∗2u}$
至此,我们得到了矩阵级别的句子表示。

惩罚项(PENSLIZATION TEAM)

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

  • Kullback Leibler divergence:权重向量中的任意两个的KL距离是评价多样性的最好的方法。(据说计算成本非常大,所以不用这个方法)
  • 作者的设计是在loss加入这么一项:

![][http://latex.codecogs.com/svg.latex?P=\left | \left ( AA^T-I \right ) \right |]

​ 其中,$\left | . \right |_F$表示的矩阵的Frobenius范数,I是单位矩阵,A是自注意力产生的权重矩阵。之后求Frobenius范数。类似于L2正则项,惩罚项P将被一个系数相乘,然后之前的loss一起被最小化(这个loss取决于之后的>应用)。

可视化

用户画像

用户画像数据集采用包含英语、西班牙语、荷兰语的推特数据,基于这些数据预测用户的年龄。具体结果如下。

[图片上传失败...(image-a43b58-1511363807983)]

情感分类

此项任务采用Yelp数据集,输入为用户评论,输出为用户对商户的评分,分数为1-5。在此项任务中作者将attention矩阵化成了热力图,以观察句子的重要部分,具体如下.

[图片上传失败...(image-bd3b7d-1511363807983)]

文本蕴含

在此任务中模型虽未取得最好的结果,但与最好模型相比只差0.2%。具体结果如下:

[图片上传失败...(image-a1ba88-1511363807983)]

[图片上传失败...(image-fa7ea1-1511363807983)]

如上图所示,左图没有惩罚项,右图有惩罚项,通过左图,我们可以看出没有惩罚项的attention矩阵其行与行之间的差异性较差,每一行聚集的词由很大相似性,而右边的差异性则较好。

(a)和(b)显示了矩阵嵌入的30行中的6行所引起的详细注意,而(c)和(d)通过总计所有30个注意力向量来显示总体关注。

而加入惩罚项的的用户画像任务,其准确率也有所提升。具体如下图所示:

[图片上传失败...(image-ad0cef-1511363807983)]

实验

作者使用了三个不同的数据集:
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%
  1. r的大小(1-30)选择
这里写图片描述

开源实现:A STRUCTURED SELF-ATTENTIVE SENTENCE EMBEDDING

总结

以往论文中常用的句子表示为一维向量,但是这只能表达句子的一部分信息,为此作者提处一种self-attentive机制,并基于此机制,将句子表示为一个2维矩阵,使得句子的信息尽可能多的得到保留,同时为了使得句子的信息尽可能多的保留,即行与行之间尽可能差异化,作者使用了Frobenius范数惩罚项。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容