随着社会发展,我们的生活中方方面面都充斥着各种对话系统,常见提供对话系统的组织有:运营商、电商、政府服务窗口等,刚才提到的例子一般都属于任务型对话系统。何为任务型的对话系统呢?指的就是用户通常通过该对话系统获取某些(领域)知识,比如话费套餐、商品咨询以及办事流程等。
大部分任务型对话系统基于一系列规则堆积实现,系统会通过特定的对用户的询问,获取大量槽值,根据槽值来确定策略结果,然后使用NLG来生成策略结果的文本描述,如图1自助订票简化版样例。
但是随着对话系统的不断应用,单纯知识获取的任务型对话系统也满足不了人们的“聊天”需求,比如iphone用户经常会问Siri:“你是男是女”,“我缺个人陪我吃早饭”等等。所以生成型对话系统慢慢发展起来了。生成性对话系统一般分为两类:一类是检索式,一类是生成式。
首先来聊检索式生成型对话系统,顾名思义,它的实现基于大量且丰富的对话语料库,检索和用户询问最相似的对话,作为输出。在工程实践上一般分为粗排和精排两步,和推荐的召回系统一样,采用两步可以快速高效的找出最合适的结果。一般粗排检索范围大、算法简单;精排计算范围小、算法复杂。检索式生成型对话系统的优势是可以给出“最像人话的答案”,因为语料库本身就是可控的。但这也是它的缺陷,不能生成“新东西”。
那么接下来,我们就来聊可以生成“新东西”的生成式生成型对话系统。该对话系统更多的借鉴了机器翻译的seq2seq方法,使用概率模型来实现,目标函数选用极大似然估计,工程上会用条件概率来替换联合概率(计算量相对较少)。
随着研究的不断深入,RNN替代了条件概率,RNN加入了self-attention机制,摒弃了RNN的Transformer逐步应用、预训练模型的引入、加入结构化条件信息等等,使得生成式的生成型对话系统不断提升改进。
生成型对话系统,未来可期~
更多内容,欢迎关注“机器爱学习”公众号~