本文将回顾平安人寿近期在 PaperWeekly 直播间进行的主题为「DSTC 8“基于 Schema 的对话状态追踪”竞赛冠军方案解读」的技术分享,由平安人寿 AI 团队高级算法工程师马跃老师主讲。

在 2019 年第八届对话系统挑战赛(DSTC 8)中,平安人寿 AI 团队斩获包括 “Track4:基于 Schema 的对话状态追踪”在内的三项赛事世界第一,并受邀在 AAAI 2020 workshop 发表论文。

在该赛事中,平安人寿 AI 团队提出了一个对话状态追踪框架 PA-DST,基于阅读理解模型和 Wide & Deep 模型、综合深度语义特征、特征工程和数据增强等技术,完成多领域的对话状态追踪。

本期直播视频回放:

https://www.bilibili.com/video/BV1ha4y1Y7x1

以下是该方案的技术细节详解。

比赛介绍

对话系统挑战赛 DSTC 由微软、卡内基梅隆大学的科学家于 2013 年发起,旨在带动学术与工业界在对话技术上的提升,在对话领域具有极高的权威性和知名度,迄今已举办了 8 届。比赛结合时下最前沿、最具挑战性的对话系统技术问题设置比赛任务,本届比赛吸引了全球超百支来自知名企业、顶尖大学及研究机构的代表队伍参与。

▲ 图1 : 平安人寿AI团队斩获DSTC 8 Track4赛事冠军

平安人寿 AI 团队在 DSTC 8 中斩获“基于 Schema 的对话状态追踪”、“端到端的问答预测”以及“面向多领域端到端对话系统”三项赛事世界第一。

本次分享赛题为“基于 Schema 的对话状态追踪”,该赛题任务为跨领域的多轮对话状态追踪,包括对 Zero-shot 领域的对话追踪任务。为此,团队创新性提出了端到端对话状态追踪框架,融合学术前沿深度模型和工业的特征工程来解决对话状态追踪问题。

1.1 背景简介

对话状态追踪(Dialogue State Tracking, DST)是人机对话领域的一个重要问题,其目的是识别当前时刻用户的对话状态(意图和槽位填充信息),其结果作为对话系统的动作生成依据。当前 DST 的核心难点在于跨领域的状态继承和 Zero-shot 领域的 DST 任务。此次 DSTC 8 “基于 Schema 的对话状态追踪”任务也是基于此背景提出。

1.2 任务介绍

本次任务围绕多领域人机交互的 DST 进行,提出的模型需要对每一个用户轮次的用户状态进行预测,准确识别领域中每个槽位填充的具体信息。该任务对每一个领域服务均给出了一个 Schema,通过这个 Schema 完成意图和槽位的定义。以 Travel 为例,具体定义如下:

a)领域描述:一句自然语言描述当前领域,如 The biggest database of tourist attractions and points of interest

b)意图集合,以 FindAttractions 意图为例,有:

  • 意图名称:FindAttractions

  • 意图描述:一句自然语言描述当前意图,如:Browse attractions in a given city

  • 必须填充的槽位集合:完成这个意图必须填充的槽位

  • 可选槽位集合:非必须填充槽位

c)槽位集合,对于每一个槽位,有以下信息:

  • 槽位名称,如 number_of_person

  • 槽位描述:一句自然语言描述当前槽位,如:Number of people to find tickets for

  • 是否可枚举:不可枚举槽位的取值为对话上下文的片段;可枚举槽位的取值只能为 Possible_values 中的一个

  • Possible_values:如果为可枚举槽,则有一个预定义好的槽值集合,如 [1,2,3,..,9];如果为不可枚举槽,则无该字段。

通过上述的信息,完成了对服务的定义。在每一个用户的轮次,模型在指定的领域内,需要预测的具体内容如下:

  • 已知的所有必须填充槽位的槽值

  • 如果为不可枚举槽位,且槽值位于当前用户的表达内容中,还需要给出槽值在用户表达中的具体起止位置信息

1.3 比赛挑战

本次任务的难度较大,一方面,多领域人机对话中,不同领域的槽位是有继承性的,如地点槽位(如:机票预订的目的地和宾馆的城市);另一方面,需要考虑对 Zero-shot 服务的迁移性,在测试中,会出现大量全新的领域,他们在训练集中没有对应的训练数据。

综合这两个方面,模型需要摆脱传统 DST 中所有槽位都是预设好的限制,从继承性和迁移性两个方面进行全新设计。

解决方案介绍

2.1 可枚举槽位 vs. 不可枚举槽位

对于可枚举槽位,因为它是使用了原文的一个对话片段来作为槽值,并且在数据中能够直接获取当前槽值在原文中的位置信息,我们使用了阅读理解的模型(MRC-DST)来解决这类问题。

对于不可枚举槽位,由于它的槽值不是原文中的一个直接片段,而是需要经过语义理解和归一化得到,因此无法使用阅读理解模型来解决。针对这类槽位,我们使用分类模型来进行建模,利用大规模预训练模型来建立深度语义表示,同时,利用规则、正则之类的辅助方法抽取出语义离散特征。

综合深度和离散两类特征,建立了一个 Wide & Deep 的分类模型(WD-DST)来解决这类槽位的追踪问题。

整体建模思路如图2。

▲ 图2 : 整体结构

2.2 MRC-DST

模型结构如图3所示。

▲ 图3 : MRC-DST模型结构,包括两部分输入,对话历史上下文信息和问题(槽位描述)

模型的输入包括两部分:

第一部分为整个对话的上下文信息,对于不同角色的表达,我们使用了 User 和 System 标签来区分,分别加在每个角色表达的内容头部,再进行拼接,得到整个对话历史 S;

第二部分为需要预测的槽位的描述 D,即 Schema 中提供的槽位自然语言描述。因为在开发集、测试集中,会存在一些 Zero-shot 的领域和槽位,如果只使用槽位名字来作为输入,那么整个模型的通用能力就会下降,因为可以互相继承的槽位他们取名之间的关联性并不大。

例如在机票预订服务中,关于人数的槽位被命名为 number_of_ticket,而在火车票预订中,表示人数的槽位则被命名为 number_of_seat,只有通过更加详细的解释,才能够确定他们是表达同一个意思的槽位,在多领域交叉进行交互的时候,才能被继承。

在一般的 MRC 解决方案中,输入的问题常常是问句形式存在的,但在状态追踪任务上,我们使用了槽位的描述来替代传统 MRC 中的“问题”,省去了构造传统问题的步骤。

参考 BERT-like 模型的拼接方式,得到最终的输入 (注:XLNet 的输入中 位于末端)。模型的输出包括两部分:

第一部分为 Answerable Indicator(槽值存在指示器),其功能是指示当前计算的槽位,是否能在上下文中找到答案片段。因为在交互过程中,并不是每个槽位都会被提及,因此需要设置一个答案指示器 ,来筛选出能够找到槽值的槽位。

第二部分包括一个答案起止位置向量 和结束位置向量 。如果 Answerable Indicator 指示当前槽位有答案,则进行该部分计算。在两个向量中,找到概率最大的起止位置,从输入的对话历史中截取对应的文本片段作为最终的槽值。

模型的计算过程如下:

模型基于 XLNet 得到的深度语义表示,计算槽值存在指示器和起止位置向量。假设真实的槽值存在性为 ,真实答案片段的起止位置向量为为 和 。使用两个部分中三个 Loss 共同指导模型训练:

2.3 WD-DST

模型结构如图4所示

▲ 图4 : WD-DST模型结构,包括三部分输入,对话历史上下文信息、问题(槽位描述)与需要判断的槽值、离散特征

模型包括三部分输入,第一部分和 MRC-DST 一致;第二部分与 MRC-DST 的输入有一些差别。在这里除了使用槽位描述之外,还会对拼接上当前需要判断的槽值;

第三部分为抽取到的离散特征,在这里我们抽取了包括槽值是否在对话历史中、槽值的同义片段是否在历史中、用户表达的语气、用户是否表疑问等一系列统计特征来刻画对话历史。

模型的目标是判断当前输入的槽值,是否正确。最上层使用了一个全连接神经网络来计算最终的得分。面对一个槽位的多个候选值,我们选取得分最高的一个作为最终槽值。整个模型使用真实的槽值标签与输出计算误差进行训练,具体的计算过程如下:

2.4 数据增强

一个值得一提的小技巧是数据增强,我们使用了业界的翻译 API 和文本 API,对可枚举槽位的槽值内容进行了同义拓展,从而提升了模型和特征工程的泛化性。

例如“演出活动”服务中的“类型”槽位,某一个取值为 Theater,通过数据增强,可以得到如 Drama、Broadway、The stage 等同义表达,只要同义片段被判定为最终答案,即等价于 Theater 为最终答案。

2.5 模型拓展与思考

在实验的过程中,我们也发现了一些有意思的点,这里也列举出来供参考:

  • 当决策性信息处于上下文末端时(一般为用户表达的最后一句话提及了槽值信息),MRC 和分类模型都容易预测错误。针对这个现象,我们直接将用户表达的最后一句话复制并拼接在末端的方法来解决,相当于直接把上下文有效内容前置。

  • 数据预处理中,我们使用统一的标签来替换具有干扰性的信息,如电话号码。

  • 同一个模型,不同次 Fine-tuning,他们的错误 case 不同。针对这个问题,使用最简单的 Ensemble 想法来解决,使用多个模型投票的策略来确定最终槽值。

应用价值

基于寿险业务场景需求,平安人寿 AI 团队重点攻关对话式机器人技术。目前,对话式机器人作为平安人寿智能转型的利器之一,在客户服务和代理人赋能两大业务体系中已大规模落地,覆盖招聘、培训、销售支持、客服等业务场景,并将持续发挥价值。

平安人寿 AI 团队此次参赛所应用到的创新技术,在实际业务场景中,可支持多领域的客服系统、人机对话平台的对话管理等技术应用,对搭建寿险垂直领域的对话系统起到重要推动作用,能大幅提升对话式机器人的响应效率和服务体验。

参考文献

[1] Gao et al. "Dialog state tracking: A neural reading comprehension approach." arXiv 2019.

[2] Wu et al. "Transferable Multi-Domain State Generator for Task-Oriented Dialogue Systems" ACL 2019.

[3] Chao and Lane, "BERT-DST: Scalable End-to-End Dialogue State Tracking with Bidirectional Encoder Representations from Transformer", INTERSPEECH 2019.

[4] Cheng et al. "Wide & deep learning for recommender systems", Proceedings of the 1st workshop on deep learning for recommender systems. 2016.

[5] Rastogi et al. "Towards scalable multi-domain conversational agents: The schema-guided dialogue dataset." arXiv 2019.

[6] Zhang et al. "Find or classify? dual strategy for slot-value predictions on multi-domain dialog state tracking." arXiv 2019.

[7] Ma et al. "An end-to-end dialogue state tracking system with machine reading comprehension and wide & deep classification." AAAI 2020 DSCT 8 Workshop.

更多阅读

#投 稿 通 道#

 让你的论文被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。

???? 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向)

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志

???? 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site

• 所有文章配图,请单独在附件中发送

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通

????

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

关于PaperWeekly

PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。

实录 | DSTC 8“基于Schema的对话状态追踪”竞赛冠军方案解读相关推荐

  1. 直播 | DSTC 8“基于Schema的对话状态追踪”竞赛冠军方案解读

    「PW Live」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义, ...

  2. 任务型对话(二)—— DST(对话状态追踪)

    1,概述 关于任务型对话的简介看任务型对话(一)-- NLU(意识识别和槽值填充). 首先我们来看下对话状态和DST的定义. 对话状态:在$t$时刻,结合当前的对话历史和当前的用户输入来给出当前每个s ...

  3. 对话系统-“任务型”多轮对话(二):对话状态追踪(DST)【基于规则;基于模型】【输入:当前意图和槽值对+历史槽值对;输出:State(槽值对集合)或State Vector 】【为DP做数据准备】

    在任务型的对话系统中,对话状态跟踪(DST)的目标是从对话历史中监控对话的状态. DST的输入:Intent+Slot+History:输出:State或State Vector DST中的State ...

  4. Spring-AOP 基于Schema配置切面

    概述 简单切面配置实例 示例 配置命名切点 示例 各种增强类型的配置 示例 绑定连接点信息 Advisor配置 概述 如果项目不能使用Java5.0, 那么就无法使用基于@AspectJ注解的切面. ...

  5. Spring5参考指南:基于Schema的AOP

    文章目录 基于Schema的AOP 定义Aspect 定义Pointcut 定义Advice advice参数 Advisors 基于Schema的AOP 上篇文章我们讲到了使用注解的形式来使用Spr ...

  6. 基于华为云对话机器人技能平台的规则模板概述

    华为云对话机器人服务中的技能平台,向机器人服务提供了一系列即插即用的技能,可为对话机器人增加了用户配置机器人的灵活度. 在邀测的过程中,我们总结了在技能平台上使用的规则配置上的一些功能和想法,与大家分 ...

  7. python vue token_Haytham个人博客开发日志 -- Flask+Vue基于token的登录状态与路由管理...

    指路牌 符合一下关键词,这篇博客有可能会对你有帮助 不使用工厂函数的Flask应用 不使用蓝本的Flask应用 Flask跨域配置 基于Token的登录状态管理 Flask+Vue Vue路由拦截 A ...

  8. teradata查看正在运行的进程_一种基于greenplum数据库的状态检查及性能监控工具.doc...

    一种基于greenplum数据库的状态检查及性能监控工具 开发中心 导师责任制结业论文 题目:一种基于GreenPlum数据库的状态检查及性能监控工具 学员姓名: 导 师: 部 门: 非功能集成测试处 ...

  9. 认知电子战 (2.2):基于机器学习的目标状态识别

    文章目录 引入 1 已知目标状态 1.1 基于有监督分类 1.2 基于无监督聚类 2 未知目标状态 2.1 未知状态检测 2.2 增量式机器学习 引入   本节主要介绍基于机器学习的目标状态识别.以下 ...

最新文章

  1. 开源资产管理系统java_开源资产管理软件 GLPI 9.3.1 部署
  2. BUUCTF(pwn)bjdctf_2020_babystack2
  3. C++:Static修饰变量 vs Static修饰函数
  4. POJ - 2774 Long Long Message(后缀数组)
  5. Win2D 入门教程 VB 中文版 - 防止内存泄漏
  6. 更改“我的文档”文件夹的默认位置
  7. 互站卖的分发美化版可以封装双端APP
  8. opencv中很有趣的仿射变换(Affine Transformation)
  9. Project项目视图
  10. docker安装踩坑
  11. 你不知道的水浒好汉,在这里!
  12. 熬夜学Java语言-File类浅解析
  13. k8s(kubernetes)通过yaml从harbor拉取镜像(史诗级,保姆级)
  14. 基于深度学习的命名实体识别研究综述——论文研读
  15. 【C语言常识】Keil MDK的分散加载文件.sct
  16. 我是一个创业者,也是一个开发者!
  17. java导出excel报表_java怎样导出Excel报表呢?
  18. js 格式化prettier配置_prettier 格式化插件
  19. Ripple(瑞波)会是下一个金融科技巨头吗?
  20. 快递员扫描的设备是什么

热门文章

  1. es6 Map、Set和Array.from()
  2. 磁盘上没有足够的空间完成此操作_【教程】Windows的磁盘分区,两分钟搞定!!...
  3. centos图形界面的开启和关闭
  4. 10_上午回顾数据库事务
  5. 随笔1106-练习例题
  6. 移动搜索引擎-网页信息预处理
  7. hibernate.hbm.xml详解
  8. 2010 February
  9. bom event周期_DOM-BOM-EVENT(1)
  10. mysql实现俩个属性加减运算_SQL实现相邻两行数据的加减乘除操作