Sequential Match Network: A New Architecture for Multi-turn Response Selection in Retrieval-based Ch-程序员宅基地

技术标签: tensorflow  chitchat  机器学习与神经网络推理  深度学习  

论文链接: https://arxiv.org/pdf/1612.01627.pdf

Paper总结笔记:
这里写图片描述
论文提出了一个基于检索的多轮闲聊架构
闲聊模型一般分为生成模型和检索模型,目前关于检索模型的闲聊还停留在单轮对话中,本文提出了基于检索的多轮对话闲聊。

多轮对话不仅要考虑当前的问题,也要考虑前几轮的对话情景。多轮对话的难点主要有两点:1.如何明确上下文的关键信息(关键词,关键短语或关键句)。 2.在上下文中如何模拟多轮对话间的关系。
现有检索模型的缺陷:在上下文中容易丢失重要信息,因为它们首先将整个上下文表示为向量,然后将该上下文向量与响应sentence向量进行匹配。

为了避免信息丢失,SMN在开始时将候选回复sentence与上下文中的每条语句进行匹配,并将匹配的每对中重要信息编码入匹配向量(注:这是CNN阶段,解决上上述难点1);然后按照话语的时间顺序,对匹配向量进行堆积,以对其关系进行建模(注:即构建GRU2,解决上述难点2)。 最后的匹配阶段就是计算这些堆积的匹配向量。

具体流程说明:
1、首先通过tf-idf抽取出前n-1轮的关键词,通过关键词检索出候选responses
2、将每条response和 utterance的每条 sentence做匹配:通过模型GRU1分别构造word2word和sentence2sentence的向量矩阵。这两个矩阵会在word级别和segment级别获取重要的匹配信息。
3、获取到的两个矩阵通过连续的convolution和pooling操作得到一个matching vector。通过这种方式,可以将上下文进行多个粒度级别的supervision识别并获取重要信息,再通过最小损失matching计算。
4、获取到的matching vector再通过GRU2计算得到context和response的分数。

注:sentence_level计算(copy):
MH233 2017年5月15日
这里计算句子之间的相似度,先计算了两句话每个word之间的相似度(类似于cosine similarity的概念),再计算句子之间的相似度,这里采取的策略应该是叫Bilinear吧(?)还有一种叫做Tensor的相似度计算方法(https://arxiv.org/abs/1511.08277 ),一直解释不清楚两个指标的物理含义。。 另,在得到相似度矩阵之后,使用了CNN结构进行特征提取,这样和直接进行k-max pooling相比有什么不同和优势?
wumark 2017年5月15日
是的,这个是bilinear的相似度计算。bilinear的物理含义你可以理解为,x和y不在一个空间,我们首先需要两个空间的变换矩阵W,让x变到y的空间,之后再在同一个空间做dot。tensor我认为是bilinear的一个扩展,bilinear只会给x,y计算出一个实数值,而tensor可以给x,y计算出一个相似度向量。tensor需要更多的参数,更大的计算量,往往tensor会比bilinear取得更好一些的效果。在这个任务下,CNN比单做k-max pooling是要好的,我做过这个实验。可能是因为CNN可以考虑到相邻词的信息吧。k-max pooling在输入是GRU产出hidden state乘出来的相似度矩阵时候经常会有一些不太好的结果,例如 美丽 的,如果你求k-max很有可能美丽和的都取出来了,因为“的”完全承袭了美丽的hidden state。不过我没有尝试过在convolution之后用k-max pooling,我觉得可能会让效果更好。
mev 2017年5月16日
sequence的相似度计算使用bilinear会比cosine相似度好吗,有没有相关的工作介绍呢,不知道词的相似度使用bilinear计算的话效果会不会好一点
wumark 2017年5月16日
https://arxiv.org/pdf/1611.01747.pdf A COMPARE-AGGREGATE MODEL FOR MATCHING TEXT SEQUENCES 大家都是在不同数据集上进行测试,感觉好像没有一个特别统一的标准。这篇文章的工作就比较扎实,比较了不同相似度算法在很多数据集上的好坏。
mev 2017年5月16日
非常感谢
MH233 2017年5月15日
谢谢,解释的很深刻!完美的解决了我的疑惑。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liuyuemaicha/article/details/72512194

智能推荐

Edge/Chrome浏览器强制将http转https的解决方案_edge 访问http-程序员宅基地

文章浏览阅读4.6k次,点赞7次,收藏15次。Edge版本:120.0.2210.133 (正式版本) (64 位)(此时会自动转成https,这一步不能跳过,接下来继续)(不带http://前缀)(不带http://前缀)该版本下成功,仅供参考。(带http://前缀)_edge 访问http

非常详细的 Docker 学习笔记_docker配置volumes: xx:xx-程序员宅基地

文章浏览阅读575次。一、Docker 简介Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台 -- Docker HubDocker 使用客户端-服务器 (C/S) 架构模式。Docker 客户端会与 Docker 守护进程进行通信。Docker 守护进程会处理复杂繁重的任务,例如建立、_docker配置volumes: xx:xx

杭电ACM——HDU-1108最小公倍数_acm 杭电最小公倍数-程序员宅基地

文章浏览阅读602次。HDU 1108此题有两种方法:(1)欧几里德求最大公约数,再求最小公倍数#includeusing namespace std;int fun(int a,int b){while(a!=b){if(a>b) a=a-b;//欧几里德法,只要两个数不相等,就反复要大数减小数,直到相等为止if(a}return a;}int ma_acm 杭电最小公倍数

再见XShell!这款国产终端更好用!-程序员宅基地

文章浏览阅读826次。大家好,我是TJ一个励志推荐10000款开源项目与工具的程序员昨天和小伙伴闲聊的时候说起了SSH工具,TJ君心目中一款优秀的SSH工具需要具备以下几个特点:连接稳定;支持文件传输;易操作简..._shell工具国产

Git版本控制使用方法入门教程-程序员宅基地

文章浏览阅读299次。1. 概述对于软件版本管理工具,酷讯决定摒弃CVS而转向Git了。为什么要选择Git? 你真正学会使用Git时, 你就会觉得这个问题的回答是非常自然的。然而当真正需要用文字来回答时,却觉得文字好像不是那么够用。 咳,该则么回答呢?其实,关键的问题不在于如何回答这个问题。 问题的关键是公司已经决定使用它了。那么,我们的程序员们! 请开动你们的浏览器,请拿出你的搜索引擎工具,去_版本控制使用方法

67.二进制求和(简单)-程序员宅基地

文章浏览阅读25次。给你两个二进制字符串a和b,以二进制字符串的形式返回它们的和。

随便推点

小白在mac安装eclipse及Java和karel全记录1_maclctetrls是什么意思-程序员宅基地

文章浏览阅读371次。小白在mac安装eclipse及Java和karel全记录1系统版本: macOS Mojave 10.14.2你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。第一步下载java下载java1.8版本 (我们需要先下载java的1.8版本,确认可以运行eclipse后再下载Java的1.6版本,保证Karel在eclipse内可以正常运行)java1.8官方链接:h..._maclctetrls是什么意思

react源码解析3.react源码架构_react前端架构图-程序员宅基地

文章浏览阅读109次。react源码解析3.react源码架构视频讲解(高效学习):进入学习往期文章:1.开篇介绍和面试题2.react的设计理念3.react源码架构4.源码目录结构和调试5.jsx&核心api6.legacy和concurrent模式入口函数7.Fiber架构8.render阶段9.diff算法10.commit阶段11.生命周期12.状态更新流程13.hooks源码14.手写hooks15.scheduler&Lane16.concurrent模式17._react前端架构图

执行apt-get update时 报错ModuleNotFoundError: No module named ‘debian‘_modulenotfounderror: no module named 'debian-程序员宅基地

文章浏览阅读1.2k次,点赞25次,收藏25次。没有reinstall,sudo apt remove python3-debian && sudo apt install python3-debian。亲测: 其实可以执行`sudo apt reinstall python3-debian` 以修复._modulenotfounderror: no module named 'debian

jquery-隐藏和显示_jquery隐藏ul-程序员宅基地

文章浏览阅读1.4k次。jquery hide() / show()先上个效果图通过jquery的hide()show()方法来隐藏/显示html元素语法:$(selector).hide(speed,callback);$(selector).show(speed,callback);(可选的) speed 参数规定隐藏/显示的速度,可取以下值:"slow"、"fast" 或毫秒(可_jquery隐藏ul

JNI实战-Android深度学习模型部署_将深度学习模型封装成jni-程序员宅基地

文章浏览阅读511次。传统方式 java->javac -> .class->javah -jni->.h C/C++实现.h中声明的方法 添加并编写.mk文件 通过CMake工具 CMakeLists.txt 学习资源https://www.jianshu.com/p/b4431ac22ec2_将深度学习模型封装成jni

获取接口重定向后的url,两种方式:-程序员宅基地

文章浏览阅读895次。获取接口重定向后的url的方式