Loading [MathJax]/jax/output/CommonHTML/jax.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【论文笔记】Multi-Domain Dialogue State Tracking based on State Graph

【论文笔记】Multi-Domain Dialogue State Tracking based on State Graph

作者头像
yhlin
发布于 2023-02-27 09:05:10
发布于 2023-02-27 09:05:10
1.4K0
举报
文章被收录于专栏:yhlin's blogyhlin's blog

Multi-Domain Dialogue State Tracking based on State Graph

概要

问题动机

​ 现有的方法通常将以前的对话状态与对话历史连接作为编码器的输入。它们依赖于编码器的自我注意机制来连接其中的 token。然而,编码器可能会注意到虚假的联系,从而导致错误的推断。

​ 最近的工作 (Kim 等人,2019;Zhu 等人,2020)(SOM-DST) 表明,之前的对话状态已经可以作为对话历史的明确、紧凑、信息丰富的表现;因此,我们不需要使用完整的对话历史,而只需要使用部分对话历史与之结合。一般来说,连接后的输入被输入到一个双向 Transformer 中用于编码,在此基础上提取新的状态。

主要贡献

​ 在本文中,作者提出构造一个将先前对话状态的域、槽和值正确连接起来的对话状态图。通过训练,图节点和边缘嵌入可以编码域域、槽槽和域槽之间的共现关系,反映了一般对话中的强过渡路径。用 Relation-GCN 编码的状态图被融合到 Transformer 编码器中。

  • 提出为 DST 构建一个对话状态图。其中包括对话状态中的元素和其中的共现信息,以提高 DST。
  • 提出了一种处理这种具有许多不同值的多关系图的方法。
  • 我们的方法 (Graph-DST) 在 DST 上的两个公共数据集 (MultiWOZ2.0 和 MultiWOZ2.1) 上实现了最先进的性能,显示了状态图的有用性。特别是,通过合并状态图,我们得到了联合目标精度的 1.30% 和 1.50% 的绝对提高。

模型

​ 本文的工作主要集中在状态图的利用上。因此,将使用 Kim 等人最近提出的有效模型(SOM-DST)(2019)作为基础模型。在下面的小节中,将在状态图之前简要描述基本模型中的组件。

Predictor-Generator Framework

Encoder

, 编码器的输出表示为:

State operation predictor

​ 状态预测,与 SOM-DST 类似,分为: 且只有在预测为 时解码器才生成一个新的槽值。

Decoder

​ 解码器在编码器的输出序列上采用 GRU 网络以及拷贝机制, 被用来初始化 GRU 的初始隐藏状态,为了得到每一个词的概率,在解码的第 步利用拷贝机制:

: 单词嵌入矩阵,跨编码器和解码器共享 : 解码器的输入 : 词表分布 : 输入分布 :其中 为上下文向量, 为状态图的表示,是利用 作为 query 查询得到的状态图表示。 为 GCN 更新后的图节点嵌入,包括值占位符中的隐藏状态。图节点的嵌入将在下一个小节中进行描述。

Dialog State Graph Construction

​ 状态图的构建。堆叠的双向 Transformer Block 利用自注意力机制相当于为输入构建一个完全图(全连接),图中的每个节点表示为 (对于第 块) , 之前提到这个图会非常巨大,会包含一些不怎么正确的链接(噪声)从而影响模型的推理能力。

​ 由于对话框状态是历史的一个紧凑的表示,直接从它中构建一个多关系图(见上图):给定先前对话状态 每一个元组都由 域节点 和槽值节点(占位符)并由 MARKDOWN_HASHb17b5f108a0418c15bc57aa03b31977eMARKDOWNHASH 连接。请注意,图中只包含具有填充值的(域、插槽)对(NULL 和 dontcare 除外)。此外,如果两个域节点在 中同时出现,则添加一个共现边来连接它们。创建共现边是为了 捕获对话中自然相关的域和对话转换 。 插槽边是单向的,而共现边是双向的。

​ 每个域节点或插槽边都有自己的嵌入向量,记为 ,如下图所示:

​ 以前的工作通常假设每个(域、槽)对相互独立。在本文的工作中,从数据中训练出来的 域节点 和槽边 嵌入可以编码 域 - 域 、 槽 - 槽 和域槽共现 ,这可能有助于 DST。此外,由于有许多插槽值(MultiWOZ 数据集中的 4500),并且我们不假设它们是预定义的,因此MARKDOWN_HASH635689d558e216392894fe1b43fb4d33MARKDOWNHASH。相反,这些位置会被在[SLOT] 位置上的输出动态地填充,即 。有了这些上下文化的隐藏状态、与上下文无关的图节点和边缘嵌入,在对话状态图上的推理可以包含不同域和插槽的局部上下文和全局信息。

Graph-Enhanced Transformer

​ 给定一个状态图,我们必须决定:

  1. 如何更新图表示以结合局部上下文、全局域和插槽信息
  2. 如何将基于图的推理与自我注意机制的 token 级推理相结合

如上图所示,第 个 Transformer block 的输出为 被作为输入输入一个多头注意力层,其输出表示 计算如下:

: 为 通过 线性变换而来。

对于图中的一个值占位符,利用对应的 填充它,该表示集成了一个元组的信息。然后利用 GCN 通过池化邻接节点的特征来更新节点表示,例如,对于域节点 :

: 表示相邻的值占位符和对应的插槽边, 表示相邻的域节点; : 占位符中的上下文化表示; : 分别为自环边、进入边和外出边的权重矩阵; : 非别为域、自环边、插槽边、域共现边 的嵌入表示; : 激活函数

​ 因此,更新的域节点表示 对上下文和图结构信息进行编码。然后,通过以下方法将 与相应的 [SLOT] 位置的上下文表示进行融合:

在上的例子中, 融合, 分别与 融合。

实验

数据集

  • MultiWOZ 2.0
  • MultiWOZ 2.1

主要结果

Fast and Scalable Dialogue State Tracking with Explicit Modular Decomposition

概要

​ 本文提出了一种快速和模块化的体系结构,称为显式分解 (EMD),在该结构中, 该结构结合了基于分类和基于提取的方法,并设计了四个模块(三个分类和一个序列标记)来联合提取对话状态。基于 MultiWoz2.0 数据集的实验结果验证了,与最先进的方法相比,模型在复杂性和可伸缩性方面的优越性,特别是在多域对话纠缠着许多话语的情况下。

  • 效率:与之前的工作不同,我们采用序列标记方法直接在话语中注释域槽值,而不是逐个地迭代所有域槽对,从而大大降低了模型的复杂度。
  • 约束输出:为了有效地建模预测域与其相关槽之间的关系,并减少域异常值结果的发生,我们提出了一种列表全局排序方法,使用 KL 散度来制定训练目标。
  • 可伸缩:基于回合级话语,我们提出的模型而不是整个历史对话内容,提供了更好的可伸缩性,特别是在处理多次回合对话方面。此外,我们还使用了一个校正模块来处理在对话进行时状态的变化。

模型

​ 模型利用 MT-DNN(一个与 Bert 具有相同结构的多任务预训练模型,MT-DNN 已被证明是下游 NLP 任务的一个更好的上下文特征提取器),给定对话语句作为输入, MT-DNN 的输出为 为系统话语与用户话语拼接后的长度。句子级表示为 。基于这些上下文表示预测域和信念状态。

​ 如上图的一个对话例子,本文将槽分为两类:

  • S-type: 槽值可以在对话中直接提取
  • C-type: 槽值不在对话中出现,而是来自集合

Domain Prediction Module (DPM)

​ 在多域对话中,目标域可能会随着对话的进行而发生改变。在之前的工作中直接使用 作为句子的表示,在本文中还加了个最后一轮的域结果 输入预测模型。其背后的基本原理是,当当前话语的域不明确时, 可以为域识别提供有用的参考信息。该域被预测为:

: 利用 MT-DNN 将单词嵌入到一个分布表示中 : 预测结果

S-type Slot Tagging Module (SSTM)

Domain-slot-matching constraints

上的分布:

具体来说,R 的损失被记为

  • 如果该槽不需要预测, 的接受到一个概率值为 1
  • 如果需要预测的插槽数为 ,那么相应的 个插槽位置得到的等概率为

的最终隐藏状态输入一个 softmax 层,对所有 S -type 插槽进行分类:

我们没有基于 直接预测 S -type 槽的结果,而是引入了一个域 - 槽匹配约束 R,它有助于避免生成不属于预测域的 S -type 槽。乘法运算如下:

: 点积

C-type Slots Classification Module(CSCM)

:

Dialogue State Correction Module (DSCM)

​ 以前的模型如 TRADE 都是每一步都从头预测,如果上下文变多了会增加噪音影响结果。相反,我们的模型的输入由当前回合的系统话语和用户话语组成,所以我们的模型只输出当前回合的对话状态的估计,并且之前的对话直接包括在了不需要重新预测的地方。

,分类器被表述为:

, 最终联合损失为:

实验

数据集

  • MultiWOZ 2.0

复杂度分析

主要结果

可伸缩性分析

我们从测试数据集中选择 200 个样本,其中每个对话在系统和用户之间有 8 次以上的话语。然后,以第 6 号回合作为阈值,我们将对话内容分为两类,。回合号小于 6 的迭代被分配给 COLD 类别,6 以上的迭代被分配给 HOT 类别。

消融实验

A Comparative Study on Schema-Guided Dialogue State Tracking

概要

问题动机

​ Frame-based 的状态表示在现代面向任务的对话系统中被广泛应用,以建模用户的意图和插槽值。然而,域本体的固定设计使得很难扩展到新的服务和 API

​ 最近的工作提出,使用自然语言描述来定义域本体,而不是为每个意图或插槽定义标记名称,从而提供了一组动态的模式集。

​ 但是,尽管有了新的方法和较好的效果,当前的模式引导的对话状态跟踪任务只对模式定义有限变化的单个数据集进行评估。目前尚不清楚该范式是如何推广到其他数据集和其他不同类型的描述的。

Frame-based: 根据对话框历史记录和预定义的域本体,在每个用户回合时预测一个对话框状态框架 Schema-based: 模式引导的对话状态跟踪与经典范式之间的关键区别是新添加的自然语言描述。

主要贡献

​ 在本文中,作者进行了深入的比较研究,以理解自然语言描述在对话状态跟踪中的使用。该讨论主要包括三个方面:

  • 模式编码模型架构:对模式编码架构的比较研究表明,采用部分注意编码器可以良好地平衡推理速度和准确性。
  • 补充训练的中间任务:通过自然语言推理和问答等中间任务,对模式引导的对话状态跟踪进行补充训练的实验研究。
  • 模式描述的各种样式:对一套新的基准测试数据集进行了针对 SG-DST 和 multiwoz2.2 的不同模式描述风格的深入分析。

相关研究

  • [] 2019-AAAI-Towards scalable multi-domain conversational agents: The schema-guided dialogue dataset.
  • [] 2020-AAAI-Schema-guided dialogue state tracking task at dstc8.

Multi-Sentence Encoder Strategies:

  • [] 2019-ICLR- Poly-encoders: Architectures and pre-training strategies for fast and accurate multi-sentence scoring.
  • [] 2018-ACM- Response ranking with deep matching networks and external knowledge in information-seeking conversation systems.
  • [] 2017-ACL- Sequential matching network: A new architecture for multi-turn response selection in retrieval-based chatbots.

Multi-domain Dialog State Tracking:

  • [] 2019-ACL-Efficient dialogue state tracking by selectively overwriting memory.
  • [] 2019-ACL-Transferable multi-domain state generator for task-oriented dialogue systems.

Transferable Dialog State Tracking:

  • [] 2020-arXiv-Soloist: Few-shot task-oriented dialog with a single pre trained auto-regressive model.
  • [] 2020-arXiv-A simple language model for task-oriented dialogue.
  • [] 2019-arXiv-Find or classify? dual strategy for slot-value predictions on multi-domain dialog state tracking.
  • [] 2019-ACL-SUMBT: Slot-utterance matching for universal and scalable belief tracking.
  • [] 2020-arXiv- From machine reading comprehension to dialogue state tracking: Bridging the gap.

方法

Schema-Guided Dialog State Tracking

Subtasks:

​ 如上图,每个服务的对话状态由 3 个部分组成:, 在不失去一般性的情况下,对于 SG-DST 和 multiwoz2.2 数据集,根据之前对双策略 (DSS-DST) 的研究,将它们的槽划分为 分类槽 和非分类槽。因此,为了填充每个用户回合的对话框状态框架,本文提出了四个子任务:

  • 意图分类(Intent)
  • 请求的槽标识(Req)
  • 分类槽标签(Cat)
  • 非分类槽标签(NonCat) 所有子任务都需要多次将当前对话框历史记录与候选模式描述进行匹配。
Schema Components:

​ 上图展示了 3 个主要的模式组件: 。对于每个意图,模式还描述了其可选或所需的插槽。对于每个插槽,都有一些标志,指示它是否属于分类状态。分类意味着有一组预定义的候选值(布尔值、数字或文本)。

New Questions:

​ 这些添加的模式描述提出了以下三个新问题,下面的讨论将回答下述问题:

  • 应该如何编码对话和模式?
  • 不同的补充训练如何影响每个子任务?
  • 不同的描述样式如何影响状态跟踪性能?
Dialog & Schema Representation and Inference (Q1):

​ 在本节中,将重点讨论使用预先训练的 BERT 匹配对话框历史和模式描述的模型架构。为了支持四个子任务,首先扩展了双编码器和交叉编码器来支持句子级匹配和 token 级预测。然后,提出了一种额外的融合编码器策略,以在不牺牲准确性的情况下获得更快的推理。我们在上图总结了不同的架构。然后,我们显示了每个子任务的分类头和结果。

​ 以上所有的 3 个编码器都将为给定的句子对产生句子级和标记级的表示。我们将它们抽象为两个表示 CLS 和 TOK,并展示为每个子任务做出决策的通用分类头:

  • Active Intent: 通过一个线性层和 softmax 将回合话语表示 CLS 与每一个意图的描述相匹配,输出一个概率分布 .
  • Requested Slot: 在一个回合中可以存在多个被请求的插槽。我们使用与意图预测相同的策略来预测一个请求。但是,为了支持多个请求的插槽预测。我们用
  • Categorical Slot: 对于交叉编码器和融合编码器,我们使用典型的两阶段状态跟踪来逐步构建状态,第一步利用 CLS 分类插槽为 . , 第二步,如果是 active 的,我们将对话历史记录与每个值进行匹配,并通过排序选择最相关的值。
  • Noncategorical Slot: 非分类槽的槽状态预测采用相同的两阶段策略。此外,我们使用对话历史 TOK 的令牌表示来计算每个 token 的两个起始和结束分数,分别表示预测令牌为起始和结束位置的分数。最后,我们找到了起始和结束得分最大的有效跨度.
Supplementary Training(Q2)

​ 除了编码器中使用的训练前微调框架外,建议 在预训练之后,对目标任务进行微调之前 ,为中间任务添加一个 补充训练阶段。它在目标任务上有了显著的改善。此外,大量基于预训练和基于 Transformer 的模型可以公开访问,并在模型中心中组织良好,用于共享、训练和测试。考虑到模式化对话状态跟踪的新任务,在本节中,我们研究了四个具有不同中间任务的子任务来进行补充训练。

​ 如 Q1 所述,我们所有的 4 个子任务都以一对对话框和模式描述作为输入,并使用总和的句子对 CLS 表示进行预测。而 NonCat 也需要基于跨度的检测,如问答。因此,它们与以下句子对编码任务具有相似的问题结构:

Natural Language Inference: 给定一个假设 / 前提句子对,自然语言推理是一项任务,以确定一个假设是包含、矛盾或中性的前提

Question Answering: 给定一个段落 / 问题对,任务是在段落中提取基于跨度的答案

Impact of Description Styles(Q3)

​ 在本节中,我们还将研究 在一种描述风格上训练的模型将如何在其他不同风格上执行 ,特别是在聊天机器人开发人员可能设计自己的描述的场景中。我们 首先 在研究中引入不同风格的描述,然后 我们在每种描述风格上训练模型, 对具有相应的同质和异构描述风格的测试进行评估。考虑到上一节中显示的 交叉编码器 的最佳性能以及它在 DSTC8 挑战中的受欢迎程度,我们在本节中将其作为我们的模型体系结构。

​ 对于每个意图 / 插槽,我们通过以下不同的描述样式来描述其功能:

  • Identifer: 仅仅由一个标识符号来表示
  • NameOnly:直接由数据集提供的意图 / 槽名来表示
  • Q-Name: 将域 / 槽名封装层一个问题如 "What is the value for slot i ?" , "Is the user intending to intent j ?"
  • Orig: SG-DST 和 multiwoz2.2 数据集的原始描述
  • Q-Orig: 与 Q -Name 不同,首先它是基于原始的描述;其次,不总是使用“what is”模板来查询意图 / 槽值,而是添加“what”、which”、“how many”或“when”,这取决于槽所需的实体类型。

实验

数据集

  • SG-DST
  • MultiWOZ 2.2

主要结果

编码器比较

​ 发现服务描述对意图、需求和 CaT 任务没有帮助,而对 NonCaT 任务的影响也不同于 SG-DST 和 multiwoz2.2 数据集。

补充训练结果

主要发现 SNLI 在意图任务上有帮助,SQuAD2 主要对 NonCat 任务有帮助,而它们在 Cat 任务上都没有太大帮助。

不同描述风格的比较

总结

​ 在本文研究中,我们研究了模式对话状态跟踪的三个问题:编码器架构、补充训练的影响和有效的模式描述风格。主要发现如下:

​ 通过缓存 token 嵌入而不是单个 CLS 嵌入,一个简单的 部分注意融合编码器可以获得比双编码器更好的性能,同时推断速度仍然比交叉编码器快两倍 。我们通过对 两个中间任务的补充训练来量化增益 。通过根据最近的工作仔细选择具有代表性的描述风格,我们是第一个 在模式引导的对话框中对不同的描述风格进行齐构 / 异构评估 的方法。结果表明,简单的基于名称的描述在意图和要求任务上表现良好,而 NonCat 任务受益于更丰富的描述风格。所有的任务在训练和测试之间的描述风格上都存在不一致,尽管不同程度各不相同。

​ 我们的研究主要在两个数据集上进行:SG-DST 和 multiwoz2.2,而编码器架构的速度精度平衡和补充训练的发现预计 是数据集无关的 ,因为它们更多地 依赖于子任务的性质,而不是数据集。基于我们提出的基准测试描述套件,齐构和异构评估揭示了跨风格模式引导对话建模的鲁棒性,我们相信我们的研究将为未来的研究提供有用的见解。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​如何处理Express和Node.js应用程序中的错误
使用Express创建API时,我们定义了路由及其处理程序。在理想情况下,API的使用者只会向我们定义的路由发出请求,并且路由将正常运行。但是,我们不会生活在理想的世界中:)。Express知道这一点,并使我们API中的错误处理变得轻而易举。
前端知否
2020/03/23
6.2K0
08_Express框架
使用Node.js进行服务器开发,开发效率比较低,例如在实现路由功能和静态源访问功能时,代码写起来很烦琐 为了提高Node.js服务器的开发效率,人们开发了Express框架,它可以帮助开发人员快速创建网站应用程序。
张哥编程
2024/12/13
3170
08_Express框架
前端Express框架必学之:Node.js项目搭建与接口开发实战
Express是一个基于Node.js平台的轻量级Web应用框架,它提供了简洁的API和丰富的功能,使得开发者能够快速地构建Web服务器和API。本文将带领大家从零开始,使用Express框架搭建一个简单的Web应用。
肥晨
2024/04/24
2.6K0
前端Express框架必学之:Node.js项目搭建与接口开发实战
🥬🐕 node的第一个接口:注册
mongodb安装如果是Mac的请看 这篇文章 操作mongodb的插件有很多,这里我们使用mongoose 安装插件
用户4793865
2023/01/12
1.3K0
2024 版:Node.js+Express+Koa2+Nest.js 开发服务端(高の青)
在现代的 web 开发中,Node.js 是一种非常流行的服务器端 JavaScript 环境。我们来编写一个大致的框架和一些关键代码片段,以帮助你了解如何使用 Node.js、Express、Koa2 和 Nest.js 开发服务端应用。
百课优用户
2024/07/29
4720
Nodejs之express框架的基本使用
此文是个人学习归纳的记录,腾讯云首发,未经允许,严禁转载,如有不对, 还望斧正, 感谢!
言志志
2024/04/30
3210
Node.js学习笔记——Express、路由、中间件、接口跨域解决方案详解(附实例)
Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架 通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。 本质就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法 中文官网 http://www.expressjs.com.cn/
timerring
2022/07/20
4.1K0
Node.js学习笔记——Express、路由、中间件、接口跨域解决方案详解(附实例)
【Nodejs】Express实现接口
node-http模块 ==⇒ express框架 ==⇒ koa =⇒ egg.js
且陶陶
2023/05/09
1.7K0
【Nodejs】Express实现接口
关于Express的一些路由与响应方法
炑焽
2025/01/07
2700
Express 使用详情
Express 是一款基于 Node.js 的 Web 开发框架,它提供了简洁的 API,使得 Web 应用开发变得更加高效和方便。本文将详细介绍 Express 的使用方法,包括安装、基本概念、路由、中间件、模板引擎等,并给出相应的代码示例。
世间万物皆对象
2024/03/20
3520
Express使用手记:核心入门
Express是基于nodejs的web开发框架。优点是易上手、高性能、扩展性强。
IMWeb前端团队
2019/12/05
1.1K0
Node.js 路由的原理、使用方式以及一些常见的应用场景
在 Web 开发中,路由(Routing)是指根据不同的请求路径和请求方法,将请求分发到相应的处理函数或中间件。Node.js 作为一种后端开发环境,也提供了强大的路由功能。本文将详细介绍 Node.js 路由的原理、使用方式以及一些常见的应用场景。
网络技术联盟站
2023/07/07
9230
Express框架
Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。我们可以使用 npm install express 命令进行下载。
星辰_大海
2020/11/10
2K0
Express框架
Express新手入坑笔记之动态渲染HTML
这里的public不会显示在url中, 为了方便判别静态文件的url请求, 我们在public内新建一个static文件夹, 这样所有请求静态文件的url,都会以static开头(这里借鉴了django处理静态文件的方法)
zhaoolee
2018/12/26
3.9K0
Express中间件,看这篇文章就够了(#^.^#)
okaychen
2018/01/05
2.2K0
Express中间件,看这篇文章就够了(#^.^#)
NodeJS背后的人:Express
前置知识:需要掌握了解: JavaScript基础语法 、Node.JS环境API 、前端工程\模块化 ·····
Java_慈祥
2024/08/06
5610
NodeJS背后的人:Express
Express(一) ——简单入门
背景:参加的青训营项目,使用 Express 来实现后端,个人被分配到后端去。于是,简单速通了下 Express。项目结束,回头写下笔记,沉淀一下。
赤蓝紫
2023/01/02
3.7K0
Express(一) ——简单入门
自定义mock数据,实现restful风格api
介绍两种方式做mock的server: - Express for mock - json-server
江米小枣
2020/06/15
1.6K0
如何在Node.js和Express中上传文件
大量的移动应用程序和网站允许用户上传个人资料图片和其他文件。 因此,在使用Node.js和Express构建REST API时,通常需要处理文件上传。
ccf19881030
2020/10/26
7K0
如何在Node.js和Express中上传文件
express的中间件app.use()的使用
安装好了express框架后,会在项目目录中看到node_modules依赖文件包,在项目的目录下新建一个routes目录,并在routes目录下新建index.js文件用于将不同方式请求的路由数据导出。
ruochen
2021/11/24
1.5K0
推荐阅读
相关推荐
​如何处理Express和Node.js应用程序中的错误
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档