转载自 | 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跨语言能力。

欢迎大家进一步习读以下三篇相关论文及代码:

哈工大教授车万翔:基于迁移学习的任务型对话系统相关推荐

  1. 哈工大教授车万翔:自然语言处理中的伪数据

    导语:自然语言处理被誉为"人工智能皇冠上的明珠".对语言的理解需要广义的"知识",即狭义知识,算法和数据的约束.目前的预训练+微调的范式充分利用了数据类&quo ...

  2. 大作业论文之基于迁移学习的图像预测研究

    基于迁移学习的图像预测研究 摘  要:深度学习技术发展迅速,在图像处理领域取得了显著成果.[2]但是由于部分图像样本少,标注困难,使得深度学习的效果远未达到预期.迁移学习是机器学习中一种新的学习范式, ...

  3. Python基于MASK信息抽取ROI子图并构建基于迁移学习(densenet)的图像分类器实战(原始影像和mask文件都是二维的情况)

    Python基于MASK信息抽取ROI子图并构建基于迁移学习(densenet)的图像分类器实战(原始影像和mask文件都是二维的情况) 目录

  4. 基于迁移学习的农作物病虫害检测方法研究与应用

    基于迁移学习的农作物病虫害检测方法研究与应用 1.研究思路 迁移学习方式并结合深度学习提出了一种基于残差网络(ResNet 50)的 CDCNNv2 算法.通过对 10类作物 3 万多幅病虫害图像进行 ...

  5. 时间序列预测新范式——基于迁移学习的AdaRNN方法

    本文转载自知乎王晋东不在家的<小王爱迁移>系列之十五:自动选择源域的迁移学习方法 源地址为:<小王爱迁移>系列之32:时间序列预测新范式--基于迁移学习的AdaRNN方法 - ...

  6. 基于迁移学习的旋转机械故障诊断方法研究学习笔记

    基于迁移学习的旋转机械故障诊断方法研究学习笔记 现在大一点的神经网络模型也要求数据量的足够大,但是对于小样本的数据,有一些神经网络模型也能够处理的很好 2. 这是现在神经网络也要求的数据最好能够独立同 ...

  7. 基于迁移学习的语义分割算法分享与代码复现

    摘要:语义分割的数据集是比较大的,因此训练的时候需要非常强大的硬件支持. 本文分享自华为云社区<[云驻共创]基于迁移学习的语义分割算法分享>,原文作者:启明. 此篇文章是分享两篇基于迁移学 ...

  8. 【城市污水处理过程中典型异常工况智能识别】(基于迁移学习,拓扑结构卷积神经网络的污水异常工况识别)

    基于迁移学习拓扑结构卷积神经网络的污水异常工况识别 **摘 要:针对城市污水处理过程的异常工况识别问题,本文提出了基于图像纹理性分析的工况识别方法.首先总结了几种典型的异常工况的特点,并且分析了卷积神 ...

  9. 基于迁移学习的脑肿瘤自动检测研究与系统实现

    摘要 针对深度学习训练成本高,以及基于磁共振图像(Magnetic Resonance Imaging ,MRI)的脑肿瘤临床诊断需要大量医学常识且极为耗时的问题,本文提出了一种基于迁移学习(Tran ...

  10. 基于迁移学习的反欺诈方法研究

    迁移学习(Transfer learning),顾名思义,就是把已知学到的知识应用于理解未知事物上,这很符合我们的认知过程.举个最简单的例子,假设我们给朋友介绍一种新产品,就叫"奇里古刹币& ...

最新文章

  1. 删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录...
  2. PHP中使用redis 执行lua脚本
  3. DOMBOM(source、methods、contents、Application)
  4. CCIE理论-第五篇-SDA-2
  5. ICE通信之IceGrid服务(一)
  6. python如何调用文件进行换位加密_文件加密---使用换位加密和解密方法加密文件...
  7. 一个简单的现代化公司域名使用规律预测及生成工具
  8. SAP常用TCODE
  9. RX.AutoImage+Fluent Airpak v2.1
  10. HTML转PDF字体的坑,搞了半天
  11. 美国卡内基梅隆大学计算机排名,卡内基梅隆大学,美国卡梅基梅隆大学世界排名?...
  12. 为什么现在很多人不看好商汤科技?
  13. linux没有cpufreq目录,Linux系统的Cpufreq
  14. Java 后端服务的跨域处理
  15. 叠氮试剂79598-53-1,6-Azidohexanoic Acid,6-叠氮基己酸,末端羧酸可与伯胺基反应
  16. html返回首页页面代码,后台返回的HTML整个页面代码打开方法
  17. GrabCut算法、物体显著性检测
  18. Oracle在asm创建目录,Oracle ASM 文件管理
  19. 关于工业相机编程调用SDK二次开发的一些步骤流程(转)
  20. 微信内浏览器不支持下载APK文件的解决方案 微信中点击链接调用外部浏览器打开

热门文章

  1. 在QT中使用映美精双目相机保存图片
  2. 查看文件和文件夹大小
  3. 计算机操作系统知识整理-计算机操作系统概述(计算机操作系统入门指南)
  4. poEdit制作WordPress主题汉化,插件汉化攻略
  5. 电子工艺实训考核装置
  6. 000 初识 Delphi
  7. Vue 自定义项目的创建以及配置
  8. ABB焊接机器人伺服电机维修常见故障
  9. 有PMP证书后,如何继续成长?
  10. 机器学习 --- 概率图 - 概述