车万翔:基于迁移学习的任务型对话系统
- 2020-10-20 11:38:00
- 刘大牛 转自文章
- 230
编者按:2020 年 9 月 25日,哈工大社会计算与信息检索研究中心副主任车万翔教授受邀在由中国科协主办,清华大学计算机科学与技术系、AI TIME 论道承办的《2020 中国科技峰会系列活动青年科学家沙龙——人工智能学术生态与产业创新》上进行了主题为《基于迁移学习的任务型对话系统》的学术报告,重点介绍了他和博士生覃立波在跨领域、跨语言和跨任务的任务型对话系统中所做的一些研究工作。
2020 年 9 月 25日,由中国科协主办, 清华大学 计算机科学与技术系、AI TIME 论道承办的《2020 中国科技峰会系列活动青年科学家沙龙—— 人工智能 学术生态与产业创新》上,哈工大计算机学院教授车万翔所作的学术报告《基于 迁移学习 的任务型 对话系统 》,重点介绍了他和博士生覃立波在跨领域、跨语言和跨任务的任务型 对话系统 中所做的一些研究工作。
车万翔,哈工大计算机学院教授、博士生导师,教育部青年长江学者,龙江学者“青年学者”。曾获AAAI 2013最佳论文提名奖。负责研发的语言技术平台(LTP)已被600余家单位共享,并授权给 百度 、 腾讯 、 华为 等公司使用。2018、2019连续两年获CoNLL国际评测第1名。2016年获黑龙江省科技进步一等奖(排名第2)。2017年,所主讲的《高级语言程序设计(Python)》课程获国家精品在线开放课程。
一、人机对话历史溯源
人机对话的历史,最早可以追溯到 图灵测试 。1950年,图灵提出检测一个机器是否具备智能的方法,就是和机器进行对话,如果能欺骗人、让其分辨不出交谈的对象是机器还是人,就说明机器已经具备了智能。尽管人机对话作为 人机交互 的一个重要研究方向存在已久,但并未进入公众视野或真正普及,主要是因为当时对话方式的交互还十分困难、 准确率 不高。
随着2011年Siri的研发,乔布斯把人机对话正式推向公众,然而技术并不成熟。幸而随着 深度学习 技术的蓬勃发展,人机对话 准确率 越来越高,如今通过手机等移动终端以语音的方式和机器交流,不再停留于科幻电影的片段。
从近10年ACL顶会发表的人机对话相关论文占比来看,2015年前人机对话在 自然语言处理 领域并不火爆,然而2015年后论文数量明显增多。直到2020年,人机对话已经成为ACL论文产量最多的方向。
为何人机对话在2015年后才受到NLP领域的重视呢?
可能是因为2015年之前, 语音识别 作为基础问题还尚未解决,而语音如果没有转化为文本信息,自然语言的处理就无从谈起。但是2015年以后, 语音识别 已经达到很高水平,有时甚至超过人的识别能力,后续攻克的都是 自然语言处理 的问题,所以人机对话也越来越受到NLP领域的重视。
二、探秘任务型对话系统
人机对话可以大体分成四个类型,包括以Siri为代表的任务型对话、以微软小冰为代表的聊天型对话、知识问答以及推荐。
本次报告主要介绍任务型对话,即以任务或者动作为导向的 对话系统 。事实上,任务型对话技术在实际应用中几乎无处不在,从智能硬件、音箱、车载、个人助理到咨询类机器人等等。
正如斯坦福教授Chris Manning所预言,以虚拟助手为代表的人机对话形式,可能会吞噬整个互联网。现在的网页浏览与搜索的方式,以后可能会被更为便捷的会话和问答所替代,其中任务型对话会起到关键作用。
任务型对话系统 的结构 (Pipeline系统)
整个任务型对话Pipeline系统分为几大部分:
首先,用户发出一个语音信号,通过 语音识别 转化为自然语言的文本,比如“帮我订一张去北京的机票”,接着进行自然语言的理解,包括领域和意图的识别、以及语义槽的填充,比如这句话的领域是机票、意图是订机票、语义槽是到达地等于北京。然后,这项结果传递给下一个步骤,即对话的管理。第一步是状态跟踪,第二步是策略优化,这些都涉及 知识库 以及一些API的调用。最后,生成自然语言比如“请问您从哪里出发”,经过TTS返给用户,流程不断循环并逐步完善用户的对话状态,最终实现用户 查询 。
但是,由于经过多重步骤,某个步骤出错会牵连其他步骤,这种传统Pipeline的方式存在 错误级联的问题。另一方面,各个模块标注的代价也较大。为解决这个问题,NLP研究者们提出端到端的对话,抛开中间的步骤,直接根据用户的输入以及相应的输出训练模型。
尽管任务型 对话系统 在 深度学习 技术的帮助下取得了较大进步,我们仍面临一个问题: 大量且高质量的标注数据难以获取。尤其在对话领域,不同的特定领域、新的语言、不同语种的交流以及小语种的迁移,都缺乏相应的数据,标注代价太大。
迁移学习 :克服数据不足问题
因此,我们希望利用迁移学习 技术解决上述问题。传统的方法针对一个任务训练一个模型,而 迁移学习 是针对一些原任务共同训练一个模型,再将学到的知识直接迁移到目标任务,从而使用少量标注数据达到不错的效果。得益于 深度学习 强大的表示能力, 迁移学习 方法在很多任务上取得了很好的效果。
整个 迁移学习 可以分为两大类:第一类是归纳式,原任务和目标任务不同,例如领域或者语言的差异;另一类是直推式的,原任务和目标任务相同。一个典型的归纳式 迁移学习 的预训练范式就是以BERT代表的 深度学习 预训练 语言模型 。除此之外,还包括 多任务学习 、以及跨领域和跨语言的 迁移学习 。
下面分别介绍在这三个方向近期的工作。
三、跨任务、跨领域和跨语言的迁移学习
1. 多任务学习
对话系统 中 自然语言理解 这部分包括领域识别、 意图识别 、语义 槽填充 的任务,三者不能同时进行学习。
前两个任务是典型的 分类问题 ,后一任务是典型的序列标注问题。
传统的方法是按顺序进行,但存在错误级联无法进行知识有效共享的问题,并且后面模块的信息无法传递到前面的模块。
因此我们希望做多任务的联合学习,把多个相关的任务放在一起学习。这种 多任务学习 之前有一种典型的框架,叫做共享的隐层表示,用LSTM或者Transformer等学习一个共享隐层之后连接不同的任务相关层。然而该做法使得任务之间通过隐式的方式交互,仍存在交互不够充分的问题。
尽管前人有利用Slot-gate机制来显式地建模了 槽填充 任务和 意图识别 任务之间的关系,这种交互仍然不够充分,并且无法捕捉每个token上的具体信息,每个句子只有一个意图并进行槽的填充。
因此我们提出一种新的 多任务学习 框架Stack-propagation,改造了传统的 多任务学习 方法,即找到任务A的同时支撑任务B、使两者产生联系,把任务A的结果输入给任务B,从而完成更好的 多任务学习 的方式。
整体框架如下:第一步,将 意图识别 的结果给语义槽,指导slot预测。第二步,给一个句子,将意图信息打到每一个token上,这样一方面可以解决token级别 准确率 的问题,同时能更有效利用监督信号、提高最终的性能。
2.
跨领域的迁移学习
通过用户和机器的对话历史来推测下一步机器说什么话,这可以是一种典型的Seq2seq模型。类似于 机器翻译 ,我们把一句话翻译成相应输出的结果;但是和 机器翻译 不同,我们需要用到大量当前的知识。 机器翻译 对于一句话的语义是明确的,但对话中要用到 知识库 ,同一句话根据不同知识会输出不同的结果。
那么,如何充分利用多个领域的数据?
一种最简单的方法就是把多个领域的数据进行混合来共同训练,但是这样简单地共享一套
参数
难以捕获所有领域的特征,从而忽略了领域之间独有的特点。前人的一个方法叫做共享-私有框架,就是把这些数据混合、变成共享的模块,再针对每个领域做私有的模块。但是,这种encoder和decoder的方法仍然是将每个领域逐个利用,忽略领域之间的细粒度关系,缺少领域之间交互的信息。
我们提出一种动态聚合的多领域融合框架,在利用所有领域的同时,每个具体领域对当前句子提供多大的信息是动态决定的。帮助较大的领域的任务最终权值也相对较大,没有帮助的任务则权值较小。其实相当于学习一个当前的例子和每个领域之间的相关度,也可以看成是一种attention的 权重 ,通过这样自学习出来的 权重 最终来决策。最终的实验效果也是在两个数据集上进行了验证,效果比以前要好。
3. 跨语言的迁移学习
跨语言迁移是指,在语料充分的源语言上训练了一个模型,然后针对目标语言直接用之前训练好的模型进行标注,而不需要目标语言的标注数据。
针对跨 语言学 习,前人用多语言的BERT学习了跨语言共同的分布表示,即把多语言数据直接简单混合、训练一个多语言的mBERT。该方法并没有任何跨语言对齐的信号,上下文仍然是单语言的,因此处理跨语言的任务效果并不好。
为解决这个问题,人们提出AIML模型来实现语言的混合,将源语言的句子中某个对最终决策影响最大的词替换成目标语言,构成一个新的训练数据,然后在这上面进行训练。这种方法存在信息的缺失,而且每次只能部署到一种目标语言,效率较低。
我们提出多语言的code-switch,将多种语言混合在一起。
具体做法是从源语言的训练数据中选出一些句子,将句子中某些词语经过简单的词典替换成目标语言,但是目标语言是各种语言随机的替换,从而构成新的训练数据,用这个数据训练 意图识别 或者是 自然语言理解 的模型。这个模型训练好之后就可以直接应用于各种目标语言上。
让我们理解下这种方法背后的直觉:最终训练的损失是一样的,但如果输入的语言不同,比如把“eat”换成“吃”,就隐含着学习了两者之间相似的表示,达到了一种跨语言的效果。实验结果显示在西班牙语、泰语等小数据语言上,比传统的方法有20~30个点的明显提升。
总结:
本次报告中,车万翔教授阐述了任务型 对话系统 的 迁移学习 中,如何利用多种知识,即 跨领域、跨语言和跨任务知识,来弥补数据不足的问题。
多任务,通过Stack-propagation显示交互提高多项任务的性能;
跨领域,提出动态聚合shared-private框架提升多领域端到端任务型对话系统 性能;
跨语言,提出multi-lingual code-switching数据增广方法提升Zero-shot跨语言能力。
欢迎大家进一步习读以下三篇相关论文及代码:
哈尔滨工业大学社会计算与信息检索研究中心
联系人: | 透明七彩巨人 |
---|---|
Email: | weok168@gmail.com |