对话管理的一些思考

简介: 开头... 写这个文章的目的是让更多关注,想要搞,正在搞对话管理(dialogue manager,后面简称DM)的同学尽力少踩坑,至于已经在坑里,甚至从坑里爬起来的人那么来多拍拍砖,甚是欢迎! 基本概念 这个是经典的语音智能交互的图,可以.

开头...

写这个文章的目的让更多关注,想要搞,正在搞对话管理(dialogue manager,后面简称DM)的同学尽力少踩坑,至于已经在坑里,甚至从坑里爬起来的人那么来多拍拍砖,甚是欢迎!

基本概念

DingTalk20170705105155.png

这个是经典的语音智能交互的图,可以看到DM的位置,在nlu之后,nlg之前,输入是context和语义表示,输出是当前context下需要执行的action

这里就已经牵扯到很多问题了,语义表示究竟是啥,context里面存什么东西,action是个枚举吗等等等等...这里就不展开了,后面的零零碎碎会有些回答

DingTalk20170705111935.png

试着把满足一个用户的诉求(任务),当成是一个流程图流转的过程。图上有很多节点,甚至回路,从开始节点如果能流转到终结节点,那么这个任务就被完成了。

但是通过每个节点是有代价的,比如需要填上一些信息等,那么我们把这样的代价称为阻力。

用户的输入就是克服这个阻力的动力,用户说的话会转换成语义表示,里面包含的信息越多,那么动力就越强,一次对话流转的节点有可能就很多

比如:
我要去杭州 => 出发地? => 时间? => 坐席? => 确认支付?
vs
我要买一张明天上午10点从北京去杭州的高铁二等座的票 => 出发地OK => 时间OK => 坐席OK => 确认支付?

action在这里并不仅仅是个“字符串的枚举值”,可能还会附带一些参数或数据,用于展示等

举个栗子

DingTalk20170705105655.png

看完所处的位置和输入输出,那么看个"简单"例子,有个直观的感受
例子里表述的就是一个语音导航的交互流程,用户提出诉求,然后筛选得到精确结果,最后启动导航

例子中不同的颜色代表了对话的一些“类型”(这些类型并不是什么标准的定义,仅仅是为了区别角色的变化)

  1. 蓝色,机器发起询问,向人收集信息,直到满足一个阶段的要求(比如满足了请求API的前提)
  2. 红色,主导权从机器转向了人,人可以在某个范围内自由发出指令(比如筛选/过滤结果)
  3. 紫色,人向机器发出了直接改变任务流程的“命令”
  4. 绿色,机器主导发起确认

这样的流程与颜色的前后顺序并不形成模式,列出不同的颜色是为了说明,a) 一个对话的流程往往很复杂,每个阶段都有很多分支可以走;b) 虽然复杂,但是也有一些明显的“模式”可以别捕捉,比如:收集用户信息,确认等

(如果看得仔细,可以发现,第一句话和最后一句话都是“导航”,但是处于完全不同的上下文,最终执行的action会不一样,这里究竟是“上下文无关的NLU”+“DM根据sematic控制action”,还是“上下文相关的NLU” + “DM做简单的sematic到action的映射”...见仁见智,个人推荐前者,欢迎拍砖)

实际上...

DingTalk20170705113814.png

实际上,DM的职责会比想象中的多一些,杂一些

比如:多semantic信息的筛选,rank
这个问题挺现实的,想让一个NLU完成业务的所有语义理解,还是稍微勉强了一些,那么如果面对多个语义输入,总得有个地方做汇聚,那么DM有context,有客户端的info等,是个不错的聚合/筛选的地方

比如:请求第三方服务
第三方服务返回的结果可能会让整个对话朝不同的方向发展(请求成功往下走,请求失败又是另外一条路),如果请求第三方服务作为DM的职责之一,那么会带来很大便利

等等...

(负担更多的职责是有利有弊的,这个需要做权衡)

表示方式

DingTalk20170705114803.png

DM的表示方式有那么几种,各有自己的优缺点。需要注意的是这里只是“表示方式”,无关如何实现(规则方法或者模型方法)

DingTalk20170705115152.png

面临的挑战

讲到这里,其实也就是引出了一些DM的一些挑战(坑)

DingTalk20170705140221.png

我就不一一展开了,重点就是场景的打断与恢复
我觉得这个能力是衡量一个对话管理系统好坏的很关键的点。
有些情况下用户的偏离是无意的,比如:ASR或者NLU的错误导致的偏离,使得系统感知到用户要跳出当前场景
有些情况下用户的偏离是有意的,比如:买火车票的时候,忽然想查个目的地的天气等
(如果把火车票中查天气作为场景的一个分支那么会带来更高复杂性)

场景的打断与恢复

DingTalk20170705151942.png

DingTalk20170705150647.png

篇幅有限我就不详细展开了,上图列出的是一个最简单的做法,实际上还有非常多的细节和优化点

实现方案

OK,那么来看看实现方式。

很多人包括我自己,想到DM的时候,第一时间联想到的就是MDP,POMDP,Reinforcement learning,甚至一些巨复杂的end2end的“高大上”算法...然后就随后带来一堆堆的问题。

模型化困难重重

1 . 训练数据在哪里?标注的成本巨高,连“生语料”的来源都是问题...,就算使用RL这样的无监督算法,那你总得有个agent让他学吧,但如果你把agent弄好了,你就已经有了个rule base对话逻辑了...

2 . PD大笔一挥把交互改了怎么办?痛不欲生,训练语料要么修正要么重新弄,agent也是一样一样的

3 . 如何将服务API及其返回状态融入模型?有些paper确实考虑到了DM的action调用API的事情,恶心的地方是,如果模型的输出的action才决定了,那么API返回请求失败或者没有数据这件事情模型不处理归谁处理呢?所以还要写一个模型的后处理程序?如果成功了怎么办,失败了怎么办?(当然可以让一轮对话调用多次模型,模型返回的是内部action,然后再转换为外部action,这个就不展开了)
...

回到起点

如果仔细想,要解决这个问题,需要想清楚挺多事情的
1 . 在DM这个任务上,为什么需要或者为什么不需要模型?模型的优势和劣势在哪里?
模型无非是想用数据驱动(代价)的方式得到泛化能力(收益)
那么需要弄清楚的是,很多paper并不是单纯的DM任务,其实夹杂了NLU甚至ASR容错等任务,所以他们才用模型,换句话说,其实很多paper标题是DM,其实解决的是NLU + DM的问题,这样的前提下,那么模型的泛化能力起了非常重要的作用。如果你面临是和paper上一样的问题,那么去试试,如果你的情况和paper里面不一样,NLU你已经做好了,仅仅想做DM,那么理清思路,重新出发

2 . 如何规避劣势,发挥优势
做新场景,冷启动,哪来数据,那么能否先获取数据,再逐步往模型进发?如果是这样的思路,能否先rule base,然后再模型化
有个圈子比较难绕出去的是,既然有了rule base DM,而且我们大PD的设计是确定性的,不是概率性的,为啥还要模型呢?这个模型所谓的泛化究竟泛化的是啥?其实就是DM模型化的收益是什么

DM模型化的收益

1 . 优化交互逻辑(主要)。是是是,我们的大PD是很资深,但是和用户的实际使用总是有差别的,模型化把所有的路径都概率化,以一个低概率把机会留给一些“意想不到”的路径(exploration),人走多了自然就是一条“正确”的路,特别是业务存在多场景自由切换的情况下

2 . 千人千面(比较虚)。如果能做到根据不同用户的习惯给出不同的流转方式,那简直太(niu)厉(bi)害(da)了(le)

最后收一下就是,冷启动阶段,先用规则方法打造一个DM,快速上线并满足业务需求,收集数据之后再转换成模型

说了挺多了,有点啰嗦,写得有点累...就匆匆收尾吧

相关文章
开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验。
开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验。
开箱即用的对话机器人解决方案,涵盖问答型对话、任务型对话和聊天型对话等多种场景,为您提供全方位的对话交互体验。
如何将最新的数据集成到 ChatGPT 智能对话中?
在金融领域,基础知识、公告数据、公开财报数据等是非常重要的数据来源。通过将这些数据集成到智能对话中,可以大大提高智能对话的准确性和可靠性。 其中,基础知识数据是指股票、基金、理财等投资产品的基本信息,如名称、代码、类型、净值等等。公告数据包括公司公告、重要新闻、财务数据等等。公开财报数据包括公司年报、季报等等。
智能问答机器人
    智能问答机器人目前已经在自动化客服领域得到了广泛的应用,取得不错的效果。这种技术可以比较好地使用在各种咨询类的场景中,如售前的导购、售后的服务、医院的导诊、甚至医疗的辅助诊断等等。机器人可以迅速地响应用户的请求,提升服务的体验。也可以同时服务大量的用户,极大降低企业提供服务的成本。智能问答机器人一般采用一问一答的方式,高级一些的会采用多轮对话和主动对话的方式,
12121 0
《阿里云产品手册2022-2023 版》——智能对话机器人
《阿里云产品手册2022-2023 版》——智能对话机器人
262 0
阿里云智能对话机器人控制台部署与发布详细说明
智能对话机器人(Intelligent Robot)是一款基于自然语言处理(NLP)和人工智能(AI)技术,面向开发者提供智能会话能力的云服务。开发者可以使用智能对话机器人创建会话机器人,为机器人配置知识库以实现智能问答,使用对话工厂配置意图实现多轮对话与自助服务(如订单查询、物流跟踪、自助退货等),并将机器人部署在不同终端上(如网站、移动APP、智能硬件等)。本文简述智能对话机器人控制台部署与发布的详细说明。
1156 0
阿里云智能对话机器人控制台部署与发布详细说明
分析在智能语音对话流程
一,分析在智能语音对话流程的各个主要模块交互时序流程(以呼入为例),主要流程为: 1.客户拨打电话给智能语音客服。 2.智能语音客服接听电话后,呼叫中心平台调用业务流程管理接口,启动并初始化对话流程状态图。 3.业务对话流程管理模块初始化对话流程状态图后,发送开场白话术给呼叫中心。 4.呼叫中心平台接收到开场白话术,根据配置选择进行TTS语音合成或者直接播放录制好的录音,并进行放音操作通知用户。 5.客户收到开场白语音后同样做出相应的语音回复,开始进行对话流程。 6.呼叫中心平台收到用户的回复语音后通过MRCP协议调用ASR服务进行语音识别。 7.呼叫中心收到ASR返回的文字结果
一个中心+三大原则 -- 小蜜这样做智能对话开发平台
对话工厂(Dialog Studio)是面向第三方开发者的智能对话开发平台,目前已经是云小蜜中智能客服机器人、智能外呼、智能导航的核心对话引擎,服务了政务线、金融线、运营商线、大通用线等众多的客户。本文是云小蜜的资深算法专家李永彬(水德)在2018年做的分享,围绕平台来源、设计理念、核心技术、业务落地情况四大维度讲述了一个较为完整的智能任务型对话开发平台的全景。
5397 0
一个中心+三大原则 -- 小蜜这样做智能对话开发平台

热门文章

最新文章