博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Convolutional Neural Network Architectures for Matching Natural Language Sentences论文笔记
阅读量:4147 次
发布时间:2019-05-25

本文共 1474 字,大约阅读时间需要 4 分钟。

  • 发表时间:2015年
  • 论文链接:https://arxiv.org/abs/1503.03244v1
  • 代码链接:http://nlp.stanford.edu/˜socherr/classifyParaphrases.zip
  • 代码语言:matlab

摘要

较好的匹配算法能够同时为句子内部结构和句子间的交互信息建模。本文提出的模型通过逐层构图和合并充分表达句子的层次信息,而且能够在不同的层次捕捉到丰富的匹配模式。该算法无需先验知识,而且具有通用性。

句子建模

句子匹配任务的核心是能够充分地为句子建模(即提取sentence-level的特征),本文基于CNN为句子建模,结构如图1所示:

在这里插入图片描述

图1
流程:规定句子最大长度为M, 将句子中的词通过词嵌入表达成一个向量,假设向量维度为d,则MXd 的矩阵为该模型的输入(未达到最大长度的部分采用zero-padding),通过卷积层+max_pooling层将输入矩阵转化为一个固定长度的向量。

这样为什么有效呢?

如图2所示,采用卷积能够从句子中提取出局部的语义组合,如图2中的 the cat sat和cat sat on等这样的短语组合。卷积多个filter能够提取多个feature map,这样就能够从多个角度提取语义组合,如图2中的第一个滑动窗涵盖的feature map1 是the cat sat的特征,feature map2 为cat sat的特征,feature map3为the cat的特征。 采用max pooling层会对多种语义组合进行选择,过滤掉一些置信度低的特征组合,图2中亮的表示特征值较大。
在这里插入图片描述

图2

匹配模型

句子建模后能够提取出一个句子的特征向量,接下来需要利用特征向量对句子对进行匹配建模。

结构1

在这里插入图片描述

图3
这种结构比较直观,对两个句子分别进行特征提取,提取后的两个特征做拼接之类的操作合成一个向量,再喂给MLP进行2分类。缺点是:两个句子是单独提取特征的,使得句子在提取特征时丢失了很多重要的匹配信息,提取特征过程中没有体现句子间的交互性。

结构2

为了解决结构1的问题,提出了结构2,如图

在这里插入图片描述

图4
句子中每个词表示为词向量后,每个句子构成一个矩阵,假设有两个句子X和Y,首先从Sentence x中任取一个向量xa,再从Sentence y中将每一个向量和xa进行卷积操作,通过这种操作,将两个句子中的所有向量两两组合,构成2D矩阵,后续就是正常的卷积、max pooling操作。 这样做之所以有效:1.对句子建模时,就利用了句子间的交互信息;2.保留了词序信息,如图5所示。

在这里插入图片描述

图5

训练

  • loss函数:排序损失函数(ranking-based loss):
    e ( x , y + , y − ) = m a x ( 0 , 1 + s ( x , y − ) − s ( x , y + ) ) e(x,y^+,y^-) = max(0, 1+s(x,y^-)-s(x,y+)) e(x,y+,y)=max(0,1+s(x,y)s(x,y+))
    所表达的意思是,句子x与与其匹配的句子间的相似度得分要高于与其不匹配的句子间相似度得分。
  • batch_szie: 100~200
  • word embedding维度:50,算法Word2Vec
  • 数据:英文数据:Wikipedia(~1B Words) 中文:微博数据(~300M Words)

实验

  • 三个匹配任务:句子自动填充、推文匹配、同义词匹配
  • 效果:结构1和结构2远好于其他算法,结构2稍好于结构1
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

转载地址:http://mljti.baihongyu.com/

你可能感兴趣的文章
Java代码检查工具Checkstyle常见输出结果
查看>>
北京十大情人分手圣地
查看>>
Android自动关机代码
查看>>
Android中启动其他Activity并返回结果
查看>>
2009年33所高校被暂停或被限制招生
查看>>
GlassFish 部署及应用入门
查看>>
X-code7 beta error: warning: Is a directory
查看>>
Error: An App ID with identifier "*****" is not avaliable. Please enter a different string.
查看>>
3.5 YOLO9000: Better,Faster,Stronger(YOLO9000:更好,更快,更强)
查看>>
iOS菜鸟学习--如何避免两个按钮同时响应
查看>>
iOS菜鸟学习—— NSSortDescriptor的使用
查看>>
CORBA links
查看>>
读后感:>
查看>>
如何使用BBC英语学习频道
查看>>
初识xsd
查看>>
java 设计模式-职责型模式
查看>>
构造型模式
查看>>
svn out of date 无法更新到最新版本
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>