关于用深度学习做answer selection的论文

最近做question-answering系统,看了几篇相关的论文,涉及到用CNN、LSTM、RNN、Attention等算法,这里做个记录。
1 Attention-Based Convolutional Neural Network for Modeling Sentence Pairs (IBM)
提出了四种基于CNN的模型,用余弦相似度来表示两个句子的相似性。
文章采取了w-average-pooling,所以不需要对长短不一的句子补齐,假设两个句子的长度分别是5、7,embedding size是300,filter size是 3
a) CNN without attention模型
一层CNN模型如下
s0 input words embedding (5×300) –> wide convolution(7×300) –> w-average-pooling (5×300) –>
s1 input words embedding (7×300) –> wide convolution(9×300) –> w-average-pooling (7×300)
由于卷积之后,特征向量的维度不变,因此可以将多层这样的CNN堆叠。最后一层用all-average-pooling,得到句子特征向量,计算它们的cosine 相似度。
b) ABCNN-1 with attention
input embeddings convolution后得到representation feature map,计算两个句子的每两个字之间关联程度,得到5*7的attention matrix,关联程度用Euclidean distance(|x-y|))的变式1/(1+|x-y|)。接着,W0*AT和W1*A分别得到两个句子的attention feature map,W0 、W1是要学习的参数。将representation feature map和attention feature map作为convolution input,卷积。
c) ABCNN-2 with attention
convolution之后,pooling之前,convolution feature map的维度分别是7*300和9*300,计算每个feature的关联程度(1/(1+|x-y|)),得到attention matrix(7*9),将attention matrix的各行元素、列元素相加,得到长度为7、9的两个向量。对convolution feature map做average pooling时,各个feature乘以相应的关联度系数(softmax)。
d) ABCNN-3 with attention
该模型是ABCNN-1和ABCNN-2的混合。

实验结果证明,带CNN的模型比没有卷积神经网络的baseline模型效果好,加入attention后,CNN模型表现变好,ABCNN-3 with attention具有最高的精度。

实际上,实验计算了每个CNN层句子特征向量相似度,假设有k层(k blocks),将k层的余弦相似度做logic regression或者linear SVM。
实验发现,用1/(1+|x-y|)来表征相似度能达到更好的局部最优值。|x-y|是Euclidean distance。

2 LSTM-Based Deep Learning Models for Non-factoid Answer Selection(IBM)
a) QA-LSTM模型。对question和answer分别进行bi-LSTM建模,得到representation feature map,然后mean/max pooling,得到sentence vector,再计算cosine相似度。
b) QA-LSTM/CNN模型。对question和answer分别进行bi-LSTM建模,得到representation feature map,然后分别做convolution、max-k pooling,得到representation feature map。再计算余弦相似度。
c) QA-LSTM with attention模型。对输入进行bi-LSTM建模,得到representation feature map。对answer进行pooling之前,先进行attention matrix操作。
实验结果表示,QA-LSTM with attention模型的效果最好。
3 Applying Deep Learning to Answer Seleciton (IBM)
对比了几种CNN模型,发现用CNN的模型比baseline模型表现明显变好。同时,对question和answer 共用同一个网络的模型比分别对问题、答案建模的模型表现好,这是因为增加问题、答案之间的约束能提升模型表现。
4 Attensive Pooling Networks (IBM)
文章告诉你如何在问题、答案的CNN representation中用attention,* 2 way attention的方法*, 2 way attention 是指question、answer之间相互attention。有的情况下,只有答案对问题的attention,叫做one way attention。假设问题、答案的长度为M、L。
question、answering embedding,经过CNN或者biLSTM之后,分别得到feature map Q(c*M)、A(c*L),c是filter number。这里做convolution之前,对于问题或答案中的一个字,它以这个字为中心,将它与附近的k个词向量拼接组成新的问题(答案)矩阵,这里的k其实相当于filter的宽度,之后卷积filter的size是1×kd,d是embedding size。G矩阵计算如下: G=tanh(QTUA),U是待学习的参数矩阵,维度是(c*c),G矩阵维度是(M*L),表示问题、答案(k size context)的对齐soft alignment。对G的行max-pooling,得到长度为M的向量,第j个元素表示答案对问题的第j个字的重要程度,对G的列进行max-pooling,得到长度为L的向量,同样的,第j个元素表示问题对答案的第j个字的重要程度。对这两个向量softmax,得到的向量的第j个元素表示答案句子对问题中该字的影响。Q、A分别点乘各自的attention vector。此时,Q、A的维度不变,即Q(c*M)、A(c*L)。对Q、A都进行column-wise max pooling, Q、A变成长度为c的vector,计算cosine值,表征问题答案的相似度。
5 Learning Natural Language Inference using Bidirectional LSTM model and Inner-Attention
6 Answer Sequence Learning with Neural Networks for Answer Selection in CQA

some brain-storms:
小孩要一字一字的读文章,随着经验的增长,在一定程度内,句子缺字或逆序都不会影响他的阅读
缺字(CNN),逆序(LSTM)

你可能感兴趣的:(【原创】技术研究,机器学习)