Attention Pooling-based Convolutional Neural Network for Sentence Modeling

author: Yong Zhang, Ph.D.
institution: Nanyang Technological University
email: yzhang067@e.ntu.edu.sg
licence: MIT licensed. No commercial usage

引子

此文是我发表在Information Sciences上的一篇文章的介绍。

简介

句子建模是很多自然语言理解问题的核心,其旨在建立句子的vector representation,是情感分析,文档摘要,机器翻译等等问题的无法绕开的一环。其实句子建模也可以泛化到文档建模(将整个文档视为一个长句),短语建模(一个短语就是一个短句)甚至单词建模(就是word embeeding)。这里的建模可以简单的理解为寻找``句子''的向量表示。

此文基于CNN对句子建模,提出了一个新的pooling机制, 用于解决max pooling丢失信息的问题。本文的贡献在于以下几方面:

  • 提出基于attention的pooling机制,可以有效减少pooling层的信息丢失;
  • 结合BLSTM和CNN,使句子向量同时包括前向,后向,和局部信息;
  • 模型可以隐形地将不同类别的句子分散。

CNN

Convolutional Neural Network (CNN)可以说是近几年最火的算法之一了,凡做图像必用CNN,因为其良好的local representation的能力可以有效提取到图像的局部特征。最近CNN也被广泛应用到NLP领域,本证明学习能力依然出众。基本的CNN模型可以参见Stanford CS231n课程CNN for visual recogonition。本文使用的基本CNN结构包括一层convolution layer和一层pooling layer。简单的结构依然可以取得不错的结果。我们使用了多个不同窗口的CNN以提取不同长度的局部信息,并最终相互连接,这样丰富了句子的表示信息。

Pooling

Pooling是CNN模型中必不可少的步骤,它可以有效的减少模型中的参数数目从而缓解过拟合的问题。常见的pooling机制包括max-pooling和average-pooling,max-pooling又有多种子方法。下表是对常见的pooling机制的一个总结

pooling
pooling

可以看到,1-max pooling是取整个feature map的最大值,local max pooling则是将feature分割成几个小区域后对各个小区域求最大值,k-max pooling是取整个feature的最大的k个值。1-max pooling是最简单的也是用的最广泛的,但是它丢失了句子的顺序信息,而且也没能保留词的强度信息。它无法表示一个词是出现了一次还是多次。local-max pooling和k-max pooling都一定程度上缓解了这个问题,但是依然丢失了较多信息。本文借鉴最近很流行的attention机制,尽可能多的保留convolution层后的信息。

Attention pooling

Attention是近年来比较热门的一个方向,它最初源于computer vision领域,是模仿人类视觉的一个杰出成果。人类的眼睛在观察图像是并不会一视同仁,而是将attention放在真正感兴趣的部分。如果机器可以学会只学习最有用的部分,无疑将大大提高学习效率。这就是attention机制想要实现的。Attention已经在computer vision和NLP领域都取得了不错的成绩,感兴趣的可以读读这篇文章Attention and memory in deep learing and nlp。当然仔细阅读相关文献是加深理解的更好办法。

本文希望将attention机制应用到CNN的pooling层以提取最重要的信息。我们的框架如下图。CNN被用于产生句子的局部向量表示,局部表示通过一个attention pooling层得到最后的句子向量表示。Attention weights是通过比较局部向量和一个BLSTM产生的中间句子变量得到的。我们使用BLSTM来产生中间句子变量的原因是文献显示BLSTM本身可以得到较好的句子向量表示。有关LSTM的基本信息可以阅读文章Understanding LSTMs。最后,在预测过程中,BLSTM得到的中间向量也会作为softmax分类器的输入。

让我们假设CNN得到句子表示为$c = \left[c_1, c_2, \cdots, c_{T}\right] \in {\mathbb{R}^{k \times T}}$(这是pooling以前,所以是个matrix)。k是filter的数目,T是句子的长度。我们在做convolution时选择了`same'模式,意即convlution前后输入和输出的长度相同。
同时我们假设BLSTM得到的句子向量表示为$s'$。我们将$s'$和$c_i$映射到同一个空间就可以对他们进行比较从而得到CNN的局部向量的attention weights了。我们这里使用了cosine similarity进行比较。

$$e_i = sim(c_i,s')$$

$$\alpha_i = \frac{exp(e_{i})}{\sum_{i=1}^{T}exp(e_i)}$$

最终句子的向量表示就是

$$s = \sum_{i=1}^T\alpha_ic_i \in {\mathbb{R}^{k}}$$

Attention pooling可以看做是句子各个词或词组的权重和,每个词的权重代表了该词对句子意思的贡献。模型另外一个重要点在于BLSTM和CNN的结合,BLSTM可以提取句子的前向和后向信息,CNN可以提取到局部信息,那么最终使句子向量同时包括前向,后向,和局部信息。BLSTM的参数在训练过程同时被更新,整个模型是end-to-end的。

Experiment Results

首先是在句子分类问题上的benchmark数据集与state-of-art的方法作比较。胜出!

其次是各个pooling机制的比较,胜出!

最后是模型得到的句子向量(SST-2)的一个可视化结果,我们将句子向量通过tsne映射到2-d平面发现来自不同类的句子被有效的分开了。绿色代表negative的句子,红色代表positive的句子。

局部放大的效果如下面两张图,我们将点替换成所代表的句子。可以看到,模型做出了很好的判断。

欢迎讨论,如需引用,参见

@article{Er2016388,
title = "Attention pooling-based convolutional neural network for sentence modelling ",
journal = "Information Sciences ",
volume = "373",
number = "",
pages = "388 - 403",
year = "2016",
note = "",
issn = "0020-0255",
doi = "http://dx.doi.org/10.1016/j.ins.2016.08.084",
url = "http://www.sciencedirect.com/science/article/pii/S0020025516306673",
author = "Meng Joo Er and Yong Zhang and Ning Wang and Mahardhika Pratama",
keywords = "Deep learning",
keywords = "Convolutional neural network (CNN)",
keywords = "Long-short term memory (LSTM)",
keywords = "Sentence modelling",
keywords = "Text classification "
}

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

推荐阅读更多精彩内容