哈工大教授车万翔:基于迁移学习的任务型对话系统
转载自 | AI TIME 论道
一、人机对话历史溯源
人机对话的历史,最早可以追溯到图灵测试。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级别准确率的问题,同时能更有效利用监督信号、提高最终的性能。
实验结果表明我们的框架在两个数据级上都获得了更好的效果,尤其是在整体的准确率上对比之前的工作有显著提升。后来我们利用了预训练模型BERT之后,效果提升也比较明显。
2.
跨领域的迁移学习
通过用户和机器的对话历史来推测下一步机器说什么话,这可以是一种典型的Seq2seq模型。类似于机器翻译,我们把一句话翻译成相应输出的结果;但是和机器翻译不同,我们需要用到大量当前的知识。机器翻译对于一句话的语义是明确的,但对话中要用到知识库,同一句话根据不同知识会输出不同的结果。
那么,如何充分利用多个领域的数据?
一种最简单的方法就是把多个领域的数据进行混合来共同训练,但是这样简单地共享一套参数难以捕获所有领域的特征,从而忽略了领域之间独有的特点。前人的一个方法叫做共享-私有框架,就是把这些数据混合、变成共享的模块,再针对每个领域做私有的模块。但是,这种encoder和decoder的方法仍然是将每个领域逐个利用,忽略领域之间的细粒度关系,缺少领域之间交互的信息。
我们提出一种动态聚合的多领域融合框架,在利用所有领域的同时,每个具体领域对当前句子提供多大的信息是动态决定的。帮助较大的领域的任务最终权值也相对较大,没有帮助的任务则权值较小。其实相当于学习一个当前的例子和每个领域之间的相关度,也可以看成是一种attention的权重,通过这样自学习出来的权重最终来决策。最终的实验效果也是在两个数据集上进行了验证,效果比以前要好。
3.
跨语言的迁移学习
跨语言迁移是指,在语料充分的源语言上训练了一个模型,然后针对目标语言直接用之前训练好的模型进行标注,而不需要目标语言的标注数据。
针对跨语言学习,前人用多语言的BERT学习了跨语言共同的分布表示,即把多语言数据直接简单混合、训练一个多语言的mBERT。该方法并没有任何跨语言对齐的信号,上下文仍然是单语言的,因此处理跨语言的任务效果并不好。
为解决这个问题,人们提出AIML模型来实现语言的混合,将源语言的句子中某个对最终决策影响最大的词替换成目标语言,构成一个新的训练数据,然后在这上面进行训练。这种方法存在信息的缺失,而且每次只能部署到一种目标语言,效率较低。
我们提出多语言的code-switch,将多种语言混合在一起。
具体做法是从源语言的训练数据中选出一些句子,将句子中某些词语经过简单的词典替换成目标语言,但是目标语言是各种语言随机的替换,从而构成新的训练数据,用这个数据训练意图识别或者是自然语言理解的模型。这个模型训练好之后就可以直接应用于各种目标语言上。
让我们理解下这种方法背后的直觉:最终训练的损失是一样的,但如果输入的语言不同,比如把“eat”换成“吃”,就隐含着学习了两者之间相似的表示,达到了一种跨语言的效果。实验结果显示在西班牙语、泰语等小数据语言上,比传统的方法有20~30个点的明显提升。
总结:
本次报告中,车万翔教授阐述了任务型对话系统的迁移学习中,如何利用多种知识,即跨领域、跨语言和跨任务知识,来弥补数据不足的问题。
多任务,通过Stack-propagation显示交互提高多项任务的性能;
跨领域,提出动态聚合shared-private框架提升多领域端到端任务型对话系统性能;
跨语言,提出multi-lingual code-switching数据增广方法提升Zero-shot跨语言能力。
欢迎大家进一步习读以下三篇相关论文及代码:
哈工大教授车万翔:基于迁移学习的任务型对话系统相关推荐
- 哈工大教授车万翔:自然语言处理中的伪数据
导语:自然语言处理被誉为"人工智能皇冠上的明珠".对语言的理解需要广义的"知识",即狭义知识,算法和数据的约束.目前的预训练+微调的范式充分利用了数据类&quo ...
- 大作业论文之基于迁移学习的图像预测研究
基于迁移学习的图像预测研究 摘 要:深度学习技术发展迅速,在图像处理领域取得了显著成果.[2]但是由于部分图像样本少,标注困难,使得深度学习的效果远未达到预期.迁移学习是机器学习中一种新的学习范式, ...
- Python基于MASK信息抽取ROI子图并构建基于迁移学习(densenet)的图像分类器实战(原始影像和mask文件都是二维的情况)
Python基于MASK信息抽取ROI子图并构建基于迁移学习(densenet)的图像分类器实战(原始影像和mask文件都是二维的情况) 目录
- 基于迁移学习的农作物病虫害检测方法研究与应用
基于迁移学习的农作物病虫害检测方法研究与应用 1.研究思路 迁移学习方式并结合深度学习提出了一种基于残差网络(ResNet 50)的 CDCNNv2 算法.通过对 10类作物 3 万多幅病虫害图像进行 ...
- 时间序列预测新范式——基于迁移学习的AdaRNN方法
本文转载自知乎王晋东不在家的<小王爱迁移>系列之十五:自动选择源域的迁移学习方法 源地址为:<小王爱迁移>系列之32:时间序列预测新范式--基于迁移学习的AdaRNN方法 - ...
- 基于迁移学习的旋转机械故障诊断方法研究学习笔记
基于迁移学习的旋转机械故障诊断方法研究学习笔记 现在大一点的神经网络模型也要求数据量的足够大,但是对于小样本的数据,有一些神经网络模型也能够处理的很好 2. 这是现在神经网络也要求的数据最好能够独立同 ...
- 基于迁移学习的语义分割算法分享与代码复现
摘要:语义分割的数据集是比较大的,因此训练的时候需要非常强大的硬件支持. 本文分享自华为云社区<[云驻共创]基于迁移学习的语义分割算法分享>,原文作者:启明. 此篇文章是分享两篇基于迁移学 ...
- 【城市污水处理过程中典型异常工况智能识别】(基于迁移学习,拓扑结构卷积神经网络的污水异常工况识别)
基于迁移学习拓扑结构卷积神经网络的污水异常工况识别 **摘 要:针对城市污水处理过程的异常工况识别问题,本文提出了基于图像纹理性分析的工况识别方法.首先总结了几种典型的异常工况的特点,并且分析了卷积神 ...
- 基于迁移学习的脑肿瘤自动检测研究与系统实现
摘要 针对深度学习训练成本高,以及基于磁共振图像(Magnetic Resonance Imaging ,MRI)的脑肿瘤临床诊断需要大量医学常识且极为耗时的问题,本文提出了一种基于迁移学习(Tran ...
- 基于迁移学习的反欺诈方法研究
迁移学习(Transfer learning),顾名思义,就是把已知学到的知识应用于理解未知事物上,这很符合我们的认知过程.举个最简单的例子,假设我们给朋友介绍一种新产品,就叫"奇里古刹币& ...
最新文章
- 删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录...
- PHP中使用redis 执行lua脚本
- DOMBOM(source、methods、contents、Application)
- CCIE理论-第五篇-SDA-2
- ICE通信之IceGrid服务(一)
- python如何调用文件进行换位加密_文件加密---使用换位加密和解密方法加密文件...
- 一个简单的现代化公司域名使用规律预测及生成工具
- SAP常用TCODE
- RX.AutoImage+Fluent Airpak v2.1
- HTML转PDF字体的坑,搞了半天
- 美国卡内基梅隆大学计算机排名,卡内基梅隆大学,美国卡梅基梅隆大学世界排名?...
- 为什么现在很多人不看好商汤科技?
- linux没有cpufreq目录,Linux系统的Cpufreq
- Java 后端服务的跨域处理
- 叠氮试剂79598-53-1,6-Azidohexanoic Acid,6-叠氮基己酸,末端羧酸可与伯胺基反应
- html返回首页页面代码,后台返回的HTML整个页面代码打开方法
- GrabCut算法、物体显著性检测
- Oracle在asm创建目录,Oracle ASM 文件管理
- 关于工业相机编程调用SDK二次开发的一些步骤流程(转)
- 微信内浏览器不支持下载APK文件的解决方案 微信中点击链接调用外部浏览器打开