面向任务的对话的键值检索网络(Key-Value Retrieval Networks for Task-Oriented Dialogue)
来源:互联网 发布:python.357战损版 编辑:程序博客网 时间:2024/05/19 03:30
面向任务的对话的键值检索网络
原文:《Key-Value Retrieval Networks for Task-Oriented Dialogue》
原作者:Mihail Eric, Lakshmi Krishnan, Francois Charette, and Christopher D. Manning
摘要
面向任务的神经对话系统一直在尽力实现与知识库的平滑对接。在本试验中,我们试图通过提出一种新型神经对话代理来解决此问题。通过一种新颖的键值对索引机制,该对话代理可有效的支持多域语篇(discourse)。该模型是端对端(end-to-end)可微的(differentiable),无需显式地建模对话状态或置信追踪器(belief tracker)。我们还发布了3031个对话的新数据集,这些对话基于底层知识库,并跨越了车载个人助理空间中的三个不同的任务:日程安排,天气资讯和兴趣点导航(point-of-interest/POI navigation)。我们的体系结构同时对来自所有领域的数据进行了训练,并且根据自动评估和人工评估的指标,在给定的领域上显著地超越了基于竞争规则的系统和其他现有的神经对话体系结构。
1. 介绍
随着新的基于语音(speech-based)的人机界面的成功,高效的面向任务的对话代理变得很有必要,它可以处理日常任务,如事件安排和预订酒店。目前的商业级对话代理往往是脆弱易坏的模式匹配(pattern-matching)系统,无法满足人们想要的灵活对话。神经对话代理是当前最有前途的方法之一,通过强大的distributed representations(不知该如何翻译,这里的意思应该是指用distributed representation方法表示的词向量)可以从数据上直接建立统计模型。
图1:采样自项目数据集。(由于空间限制,一些行列并未显示出来。”-“符号表示该值缺失)
尽管本实验已经取得了一些成功,这些面向任务的神经对话模型仍然面临以下问题:1) 很难在推理和整合知识库信息的同时保留自身端对端的可训练性(trainability)。2) 通常需要用belief trackers和dialogue state information为用户对话明确地建模,这不但需要额外的数据注释,而且会破坏可微性。
为了解决以前神经对话代理的一些建模为问题,我们引进了一个新的体系结构:键-值对检索网络(Key-Value Retrieval Network)。受到近期的键值对内存网络的启发(Miller et al., 2016),该模型将一个基于注意力(attention-based)的键值对机制增加至现有的循环神经网络架构的知识库条目上。由此,无需像传统面向任务的对话系统一样特别训练置信或意图追踪,可以学习如何从知识库里以端对端的样式直接提取有用的数据。该体系不依赖数据域的特性,可通过底层知识库键值对条目的注意力来学习如何适当地将世界知识(world knowledge)并入自己的对话语句。
此外,我们制作了一个公开可用的新语料库,包含3031个对话并涵盖了车载个人辅助空间的三种不同领域类型:日程安排,天气资讯和兴趣点导航。对话是建立在知识库之上的。这使它们成为构建能够无缝地解释世界知识的对话体系结构的理想选择。语料库中对话的多领域特性也使该数据集成为建模架构的可泛化性的测试平台。
因此,我们的工作的主要贡献是两点:1) )我们引入了键值检索网络,这是一种高性能的神经任务型对话代理,它能够通过一个新的键值检索机制,顺利地从底层知识库中整合信息。不像其他只依赖于之前的对话历史的对话代理(Kannan et al., 2016; Eric and Manning, 2017),我们的体系结构能够访问和使用数据库样式的信息,同时还保留了最近神经模型的文本生成优势。由此,我们的模型在许多自动度量和人类评估的基础上,超越了基于竞争规则的系统和其他基准神经模型。2)我们在车载个人助理空间中发布了一个新的公开可用的对话语料库,我们希望这将有助于进一步研究面向任务的对话代理。
2. 键值对检索网络
尽管最近的神经对话模型通过信念和用户意图追踪器显式地为对话状态建模,我们选择依赖于已学习的神经特征来进行对话状态的隐式建模,形成一个真正的端到端可训练系统。我们的模型从编码-解码器序列体系结构开始,并进一步增强了基于注意力的检索机制,它可以有效地通过底层知识库的键值表示来推理。我们将在后面的部分中描述模型的每个组件。我们将在后面的部分中描述模型的每个组件。
2.1 编码器
在用户(
2.2 解码器
通过循环单元来计算解码器的隐层状态,该vanilla(本意为香草,此处应该为普通的意思?不太确定)序列对序列(sequence-to-sequence)解码器对第
2.3 键值对知识库检索
最近,一些面向任务的神经对话通常用以下方法来查询底层知识库和提取有关条目:1) 创建和执行格式良好的API来调用知识库,操作需要中间监督的形式训练槽追踪器(slot tracker),并且这会破坏可微性。2) 静静地留意(softly attend to,不知道怎么翻译。。。望指正)知识库,将概率分布与置信追踪器结合,作为强化学习政策(reinforcement learning policy)的状态输入。我们选择构建后一种方法,因为它可以很好地融入到序列到序列模型的端到端可训练框架中。尽管我们在一个监督学习的环境中,我们不需要明确表示置信跟踪器或对话状态。
为了存储给定对话的知识库,我们从(Miller et al., 2016)的工作中获得了灵感,它发现一种可允许机器高效读取文档的键值结构化内存。我们使用(
最近的文献表明,将一种复制机制加入到神经结构中可以提高各种序列对序列任务的性能。我们以如下方式建立:在每次解码时,取出解码器隐层状态,并使用每个规范化的知识库条目的键来计算一个注意力分值。一个条目的键(key)对应于主题
特别地,让
图2:键值检索网络。对于解码的每个time-step,使用cell state(元件状态)来计算一个对编码器状态的注意力(attention over the encoder states)以及与每个知识库条目的键值有关的单独注意力( a separate attention over the key of each entry in the KB)。编码器注意力用来生成一个上下文向量(context vector),其与cell state结合以获得一个标准词汇表的分布。键注意力将成为相关值的logits,同时也是argmax扩充词汇表中分离出来的单独条目。
(至此,本论文的核心理论部分已经完成,剩余的诸如数据收集和实验结果将慢慢翻译)
3. 一个多回合,多领域的对话数据集
为了多领域对话代理的进一步工作,我们在三个不同领域构建了多轮对话的语料库(corpus):日程安排,天气资讯和兴趣点导航。尽管这些域是不同的,但它们都与用户期望的高级车载个人助理的任务主题相关。
3.1 数据收集
多回合对话的数据是用Wizard-of-Oz方案来收集的(Wizard-of-Oz意思为由人替代机器,以完成数据收集)。在我们的方案中,用户有两种可能的模式:Driver(司机)和Car Assistant(汽车助理)。在Driver模式下,用户被提交了一项任务,其中列出了他们试图从Car Assistant中提取的信息,以及Driver和Car Assistant之间的对话历史。一个可能的示例任务为:You want to find what the temperature is like in San Mateo over the next two days。然后,Driver只需负责提供单行对话,在给定对话历史和任务定义的前提下,使对话可以合适地进行下去。
根据领域类型,任务通过选择3到5个slots(time, date, location, etc.)的values(5pm, Saturday, San Francisco, etc.)来随机指定。为slot指定的value是根据一个per-domain的候选集(candidate set)的均匀分布(uniform distribution)选择的。
在Car Assistant模式中,用户将得知一个来自正在进行中对话的截至当前的对话历史(dialogue history exchanged up to that point in the running dialogue)和一个仅有Car Assistant可知的私有知识库,它包含可满足Driver查询的有用信息。知识库的例子可能包含:一个事件信息日程表,附近城市的每周预报的集合(collection),或包含相关信息的附近兴趣点的集合。然后,Car Assistant负责使用这些私有信息来提供单行语句,从而进行用户导向的对话。Car Assistant还被要求根据当前对话历史的mentioned slots和value填写对话状态信息(dialogue state information)。
每个私有知识库有6到7个不同的行和5到7个属性类型。所使用的私有知识库通过以下方法来生成:为给定的属性类型统一选择一个值,其中每个属性类型都有可变数量的候选值(a variable number of candidate values)。一些知识库会故意缺少一些属性,以支持话语的多样性。
在数据收集过程中,日程安排领域的一些对话没有显式地要求使用知识库。例如,在一个像“Set a meeting reminder at 3pm”这样的任务中,我们希望激励对话要求Car Assistant执行一个任务,同时要求Driver对未指定的信息进行澄清。大约一半的日程安排对话都属于这一类。
- 面向任务的对话的键值检索网络(Key-Value Retrieval Networks for Task-Oriented Dialogue)
- 基于神经网络的图像检索 Neural Codes for Image Retrieval
- Deep Reinforcement Learning for Dialogue Generation-关于生成对话的深度强化学习
- 记忆网络之Key-Value Memory Networks
- KVO Key Value Observing 基于键值的观察者
- 浅谈js的键值对key和value
- JAVA问题总结之24--HashMap键值对(key-value)的操作
- Android开发,建立具有键值对(key-value)关系的spinner
- 基于deep learning的快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)
- 基于deep learning的快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)
- 键值编码(KVC)KEY VALUE CODING
- Key-Value Observing (键值监测)
- Redis键值(Key-Value)设计案例
- 深度学习用于基于内容的图像检索 Deep Learning for Content-Based Image Retrieval
- 基于内容的图像检索 Database for Content-Based Image Retrieval
- 一篇论文 综合区域匹配的图像检索 IRM: Integrated Region Matching for Image Retrieval
- 基于哈希的图像检索 HABIR(HASHING BASELINE FOR IMAGE RETRIEVAL)
- 面向对象(Object-Oriented)的基础
- 达人篇:3.1.1)全检和抽检的差别(注意点);
- Sublime Text 3 在整个文件夹中查找
- input 消除自动记忆功能
- 加入强调语气,使用<strong>和<em>标签
- 使用<span>标签为文字设置单独样式
- 面向任务的对话的键值检索网络(Key-Value Retrieval Networks for Task-Oriented Dialogue)
- java面试之前的复习总结
- CodeForces 832D Round #425 D Misha, Grisha and Underground :LCA求树上路径长度
- oracle数据库的字符集更改
- CodeForces 832B Round #425 Div2 B Petya and Exam:双指针暴力模拟
- Oracle expdp ORA-39006, ORA-39065的解决办法
- Android Service两种启动方式详解(总结版)
- SQL慢查询在Greenplum/Deepgreen中的定位方法
- Oracle的空值处理函数