嘉宾:袁彩霞 博士 北京邮电大学 副教授

整理:Hoh Xil

来源:阿里小蜜 & DataFun AI Talk

出品:DataFun

注:欢迎转载,转载请在留言区内留言。

导读:本次分享的主题为人机对话技术研究进展与思考。主要梳理了我们团队近两年的工作,渴望可以通过这样的介绍,能给大家一个关于人机对话 ( 包括它的科学问题和应用技术 ) 方面的启示,帮助我们进行更深入的研究和讨论。主要包括:

  1. Spoken dialogue system:a bird view ( 首先我们来看什么是人机对话,尤其是 Spoken dialogue。其实说 Spoken 的时候,有两层含义:第一个 spoken 就是 speech,第二个我们处理的语言本身具有 spoken 的特性。但是,稍后会讲的 spoken 是指我们已经进行语音识别之后,转换为文本的一个特殊的自然语言,后面讨论的口语对话不过多地讨论它的口语特性,主要是讲人和机器之间的自然语言对话。)

  2. X-driven dialogue system:紧接着来讲解我们近些年的研究主线 X-driven dialogue syatem,X 指构建一个对话系统时,所采用的数据是什么,从最早的 dialogue -> FAQ -> KB -> KG -> document 以及我们一直在尝试的图文多模态数据。

  3. Concluding remarks ( 结束语 )

01

Spoken dialogue system:a bird view

file

学术界关于对话系统有着不同的划分,这种划分目前看来不是非常准确,也不是特别标准的划分了。但是,接下来的内容,主要是围绕着这两个主线:

限定领域,专门指任务型对话 ( 围绕某一特定用户对话目标而展开的 )。对于任务型对话,对话系统的优化目标就是如何以一个特别高的回报、特别少的对话轮次、特别高的成功率来达成用户的对话目标。所以即便是限定领域,我们这里讨论的也是特别限定的、专门有明确的用户对话目标的一种对话。

开放领域,not purely task-oriented, 已经不再是纯粹的对话目标驱动的对话,包括:闲聊、推荐、信息服务等等,后面逐步展开介绍。

file

我们在研究一个问题或者做论文答辩和开题报告时,经常讨论研究对象的意义在哪里。图中,前面讲的是应用意义,后面是理论意义。我们实验室在北京邮电大学叫智能科学与技术实验室,其实她的前身叫人工智能实验室。所以从名字来看,我们做了非常多的 AI 基础理论的研究,我们在研究这些理论的时候,也会讲 AI 的终极目的是研制一种能够从事人类思维活动的计算机系统。人类思维活动建立在获取到的信号的基础上。人类获取信号的方式大体有五类,包括视觉、听觉、触觉、味觉、嗅觉等,其中视觉和听觉是两个比较高级的传感器通道,尤其是视觉通道,占据了人类获得信息的80%以上。所以我们从这两个角度,设立了两个研究对象:第一个是语言,第二个是图像。而我们在研究语言的时候,发现语言有一个重要的属性,叫交互性,交互性最典型的一个体现就是对话;同时,语言不是一个独立的模态,语言的处理离不开跟它相关的另一个通道,就是视觉通道。所以我们早期更多是为了把交互和多模态这样的属性纳入到语言建模的范围,以其提升其它自然语言处理系统的性能,这就是我们研究的一个动机。

  1. Block diagram

file

上图为 CMU 等在1997年提出来的人机对话框架,基于这个框架人们开发出了非常多优秀的应用系统,比如应用天气领域的 "Jupiter"。这个框架从提出到商业化应用,一直到今天,我们都还沿着这样的一个系统架构在进行开发,尤其是任务驱动的对话。

file

这就是具体的对话系统的技术架构。

  1. Specific domain

file

这个架构发展到现在,在功能模块上,已经有了一个很清晰的划分:

首先进行语音识别,然后自然语言理解,紧接着做对话管理,将对话管理的输出交给自然语言生成模块,最后形成自然语言应答返回给用户。这就是一个最典型的 specific domain 的架构。早期 task 限定的 dialogue,基本上都是按照这个架构来做的。这个架构虽然是一个 Pipeline,但是从研究的角度来讲,每一个模块和其它模块之间都会存在依赖关系。因此,我们试图从研究的角度把不同的功能模块进行统一建模。在这个建模过程中,又会产生新的学术性问题,我们旨在在这样的问题上可以产生驱动性的技术。

  1. Open domain

file

Open domain,也就是“闲聊”,实现上主要分为途径:

第一个是基于匹配/规则的闲聊系统;第二个是基于检索的闲聊系统;第三个是基于编解码结构的端到端对话系统。当然,实际情境中,这几个途径往往结合在一起使用。

02

X-Driven dialogue system

目前无论是任务型对话还是闲聊式对话,都采用数据驱动的方法,因此依据在构建人机对话系统时所用到的数据不同,建模技术和系统特性也就体现出巨大的不同。我们把使用的数据记为 X,于是就有了不同的 X 驱动的对话。

  1. Our roadmap

file

如果想让机器学会像人一样对话,我们可以提供的最自然的数据就是 dialogue。我们从2003年开始做对话驱动的对话;2012年开始做 FAQ 驱动的对话;2015年开始做知识库 ( KB ) 驱动的对话;2016年开始做知识图谱 ( KG ) 驱动的对话,相比于 KB,KG 中的知识点产生了关联,有了这种关联人们就可以在大规模的图谱上做知识推理;2017年开始做文档驱动的对话。这就是我们研究的大致脉络。

  1. Dialogue-driven dialogue

file

早期在做 Dialogue driven 的时候,多依赖人工采集数据,但是,从2013年以来,逐步开放了丰富的涵盖多领域多场景的公开数据集。比如最近的 MultiWOZ,从 task specific 角度讲,数据质量足够好、数据规模足够大,同时涵盖的对话情景也非常丰富。但是,目前公开的中文数据集还不是很多。

file

这个是和任务型对话无关的数据集,也就是采集的人与人对话的数据集。尤其以 Ubuntu 为例,从15年更新至今,已经积累了非常大规模的数据。

以 Dialogue 为输入,我们开展了任务型和非任务型两个方向的工作。先来看下任务型对话:

2.1 NLU

file

当一个用户输入过来,第一个要做的就是自然语言理解 ( NLU ),NLU 要做的三件事为:Domain 识别;Intent 识别;信息槽识别或叫槽填充。这三个任务可以分别独立地或采用管道式方法做,也可以联合起来进行建模。在联合建模以外,我们还做了一些特别的研究。比如我们在槽识别的时候,总是有新槽,再比如有些槽值非常奇怪,例如 "XX手机可以一边打电话一边视频吗?",对应着槽值 "视频电话",采用序列标注的方式,很难识别它,因为这个槽值非常不规范。用户输入可能像这样语义非常松散,不连续,也可能存在非常多噪音,在进行联合建模时,传统的序列标注或分类为思想,在实际应用中已经不足以解决问题了。

我们针对这个问题做了比较多的探讨,右图为我们2015年的一个工作:在这三个任务联合建模的同时,在槽填充这个任务上将序列标注和分类进行同时建模,来更好地完成 NLU。

file

在 NLU 领域还有一个非常重要的问题,随着开发的业务领域越来越多,我们发现多领域对话产生了诸多非常重要的问题,例如在数据层有些 domain 数据可能很多,有些 domain 数据可能很少,甚至没有,于是就遇到冷启动的问题。因此,我们做了非常多的 domain transfer 的工作。上图为我们2016年的一个工作,我们会把数据比较多的看成源领域,数据比较少的看成目标领域。于是,尝试了基于多种迁移学习的 NLU,有的是在特征层进行迁移,有的是在数据层迁移,有的是在模型层进行迁移。图中是两个典型的在特征层进行迁移的例子,不仅关注领域一般特征,而且关注领域专门特征,同时采用了对抗网络来生成一个虚拟的特征集的模型。

2.2 NLU+DM

file

紧接着,我们研究了 NLU 和对话管理 ( DM ) 进行联合建模,因为我们发现人人对话的时候,不见得是听完对方说完话,理解了对方的意图,然后才形成对话策略,有可能这两个过程是同时发生的。甚或 DM 还可以反作用于 NLU。早期我们基于的一个假设是, NLU 可能不需要一个显式的过程,甚至不需要一个显式的 NLU 的功能,我们认为 NLU 最终是服务于对话管理 ( DM ),甚至就是对话管理 ( DM ) 的一部分。所以,2013年的时候,我们开始了探索,有两位特别优秀的毕业生在这两个方面做了特别多的工作。比如,如何更好地联合建模语言理解的输出和对话管理的策略优化。这是我们在 NLU 和 DM 联合建模的工作,同时提升了 NLU 和 DM 的性能。

file