转载自:对话模型,DialogBERT和DialogWAE优势何在? - 知乎 (zhihu.com)
多轮对话生成一直是一项典型的NLP应用,并且在众多任务上取得成功。多轮对话问题一直面临两大挑战,即如何准确地学习对话历史的向量表示,以及如何更好地学习应答与历史之间的关系,以保证对话的连贯性。
围绕这两大主题,讲者分别提出一种针对多轮对话生成的预训练模型DialogBERT和多模态应答生成模型DialogWAE,前者采用层次化BERT构建句子级的连贯关系,并提出两种预训练方法:掩藏句编码回归和分布式句子顺序预测;后者采用高斯混合先验生成对话,提高对话的多样性和丰富性;对比实验验证了讲者所提策略能更好的获得语义更丰富,更加连贯的应答。
一、对话模型面临的两个挑战
开放领域的对话生成是一项典型自然语言应用问题,可概括为基于对话历史(即,上下文),采用机器学习算法,预测下一句对话。目前解决该问题的方法主要围绕图1所示的框架展开研究,首先给定模型一段对话历史,然后采用深度学习的方法学习对话历史的语义向量,最后通过构建对话历史与应答间的语义关系实现应答生成。上述过程存在两个挑战:
a.由于对话历史通常很长,信息量大,这对将对话历史表示为精确的语义向量带来很大困难;
b.如何学习应答与对话历史之间的关系,以保证对话的连贯性。
图1.对话模型常用框架流程介绍
二、DialogBERT预训练策略
1、问题概述
针对第一个挑战,如何学习复杂上下文的语义向量?近期的相关研究是采用预训练语言模型来处理对话历史,比如,Transformer、GPT2等。
其缺陷之一在于:模型将对话历史看作一个较长的单词序列(通常,前句和后句间具有非常连贯的语义),但对话中句子间存在多种关系,比如转折等,因此很难将对话历史看作是很长的文本序列处理;
缺陷之二在于:基于自注意力机制的Transformer模型,关注的是单词层级的相关性,而不是学习句子间的连贯性。该策略难以准确获取句子层级的连贯关系,并且在时间上很低效。
基于此,讲者提出DialogBERT模型,即采用层次化BERT模型的思想,学习长序列对话上下文丰富的语义,如图2所示。首先使用句子级别的编码器学习每个句子的向量;然后将每句话的向量作为篇章级编码器的输入,从而学习句子间的语义关系。同时,讲者提出两种预训练策略:隐藏句子回归以及分布式句子顺序预测。
2、训练策略
训练任务一:隐藏句子回归。首先是对层次化BERT模型得到的隐藏变量进行解码,以生成目标应答,如图3所示。
图3.应答生成
然后随机mask一些句子,再通过训练编码器以复原被mask的句子。讲者提出从向量的角度做回归,即对mask的句子进行编码得到的向量,与经过预测得到的向量做均方误差。
图4. 隐藏句子回归
训练任务二:学习句子顺序。指将原始句子顺序打乱,然后预测句子的顺序,但现有的工作是将句子的每一种排序作为一类,通过分类模型进行训练。其局限性在于,对句子排列组合得到非常多的句子序列,且存在大量重复排序,比如,某两种排序中,只有最后两个顺序对调, 这两种排序仍然是高度相关的,而简单的分类模型难以捕捉这种相关性。
讲者提出分布式句子顺序预测方法,即将encoder得到的句子向量通过排序网络对每句话打分,然后按照分数对句子进行降序排列。在该过程中,训练目标是衡量由softmax得到句子顺序的概率分布与目标顺序分布间的距离,即采用KL散度表示。
图5. 分布式句子顺序预测
3、实验验证
实验所用数据集、评价指标以及baseline 模型如图6所示。
图6.实验数据集、指标以及baselines介绍
通过定量实验分析结果可知,将应答生成、隐藏句子回归以及分布式序列预测这三项组合,可以得到更好的效果。
图7.实验结果
进一步,讲者进行消融实验来验证不同模块对实验结果的影响,图8上表是对不同大小的上下文编码器进行对比实验,即取不同Transformer层数时的实验结果表明,层数大小对编码结果影响不明显,即上下文编码器很容易识别上下文的语义关系。
图8下表是指与其他预训练策略进行对比,实验结果表明采用分布式序列预测比全局分类具有非常大提升。
图8.消融实验对比结果
最后,随机选取200个对话,由Amazon的Crossing平台进行人工评估,结果表明讲者所提策略能学习到更连贯更具信息量的应答。
图9. 人工评估结果
从MultiWOZ数据集上的实验可知,讲者所提策略能得到更具信息量的回答;在DailyDialog数据集上的实验表明,所提方法能够生成更连贵,同时具有信息量的应答。
图10.示例研究