Gavin老师Transformer直播课感悟 - 基于Transformer端到端的任务对话系统解密

一、概述

        本文围绕下面这篇论文来分析面向任务的对话系统与用户是如何交互的,SimpleTOD模型的架构特点与内部机制,以及它所使用的训练函数的剖析等。从SimpleTOD内部实现看,是把语言理解(NLU),对话状态管理(Dialogue State Tracking),语言生成(NLG)等采用一种端到端的方式统一起来,在基于开源MultiWOZ数据集进行的训练结果表明,采用这种架构获得了很好的表现。SimpleTOD使用了单一的,基于因果关系的语言模型(如Transformer的decoder端,它是根据左侧的信息来预测右侧被遮住的部分)来训练所有子任务如“理解用户输入”,“系统采取的行为”,“系统产生响应”。对于SimpleTOD来说,这些子任务只是这个单一过程里的不同的“步骤”而已,从而把对话的处理变成一个“单序列的预测问题”。这种架构设计思想使SimpleTOD能够充分利用来自预训练的,开放领域的,具有因果关系的语言模型(如GPT-2)的迁移学习。SimpleTOD不仅改善了对会话状态的管理,它也改善了以端到端的方式评估对话系统行为和响应时使用的主要指标,如”inform rate”提升了8.1个百分点,”success rate”提升了9.7个百分点,综合分数提升了7.2个百分点。

二、Task-Oriented Dialogue系统与用户交互过程解析

        下面是系统用户交互图,分为4个部分,当然也可以把最后2个合并为1个数据库层:

  1. User

        这部分包括了用户的初始输入,以及用户针对系统响应给出的反馈信息。

    2. SimpleTOD

        包含了系统entities部分(Belief),行为(action)部分,产生响应部分。Entities部分包括了Domain,Price range,Area等entity, 其中price range,area等可作为slots。

   3. Database Query

        对数据库(知识库)进行查询,返回查询结果。

   4. Databases

        这就是对话系统里使用的知识库。在实际工程实践中,可能会使用Elasticsearch来替换一般意义上的database。

        根据交互图,可以看到对话处理分以下几个步骤:

-当用户提供初始输入查询餐馆信息时,SimpleTOD首先进行实体识别,并生成SQL查询语句

-SimpleTOD根据查询返回结果决定下一步的系统行为,并用查询结果替换掉模板中的占位符,然后产生系统响应信息给用户

-用户根据系统响应提供反馈信息,SimpleTOD根据用户反馈进行实体识别,生成相关的SQL查询语句,对知识库进行查询

-SimpleTOD根据查询结果决定下一步的系统行为,并用查询结果替换掉模板中的占位符,然后产生系统响应信息给用户

-用户根据系统响应提供反馈信息

        SimpleTOD使用单一的因果关系语言模型在给定的对话上下文环境和基于从知识库查询的结果来产生所有的对话输出,在输出信息时使用了模板并用来自”belief state”和知识库查询结果的信息对模板进行填充,从而使输出信息是人类可读的。

三、Introduction:

       对话系统通常分为两类,一类是开放领域的对话系统,譬如系统和用户的闲聊,并不要求有一个确定的结果,这种系统往往使用来自社交媒体的大规模的数据进行端到端的训练以适应可以无限扩充与用户的对话内容的这样的环境。另一种是面向任务的对话系统,即让用户使用自然语言来完成一个任务目标。在任务对话的pipeline里,需要使用NLU来完成belief state的追踪,对话状态的管理,从而决定系统下一步采取的行为,并使用NLG来产生响应。

       从传统方式来看,对话系统的各个组件是独立训练的,如NLU模块基于领域和intent labels进行训练,对话管理模块使用belief和act labels,NLG模块使用模板产生响应等。 SimpleTOD以“重铸”的方式把对话系统变成一种简单的,因果关系(单向机制,unidirectional)的语言模型,以一种统一的方式使用多任务MLE训练来解决对话系统里的所有子任务。这种方式通过以端到端的方式优化所有任务来对子任务之间的内在依赖进行建模。SimpleTOD也验证了在开放领域语言理解和面向任务的对话系统中的语言理解之间存在比较强的关联,这也是能够进行迁移学习的基础。另外SimpleTOD通过使用noisy-labeled annotation来增强系统的健壮性。

四、related work

       端到端(end-to-end)的解决方案旨在减少人工耗时和特定任务的设计,一些系统使用对话历史和知识库作为输入,优化神经网络的encoder-decoder模型来产生系统响应,另一些系统几乎是端到端的方式,但是仍然需要调用外部的API或者跳过中间的步骤如对话状态管理。增强学习对于对话系统的效果不是太好,主要由于用户行为的太多不确定性。关于联合训练任务的一些例子包括,对对话管理和响应生成进行联合建模,通过注意力机制合并潜在的知识推理而不使用belief states。另外也有领域相关的,使用multi-decoder的模型,并使用了数据增强技术。另外也有使用一个dual Transformer encoder通过相似度比较来选择系统响应的例子。

      SimpleTOD把面向任务的对话系统看做是一个单序列预测问题,使用单个模型,多任务loss来训练。

五. Methods

  3.1 Task-oriented Dialogue

       面向任务的对话(TOD)通过3个子任务来评估:对话状态(belief state)管理,对话管理(action的预测),响应生成。对话由多个turn组成,在一个turn t,用户提供输入Ut,系统产生响应St,在推理过程中为了产生响应,SimpleTOD读取所有的对话历史作为上下文,即表示为Ct = [U0, S0, …, Ut],然后产生一个belief state Bt:

这样一个list记录了在一个特殊领域的slots的值:(domain,slot_name,value)。这个Bt用来查询知识库。

SimpleTOD在查询知识库后得到的结果作为输入,即Dt,然后基于Ct,Bt,Dt组合在一起变成单序列来决定要采取的action At:

这个actions产生一个list: (domain,action_type,slot_name),然后基于前面的条件一起产出一个基于模板的St:

3.2 Causal Language Modeling

把Ct,Bt,Dt,At,St组合形成序列Xt,通过使用概率链式法则来进行因式分解,使用模型参数θ基于数据集D训练神经网络来最大化概率(MLE):

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值