目录
最近一直在调研对话系统,细细研究发现里面的细分知识点非常多,任务式/检索式/生成式对话系统每个里面的都有不同特点及方法,因此在这里总结下自己的研究成果。
Intro
按照对话系统的技术架构来分, 人机对话系统可以分为任务型对话系统和非任务型对话系统两大类, 在实际商业应用中这 2 种对话方式常常结合在一起使用. 任务型对话通过交互的方式帮助用户完成一项或多项特定的任务, 系统能够完成的任务通常是一个有限的集合, 每个任务有明确的流程、输入和输出, 如智能订票系统、账单查询系统等. 非任务型对话系统没有明确的任务列表, 可以用于同用户闲聊, 或者回答用户在某一个或多个领域的问题.
当前任务型对话系统的典型架构主要分为2类: 第 1 种是管道式(pipeline)架构, 如图1所示, 包含语音识别( ASR, automatic speech recognition) 、自然语言理解( NLU, natural language under standing) 、对话管理器( DM, dialogue manager) 、语言生成( NLG, naturallanguage generation) 、语音合成( TTS, text to speech)等组件. 纯文本的对话不含语音识别和语音合成模块. 近几年随着深度学习的发展, 一部分对话系统将对话管理器分成对话状态跟踪( DST, dialogue state tracking) 及对话策略优化 2 个部分, 使得对话管理更加依赖统计模型的方法, 更加鲁棒. 管道式架构中各个模块独立优化, 也是目前商用系统的典型架构.
图1 Pipeline架构
任务型对话系统的第2种是端到端的人机对话系统架构。由于内部独立模块的训练过程, 管道式架构往往存在模块之间错误累加的问题. 与管道式架构不同, 端到端模型根据误差的反向传播共同调整和优化模型内部的网络结构和参数,直到模型收敛或达到预期的效果,中
间所有的操作都包含在神经网络内部, 不再分成多个独立模块分别处理. 有的方法虽然是端到端的方法,但还是单独设计模型的部件,不同部件解决管道方法中某个或多个模块所承担的任务。图2就是经典的End-to-End对话系统架构,目前该方法还处于研究阶段,在技术上还需做很大的提升。
图2 经典端到端任务型对话系统
非任务型的对话系统也称为聊天机器人, 在开放领域或某一个特定领域与人进行信息沟通,系统没有特定完成任务的列表和槽位列表。典型的非任务型对话系统的回复, 一般通过生成方法生成或基于检索的方法抽取。
Seq2Seq的对话生成模型将用户这轮对话的问题作为输入, 借助神经元网络将用户的问题编码为一个编码矢量,该编码矢量同对话上下文的隐含矢量结合, 共同作为一个神经元网络解码器的输入, 逐词生成系统回复的句子。
基于检索的方法从候选回复中选择回复. 检索方法的关键是消息-回复匹配, 匹配算法必须克服消息和回复之间的语义鸿沟. 基于学习的搜索和排序算法在基于检索的对话系统中起着至关重要的作用,基础算法在近几年取得了非常大的进步,基于检
索的对话系统展现出非常客观的性能和准确率. 在众多非任务型对话中, 基于检索的方法输出的结构也常常作为生成对话模型的输入, 或者进行平行组合使用。
下面具体介绍下三种对话系统。
1 任务式对话系统
2 检索式对话系统
3 生成式对话系统
Reference