关闭

使用深度双向LSTM模型构造社区问答系统

标签: 社区问答神经网络LSTM
613人阅读 评论(0) 收藏 举报
分类:

关于社区问答系统的问题背景,我们在之前的“利用卷积神经网络构造社区问答系统”一文里已经说明得很清楚,本文就不再赘述,不清楚背景的读者可自行参照上文,我们这些相关的研发工作主要是为了开发畅捷通“会计家园”交流社区的相关功能。为了保持行文完整,简明叙述形式化描述的问题如下:


假设我们已知问答库如下:



其中,Qi是问答社区中的历史问题,AiQi问题的精华答案;


现有社区用户提出的新问题:Qnew 


我们需要学习映射函数:



意即对于新问题Qnew,我们希望通过学习系统找到社区中已经出现过的语义相同问题Qi,然后将对应的答案Ai推荐给用户。这样就达到了社区信息复用的目的。这个问题其实对于问答社区比如百度知道、知乎等都是存在的,解决问题的思路也完全可以复用到此类问答社区中。


除了上篇文章讲述的利用CNN来构造ML系统外,我们还尝试了使用RNN及其改进模型LSTM,本文主体内容即为使用深度双向LSTM构造社区问答系统的思路及效果。


|深度双向LSTM模型



                                                       1 深度双向LSTM


深度双向LSTM模型的结构如图1所示。首先强调一下,这个结构也是一个解决对比两个句子相似性的通用RNN解决方案,不仅仅能够使用在问答社区,凡是涉及到对比两个句子或者实体关系的场合完全可以套用这个模型来解决,这点希望读者注意。

 

首先,因为我们面临的问题是对比两个问题QiQj是否语义相同,那么对于RNN来说存在一个神经网络的输入层如何构造的难题。CNN解决这类问题就比较直观,一般一个输入套上一个CNN来抽取出句子特征,然后再套上MLP神经网络来表达两者之间的关系即可。RNN表达单个输入句子是非常直观的,但是直接表达两个句子之间的关系相对而言就没那么直观。一般可以如图1这么做,就是把两个问题QiQj拼接起来,中间用一个特殊分隔符EOS分割,这里EOS不代表一个句子的结束,而是代表两个句子的分隔符号,这个也请读者注意。如此就构造出了RNN的输入层。

 

有了输入层,上面就好处理了。首先我们在输入层之上,套上一层双向LSTM层,LSTMRNN的改进模型,相比RNN,能够更有效地处理句子中单词间的长距离影响;而双向LSTM就是在隐层同时有一个正向LSTM和反向LSTM,正向LSTM捕获了上文的特征信息,而反向LSTM捕获了下文的特征信息,这样相对单向LSTM来说能够捕获更多的特征信息,所以通常情况下双向LSTM表现比单向LSTM或者单向RNN要好。图1中输入层之上的那个BLSTM层就是这个第一层双向LSTM层神经网络。

 

我们可以把神经网络的深度不断拓展,就是在第一层BLSTM基础上,再叠加一层BLSTM,叠加方法就是把每个输入对应的BLSTM层的输出作为下一层BLSTM神经网络层相应节点的输入,因为两者完全是一一对应的,所以很好叠加这两层神经网络。如果你觉得有必要,完全可以如此不断叠加更深一层的BLSTM来构造多层深度的BLSTM神经网络。

 

在最后一层BLSTM神经网络之上,可以使用Mean Pooling机制来融合BLSTM各个节点的结果信息。所谓Mean Pooling,具体做法就是把BLSTM各个节点的输出结果求等权平均,首先把BLSTM各个输出内容叠加,这是pooling的含义,然后除以输入节点个数,这是mean的含义,Mean Pooling就是这个意思。

 

如何从物理意义上来理解Mean Pooling呢?这其实可以理解为在这一层,两个句子中每个单词都对最终分类结果进行投票,因为每个BLSTM的输出可以理解为这个输入单词看到了所有上文和所有下文(包含两个句子)后作出的两者是否语义相同的判断,而通过Mean Pooling层投出自己宝贵的一票。所以RNN场景下的Mean Pooling可以看作一种深度学习里的“民主党”投票机制。


Mean Pooling之上,我们还可以套上一层SoftMax层,这样就可以实现最终的分类目的。


通过以上方式,我们就通过输入层、多层BLSTM层、Mean Pooling层和输出层构造出一个通用的判断两个句子语义是否相同的深度学习系统。其实这个结构是非常通用的,除了判断两个句子关系,对于单句子分类明显也是可以套用这个结构的。


模型结构已经讲完,后面我们将进入实验部分,因为希望和CNN结果进行效果对比,我们先简单说明下两个同样可以用来解决社区问答问题的CNN结构,这两个结构在之前的“利用卷积神经网络构造社区问答系统”文中都有详细描述,这里不展开讲,只是列出结构图,以方便理解和对比模型。


|两个CNN模型结构


两个CNN模型结构参考图2和图3,图2这种结构是利用CNN判断多个输入句子关系的简单直接的结构,含义是先各自抽取每个句子的特征然后比较两者的关系。而图3这种结构的含义是先把两个句子之间的关系明确表达出来作为输入,然后再套上一个CNN模型来进行分类预测。


2 CNN模型1


3 CNN模型2


|实验结果及与两个CNN模型对比


在之前的文章“利用卷积神经网络构造社区问答系统”中我们使用自己构造的实验数据验证了CNN模型2的效果。之后,我们增加了训练数据的数量,以及加大了负例的难度,其实在这个社区问答问题中,负例的难度对于实验效果指标影响是比较大的。所谓难度,是指负例中两个句子间语义相关程度到底有多强,如果负例中两个句子语义相关程度越强,则分类难度越高。


至于模型,我们补充了CNN模型1,在新数据集合下测试CNN模型2的效果,对于BLSTM来说,则做了双层BLSTM和单层BLSTM的实验,所以可以认为有四个模型参与效果对比。


经过参数调优,这四个模型在这个新的训练集和测试集下,具体实验结果如下:


     CNN模型1             分类精度:89.47%

     CNN模型2             分类精度:80.08%

     双层BLSTM模型   分类精度:84.96%

     单层BLSTM模型   分类精度:89.10%


可以看出,在这个问答社区问题里,CNN模型1和单层BLSTM效果接近,而双层BLSTM模型效果有下降,这也许跟实验数据规模不够大有一定关系,所以复杂模型的优势发挥不出来,而CNN模型2则效果相对差些,这也许说明了CNN模型2没有将两个句子的原始信息输入到模型里,而是直接将其关系作为输入,这种情况下存在信息损失的可能。

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

使用深度双向LSTM模型构造社区问答系统

本文探讨了如何使用深度双向LSTM网络来解决问答社区的问题。
  • malefactor
  • malefactor
  • 2016-02-15 18:17
  • 16926

RNN LSTM与GRU深度学习模型学习笔记

RNN(Recurrent Neural Network), LSTM(Long Short-Term Memory)与GRU(Gated Recurrent Unit)都是自然语言处理领域常见的深度...
  • u012033027
  • u012033027
  • 2017-01-09 20:39
  • 4616

基于Simase_LSTM的计算中文句子相似度经验总结与分享

欢迎搜索个人微信公众号“DeepLearning_NLP” 或者扫描博客头像添加关注,会不定期的向用户推送一些深度学习在NLP方面应用的经典论文,实践经验和最新消息。 深度学习在语音和图像领域大显神威...
  • lqfarmer
  • lqfarmer
  • 2017-04-19 17:23
  • 3157

利用卷积神经网络(CNN)构造社区问答系统

问答社区算是一类已经比较成熟的互联网应用了,国外的比如Quora、StackOverflow,国内的比如老派的百度知道,新一代的知乎,都算是代表性的社交类问答社区。问答社区本质上就是个人肉知识库,通过...
  • malefactor
  • malefactor
  • 2015-12-21 20:25
  • 13646

深度学习笔记——利用深度学习构建社区问答系统之相似问题对匹配

深度学习笔记——利用深度学习构建社区问答系统之相似问题对匹配
  • mpk_no1
  • mpk_no1
  • 2017-08-06 23:27
  • 533

compare-aggregate模型 基于文档的问答系统(基于深度attention_LSTM)

  • 2017-12-11 09:50
  • 111KB
  • 下载

【Natural Language Processing】社区问答系统中的comment分类

一、任务要求和环境         本次实验是SemEval-2015 Task 3英语部分的子任务A中,根据社区问答系统中的每一组问题,其中包含的数据有如发布日期,作者的Id,至少一个评论等内容;...
  • LAW_130625
  • LAW_130625
  • 2017-04-14 11:11
  • 488

前沿 | 社区问答系统及相关技术

作者:王斌(中国科学院信息工程研究所)、吉宗诚(南洋理工大学) 近年来,随着Web2.0的飞速发展,社区问答系统(简称社区问答,其中的社区称为问答社区)逐渐成为一种非常流行而实用的互...
  • qq_27432889
  • qq_27432889
  • 2016-01-24 19:56
  • 1135

社区问答系统研究综述

  • 2011-01-07 12:17
  • 261KB
  • 下载

对于人体异常行为检测有训练好的深度学习模型吗? | 社区问答

这里是AI研习社,我们的社区已经正式推出了!欢迎大家来多多交流~mooc.ai/bbs(戳文末阅读原文直接进)社长为你推荐来自AI研习社问答社区的精华问答。如有你也有问题,欢迎进社区提问。 一个小介绍...
  • Y0W1as5eg37urFdS
  • Y0W1as5eg37urFdS
  • 2017-12-13 00:00
  • 149
    个人资料
    • 访问:138710次
    • 积分:2802
    • 等级:
    • 排名:第14808名
    • 原创:132篇
    • 转载:36篇
    • 译文:3篇
    • 评论:40条
    博客专栏
    最新评论