专栏首页深度学习自然语言处理【论文笔记】基于LSTM的问答对排序

【论文笔记】基于LSTM的问答对排序

【导读】本篇论文使用时间门同步学习文本对之间的语义特征,在 Quasi Recurrent Neural Network (QRNN) 模型的基础上进行创新,提出新的模型Cross Temporal Recurrent Network (CTRN)。论文通过对问题和答案对的遗忘门和输出门的信息中获益,从而学习QA的联合序列对。

QRNN

01

通过结合LSTM和CNN的特征构成的QRNN,其结合了RNN和CNN的特征:

  • 像CNN一样,基于时间步维度和minibatch维度上进行并行计算
  • 像RNN一样,允许输出依赖之前的元素,即过去时间依赖性

与LSTM和CNN一样,QRNN可以分解为2个组件:卷积和池化

与LSTM相比,并行化提高了QRNN的速度,因此作者论文中提出的模型基于QRNN,因为门是预先学习的,它能够容易的在两个QRNN之间对齐时间门。而在LSTM中对齐时间门可能非常麻烦且低效。更重要的一点是QRNN的时间门具有关于整个序列的全局信息而LSTM不具有全局信息。

  • 卷积

给一组长L的序列,每个向量的维度为m,QRNN的卷积内部结构遵循如下公式:

X表示维度为m,长度为L的序列,都是R^{k×n×m}的张量,*表示是以k为宽度的序列维度上的窗口滑动。

  • 池化

Bradbury et al. 2016在论文中池化部分提到了3种方案:f-pooling(动态平均池化)、fo-pooling(基于动态平均池化)、ifo-pooling,本篇论文作者提到了fo-pooling(基于动态平均池化),具有一个独立的输入门和遗忘门:

用公式表示:

这里,c_t表示为神经元状态,h_t表示为隐藏状态,f_t,o_t分别表示为t时刻的遗忘门和输出门。

CTRN

02

作者在论文中提出的模型为 Cross Temporal Recurrent Network (CTRN)

  • Embedding+Projection Layer

模型输入包括两部分(问题q和答案a对),通过embedding层输出一个n维向量,然后通过projection layer输出m维向量

  • Quasi-Recurrent Layer (即QRNN网络)

输入L个向量,并经过3个1D卷积运算获得矩阵Zs,Fs,Os,s={q,a}

  • Light weight Temporal Crossing(LTC)

LTC是作者模型的创新点,在QRNN的基础上进行延伸,在这一层中,有两个CTRN cell,分别是CTRN-Q,CTRN-A,分别代表问题和答案两个部分。从图中可以看出这层中CTRN cell的出入包括5部分,拿CTRN-Q来说,一部分来自自身卷积的输出zq,fq,oq,另一部分来自answer的卷积输出oa,f_a,具体情况如下所示:

这个CTRN-Q包括两步,首先在Zq上应用Fq,Oq,其次将Fa,Oa应用到Zq上,具体计算如下:

t∗ 在这里表示问题和答案的对齐时间,因为他们的序列长度可能不同,计算公式为:

又因为CTRN-Q和CTRN-A是对称的,所以我们可以写出CTRN-A的计算公式:

然后,我们对得到的问题和答案用一个公式表达,对于每个t的隐藏状态进行点乘计算,即:

  • Temporal Mean Pooling Layer

CTRN的输出为一组隐藏状态[h1s,h2s…hLs],在这一层对 CTRN-Q和CTRN-A进行平均pooling计算

  • Softmax Layer and Optimization

最后,将上层的 输出进行二分类的softmax计算:

损失函数:

θ 包含所有的参数,优化器为Adam Optimizer。

实验

03

作者在3个数据集上进行对比:YahooQA、QatarLiving、 TrecQA

TrecQA 数据集有两种训练集:TRAIN、TRAIN-ALL。TRAIN-ALL中包含更多的QA对,同时也包含更多的不利因素。

  • 评估指标

不同数据集采用不同的评估指标。对于YahooQA,采用 P@1 (Precision@1) 和 MRR (Mean Reciprocal Rank);对于QatarLiving,采用n P@1 和 MAP (Mean Average Precision);对于TrecQA,采用MAP和MRR。

  • 实验细节

对于CTRN模型,将输出维度(filter的数量)调整为128的倍数,并且使用单层的CTRN和QRNN,MLP的层数从[1,3]中调整,学习率在{10−3,10−4,10−5},批量大小调整为{64,128,256,512},dropout设置为0.5,L2正则化设置为4×10−6。

  • 实验结果

从上述表格我们可以看到:在这个数据集上,LTC机制比soft-attention更有效;这个评价指标更能看出CTRN与QRNN之间的差异。

作者将CTRN模型与其他模型在数据集TRECQA进行比较,可以看出CTRN的效果更胜一筹。

从时间上边看,完成一个epoch的训练时长相差甚远,QRNN与CTRN相差无几,其他三个模型的时长都相对来说较长。

本文分享自微信公众号 - 深度学习自然语言处理(zenRRan)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 详解循环神经网络RNN(实践篇)

    我们对输入进行one-hot编码。这是因为我们的整个词汇表只有四个字母{h,e,l,o}。

    zenRRan
  • 【python】os 模块使用笔记

    Python内置的os模块可以调用操作系统提供的接口函数,对文件或目录进行操作(实际上操作系统是不允许应用程序直接访问和操作文件和目录的,读写文件就是请求操作系...

    zenRRan
  • 轻松了解模型评价指标

    混淆矩阵: 也称为误差矩阵,是一种特定的表格布局,允许可视化算法的性能,通常是监督学习的算法(在无监督学习通常称为匹配矩阵)。矩阵的每一行代表预测类中的实例,而...

    zenRRan
  • nginx 日志获取不到远程访问ip问题解决

    公司有一个应用,后端web用的是nginx,nginx 的所有请求都是通过前端的代理转发过来的,所有在日志格式里面 获取远程ip的变量用的是 $http_x_f...

    joshua317
  • 数据结构和算法关系

    1、程序 = 数据结构 + 算法 。数据是程序的中心。数据结构和算法两个概念间的逻辑关系贯穿了整个程序世界,首先二者表现为不可分割的关系。没有数据间的有机关系,...

    IT小马哥
  • 命令模式

    首先来看命令模式(Command Pattern)的定义: 《Head First Design Pattern》中的定义是:The Command Pat...

    TheOneGIS
  • 设计模式- 命令模式(Command Pattern)

    易兒善
  • 在Yii2框架中使用Redis

    想要在Yii2这个PHP框架中很好的使用redis键值存储,那么首先就要推荐yii2-redis这个官方的Github库。这个库能够很好的帮助我们在Yii2框架...

    Originalee
  • SpringBoot开发案例之分布式集群共享Session

    在分布式系统中,为了提升系统性能,通常会对单体项目进行拆分,分解成多个基于功能的微服务,如果有条件,可能还会对单个微服务进行水平扩展,保证服务高可用。

    小柒2012
  • docker连接两个容器

    序 容器是用来提供服务的,每个容器都是运行一个进程,或许是一个web程序,或许是一个数据库服务,而在每个容器之间都是需要相互访问的,从而在这里构建一个pytho...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券