一、背景
对话系统一般包括领域内(任务型)对话比如订票,订餐等等和开放领域对话。前者主要是靠识别特定的意图+反复确认来实现,整体来说难度不高,而后者实现起来相对来说较为困难,目前也较为不成熟。
之前一些开发领域对话的解决方案如微软的小冰都是一套很复杂的架构,但是随着最近几年预训练模型取得的成功,对话系统领域也开始探索端到端的实现方式,尤其在2019,2020,2021这三年涌现出了很多相关研究。比如2020年1月份google发表的Meena、4月份Facebook的Blender以及百度PLATO系列包括PLATO、PLATO-2、PLATO-XL等等,前两篇分别发表在ACL2020和ACL-IJCNLP2021,PLATO-XL则是今年9月在arxiv上预印,目前效果比较好的就是百度的PLATO-XL系列。
这里做一个简单的总结
二、分类
1.从场景上分
对话系统可以根据应用场景的不同分为开放域(open-domain)问题和封闭域(closed-domain)问题
(1).开放域对话系统
开放域对话系统没有任何限定的主题或明确的目标,用户和系统之间可以进行任何话题的自由对话,这要求系统具备丰富的知识,能完成多项任务,同时具有社会性(友好度、自觉性、幽默感等),这在技术上短期内难以实现.已经实现的这类对话系统更多地应用在聊天机器人、虚拟形象等泛娱乐领域,用户基数大且容易传播,但由于对话质量不高或内容深度不够等问题,使得用户黏性并不高,应用前景也比较模糊.
特点:不限定领域和话题
应用实例:聊天机器人等
(2).封闭域的对话系统
封闭域的对话系统是面向具体任务(task-oriented)的,具有明确的目标和限定的知识范围,只需专注完成一项工作,输入和输出有限,实现起来相对简单,在垂直使用场景中更有助于节省人力成本或提升人工效率,但是在具体任务中对话内容的容错率更低,且对话数据规模很小,难以通过数据驱动(data-driven)的方式训练模型,需要人为整理知识库或对话模板,耗费大量人力的同时又难以向平行任务领域迁移;所以,建立这样的对话系统需要从商业、产品、运营、数据知识积累和模型调优等各方面综合考量.
封闭型对话又分两种:
特点:有明确任务目标,能够精确地定义用户的意图和动作
应用实例:智能助手(订票,导航等)
特点:需要准确地回答用户的问题,满足用户需求
应用实例:银行、电信运营商、电商店铺的语音客服系统等
对话系统一般包括领域内(任务型)对话比如订票,订餐等等和开放领域对话。前者主要是靠识别特定的意图+反复确认来实现,整体来说难度不高
2.从技术上分
(1)检索型
(2)生成型
(1)检索型+生成型
三、任务型对话
任务型系统模块框架
对话系统是一个综合性问题,主要涉及自动语音识别(automatic speech recognition,ASR)、自然语言理解(natural language understanding, NLU)、对话状态跟踪(dialog state tracking,DST)、自然语言生成(natural language generation,NLG)和语音合成(text to speech,TTS)五部分,一个完整的人机对话流程下图所示.
1.自动语音识别
自动语音识别的功能是将用户语音中的连续时间信号转变为离散的音节单元或单词.在口语对话系统中,用户语音存在大量的口语现象,通常还伴随着环境噪声,这些为识别算法的特征提取、模型训练等环节增加了更多难度.作为系统输入点,语音识别的准确与否将直接影响后续语言理解和整个系统的性能优劣.提高语音识别的准确率是研发对话系统的关键问题之一.
2 自然语言处理
自然语言理解的功能是利用语义和语法分析将语音识别的结果转化为计算机能够理解的结果化表现形式.对话系统中的语言理解最常用的2个关键方法是文本分类(text classification)和序列标注(sequence labeling).
文本分类的目的是根据预先定义的主题类别,按照一定的规则为未知类别的文本自动确定一个类别.对话系统中,通过文本分类的方法,将用户的自然语言根据涉及领域的不同分为几类,以判断用户的意图.
目前应用在文本分类领域传统的机器学习模型有k近邻(k-nearest neighbor,kNN)、朴素贝叶斯(naive Bayesian)、支持向量机(support vector machines,SVM)等.神经网络兴起后,一些基于深度学习模型的研究也取得了不俗的效果,主要是运用了卷积神经网络(convolutional neural networks,CNN)模型,以及CNN和循环神经网络(recurrent neural networks,RNN)相结合的模型.
序列标注模型被广泛应用于文本处理相关领域,以得到自然语言序列对应的标签序列.对话系统中利用序列标注的方法对自然语言序列进行分词(word segmentation)、词性标注(part-of-speech tagging)、命名实体识别(named entity recognition,NER)等工作,得到标签序列后生成结构化的数据,便于对整个句子进行理解.
序列标注领域中常用的模型有隐马尔科夫(hidden Markov model,H M M)、最大熵马尔科夫(maximum entropy Markov model,MEMM)、条件随机场(conditional random fields,C R F)等.与传统的方法相比,深度学习中常用的长短期记忆网络(long-short term memory,LSTM)模型也取得了相近的效果.另外,将神经网络模型自动提取特征的优点与机器学习模型计算联合概率的方式结合在一起,得到了LSTM+CRF模型,这也是目前学术界常用的做法.
口语对话中句式灵活多变,且用户有不同的语言习惯,再加上语音识别本身出现的错误,语言理解模块同样面临着重大挑战.
3. 对话状态跟踪
对话状态跟踪的作用在于通过语言理解生成的结构化数据理解或者捕捉用户的意图或目标,目前应用在这个领域的模型很多,包括有限状态机、填槽法、基于实例方法、基于规划方法、贝叶斯网络等.
对话状态跟踪的思想是将系统和用户交互时的行为看作是在填写一张记录用户当前对话状态的表格.以订机票为例,将这张表格预先设定好状态,比如目的地、出发地、出发时间等,与系统背后的业务数据表中的属性相关联,不断地从对话中抽取相应的值来填充这个表格.这是一个利用监督学习(supervised learning)完成的多分类任务,根据对话的分类结果判断这句话中包括哪些状态和值.往往从一句对话中获取所有的状态只是理想情况,当状态表中的信息存在空白时,系统会根据空白的状态来提问并获取对应的值,直到获取到足够的状态,给出对用户的建议,或者进行相应的服务.对话状态跟踪如图2所示.
4. 对话策略
5. 自然语言生成
自然语言生成的作用是组织适当的应答语句,将系统的答复转换成用户能够理解的自然语言,通常有3种解决方案:基于人工模板(rule-based)、基于知识库检索(query-based)和基于深度学习的序列到序列(Sequence-to-Sequence)生成模型.语言生成方案的优缺点和适用场景总结如图3所示.
基于人工模板的技术通过人工设定对话场景,并对每个场景编写针对性的对话模板,回复的最终形式是填充一个大多数的内容已经给定的模板,只有一些具体的参数需要填充.这个技术路线的好处是回答精准,缺点是过多的人工标注和模板编写工作导致移植性差,需要逐个场景去扩展.
2010年,苹果公司在iPhone4S上推出的个人语音助理Siri,在NLG环节采用了基于人工模板的技术路线. Siri里包含的众多数据、模型和计算模块,可以划分为输入系统、活跃本体、执行系统、服务系统和输出系统5个子系统. Siri整体架构如图4所示。
活跃实体内存放的数据和模型包括:领域模型、用户个性化信息、语言模式、词汇表和领域实体数据库等.其中领域模型包括某个垂直领域内的概念、实体、关系、属性和实例的内部表示,即本体(ontology).词汇表用于维护Siri中的表层单词到领域模型或者任务模型中定义的概念、关系、属性的映射关系,即人工编写的特定领域的对话模板.执行系统将用户的文本表示解析为内部用户意图之后调用活跃本体中的数据拼装对话,引导用户输入和生成输出结果.
通过这种方法,Siri根据某几个垂直领域的领域模型和人工编写的对话模板完成固定的任务,通过引导用户输入能得到很高的成功率,而对于解决不了的问题,Siri会直接调用搜索引擎.
基于知识库检索的技术路线与搜索引擎类似,预先准备好一个称为知识库的数据库,里面包含丰富的对话资料,对其中的问题建立索引,然后以NLP技术对用户提出的问题进行分析,通过关键词提取、倒排索引、文档排序等方法与定义好的知识库进行模糊匹配,找到最合适的应答内容.这类解决方案的核心技术在于找更多的数据来丰富和清洗知识库,但数据量过大时难以监督,通常找来的数据杂乱无章,使对话连续性很差.
2011年,IBM推出了电脑问答(Q & A)系统Watson,在NLG部分采用了以知识库检索技术为基础,集高级自然语言处理、知识图谱、自动推理、机器学习等开放式问答技术为一体的技术思路,通过假设认知与大规模的证据搜集、分析和评价得出最终答案.
Watson的DeepQA架构以处理流程的形式定义了分析问题的各个步骤,如环形办公室走廊,每间办公室都负责一项特殊的工作,允许多重实现来产生多个结果.每一间办公室的工作都当作大规模并行计算的一部分而单独进行,如图5所示.
系统在基于对问题和类型的不同理解上对多个不同的资源进行检索,返回多种候选答案。任何答案都不会立即被确定,因为随着时间推移系统会收集到越来越多的证据来分析每一个答案和每一条不同的道路.之后系统用几百种不同的算法从不同的角度分析证据得出上百种特征值或得分,这代表着在某一特定维度上一些证据支持一个答案程度,每个答案的所有特征值或得分综合为一个得分,表示该答案正确的概率.系统通过统计学机器学习方法对大量数据集进行学习来确定各个特征值的权重,最终将得分排名最高的答案输出.
DeepQA技术根据一个问题通过搜索和量化评估给出一个确定的答案,通过知识库的扩张和切换可以很好地完成Q & A任务,但这种形式结构还是无法高效地跟上源知识的增长和领域的切换,也没能与用户进行有效的互动,无法在大量的非结构化内容支持下为用户提供决策.
基于深度学习的技术通常不依赖于特定的答案库或模板,而是依据从大量语料中习得的语言能力来进行对话,根据问题内容直接生成回答的方法被定义为基于某个条件下的生成模型.深度学习的Sequence-to-Sequence技术可以非常好地实现生成模型的框架,其最诱人的优势就是可以避免人为特征工程的端到端(End-to-End)框架,即利用强大的计算和抽象能力自动从海量的数据源中归纳、抽取对解决问题有价值的知识和特征,使这一过程对于问题的解决者来说透明化,从而规避人为特征工程所带来的不确定性和繁重的工作量.
目前,基于深度学习技术的对话系统多数采用了Encoder-Decoder框架,本节将首先描述Encoder-Decoder框架技术原理,然后分别针对深度学习应用在开发实践时需要特殊考虑的主要问题及其对应的解决方案进行阐述,模型改进思路如图6所示.
一些较早的文献采用Encoder-Decoder模型来建立对话系统,收集Twitter或者微博中评论里的聊天信息来作为训练数据,得到了效果不错的对话系统.之后其他文献在Encoder、目标函数和Decoder部分不断改进模型,有效解决了在应用深度学习技术时遇到的一些问题.
6. 语音合成
语音合成的功能是将系统答复的自然语言文本合成应答语音反馈给用户.其主要难点在于如何使生成的语音更加自然生动、需要的语音数据库更小及成本更低.
四、问答型对话系统
问答型对话系统所面临的问题相对简单,因此,我们仅关注其中的核心——问答技术。
当前的问答技术大都是检索式的,在这种方式下,需要预先提供一个知识库,答案即来自于知识库。根据知识库形式的不同,主流的问答技术可以分为以下几种:
1.CQA-Community Question Answe:社区问答,知识库是QA pair(半结构化)
2.FQA-Frequently Asked Questions:知识库是QA pair(半结构化)
3.KBQA:知识库是知识图谱(结构化)
4.Table-QA:知识库是表格(结构化)
5.MRC-QA:知识库是自由文档(非结构化)
1、CQA-Community Question Answe
中文名称是社区问答。是利用半结构化的数据(问答对形式)来回答用户的提问,,其流程通常可以分为三部分。
(1).问题解析,对用户输入的问题进行分词,纠错等预处理步骤
(2).召回部分,利用信息检索引擎如Lucence等根据处理后的问题提取可能的候选问题
(3).排序部分,利用信息检索模型对召回的候选问题进行相似度排序,寻找到最相似的问题并返回给用户
通常,根据应用场景的不同,可以将CQA任务分为两类:
(1)、FAQ(Frequently Asked Questions)问答: 在智能客服的业务场景中,对于用户频繁会问到的业务知识类问题的自动解答(以下简称为FAQ)是一个非常关键的需求,可以说是智能客服最为核心的用户场景,知识通常是封闭的,而且变化较为缓慢,通常可以利用已有的客服回复记录提取出高质量的问答对作为知识库。
(2)、社区问答: 问答对来自于社区论坛中用户的提问和回答,较为容易获取,但是相对质量较低。而且通常是面向开放域的,知识变化与更新速度较快。
2、FQA-Frequently Asked Questions
FAQ(Frequently Asked Questions)面临的问题和搜索引擎非常像:对于用户请求的request_question,在预置的QA pair中,找到一条与其最相似的response_questsion,并且把response_questsion对应的answer作为响应返回给用户,完成一次应答。
1.问题解析,对用户输入的问题进行分词,纠错,提取关键词等预处理步骤
2.召回部分(recall ),首先对预置的QA pair进行建知识库,当用户请求过来后, 召回方式:ES,Lucence,倒排索引等模糊匹配,深度学习召回
3.排序部分(rank),利用信息检索模型对召回的候选问题进行相似度排序,寻找到最相似的问题并返回给用户。排序方式:相似度计算排序(cosine),SBert,SimCse等
3、KBQA-knowledge based question answering
Knowledge Base KB中包括三类元素:实体(entity)、关系(relation),以及属性(literal)。实体代表一些人或事物,关系用于连接两个实体,表征它们之间的一些联系。
业界主流实现方式包括四部分:实体识别、实体链接、子图召回和答案排序
4、MRC-QA:Machine Reading Comprehension
定义:
1.机器阅读理解基础任务是根据问题,从非结构化文档中寻找合适的答案,因此,研究人员通常将机器阅读理解形式化为一个关于(文档,问题,答案)三元组的监督学习问题。
2.给定一个训练数据集{P,Q,A},其中,P是文档集,Q是问题集,A是答案集
分类:
1.多项选择式(Multiple Choice):模型需要从给定的若干选项中选出正确答案。
2.完形填空式(Cloze Test),在原文中除去若干关键词,需要模型填入正确单词或短语。
3.片段抽取式(Span Prediction),答案限定是文章的一个子句(或片段),需要模型在文章中标明正确的答案起始位置和终止位置。
4.自由回答式(Free Answering)或总结回答式(Summary of human):不限定模型生成答案的形式,允许模型自由生成语句。
一般来说,抽取式的问答题,由于任务难度适中,且有高质量的数据集支撑,具有较高的研究价值,而它也恰是MRC-QA中对应的任务形式。(因此下文所提到的“机器阅读理解”均特指“抽取式的问答题”)
技术实现:
基本都是基于深度学习模型,找开始位置和结束位置
R-NET: Machine Reading Comprehension with Self-matching Networks
QANet: Combining Local Convolution with Global Self-Attention for Reading Comprehension
产品场景:
1.店小蜜:通过机器阅读理解技术,让机器对详情页中的商品描述文本进行更为智能的阅读和回答,在降低卖家服务成本的同时提高购买转化率。
2.企业小蜜:税务法规解读场景
3.法小飞:中文法律智能助手 http://sf.xfyun.cn/services/IFlyLegal
5、V-QA:Visual Question Answering
定义:
1.给机器一张图片和一个开放式的的自然语言问题,要求机器输出自然语言答案。答案可以是以下任何形式:短语、单词、 (yes/no)、从几个可能的答案中选择正确答案
2.VQA是一个典型的多模态问题,融合了CV与NLP的技术,计算机需要同时学会理解图像和文字单
3.给机器输入一张图片和一个跟这幅图片相关的问题,机器需要根据图片信息对问题进行回答。训练阶段,需要先在一个由图像 ,问题 ,答案 组成的三元组集上训练一个模型
方法:
1.将输入图像和输入问题,分别转换为对应的特征表示
2.对两种模态的特征进行融合,得到图片和问题的联合信息。
3.最后把得到的联合特征送入到分类器中从预定义的候选答案集中推断最可能的答案,或者送入到解码循环神经网络中(Decoder RNN)来直接生成答案
技术实现:
1.传统机器学习的技术:比如贝叶斯
2.深度学习联合嵌入:cnn、rnn、lstm、GRU
3.注意力机制: Attention +transformer
4.多模态融合机制(组合模型): Neural Module Networks、Dynamic Memory Networks、TRRNet
6、Table-QA—基于表格知识库问答
产品
1.开放领域
(1)关注 “百度 PLATO” 微信公众号
使用生成模型: PLATO-XL,参数达到了 110 亿
(2)小爱同学
1.京东言犀
https://yanxi.jd.com/
参考文献:
1.https://zhuanlan.zhihu.com/p/360410194
2.https://mp.weixin.qq.com/s/ICzDwMbC5FVkFzVOuL9pIA
3.https://zhuanlan.zhihu.com/p/428108034
4.https://github.com/BDBC-KG-NLP/QA-Survey-CN