SCT-CVAE: 基于分离Context机制与CVAE的Transformer对话模型

2021-10-19 09:22浩,王
中文信息学报 2021年9期
关键词:解码器解码编码器

苑 浩,王 泳

(1. 中国科学院大学 工程科学学院,北京 100049;2. 中国科学院大学 人工智能学院,北京 100049)

0 引言

多轮对话的开放域响应生成[1-2]目标是根据人类用户的话语生成有意义且有趣的响应。神经网络模型可以使用网络上的大量数据集,从而在该任务中引起了广泛关注。目前大多数神经对话生成模型都采用编码器-解码器(Encoder-Decoder)的结构,直接建立从输入查询到输出响应的映射,该映射统一处理所有查询-响应对并优化最大似然估计。但是,当模型收敛时,它们倾向于输出乏味和通用的响应,例如,“嗯”“好”“我不知道”等响应[3]。

针对这个问题,研究人员提出了很多方法改进Encoder-Decoder模型,从而生成更好的响应。改进主要可以分为下三类: ①第一种改进认为对话历史只是决定响应的因素之一,应该引入更加丰富及有用的信息,生成更加具体的响应[4-6]。②第二种改进不改变Encoder-Decoder的结构,只是改变解码的策略或者在Encoder-Decoder结构上添加更多组件。例如,添加和改进集束搜索(Beam Search) 解码策略[7-8]以及添加对抗生成网络(GAN)[9]等组件。③第三种改进不同于将最大似然估计(MLE)作为优化目标,而是引入条件变分自动编码器(CVAE)[10-11],它使连续潜在变量上的条件对数似然性的下限最大化。

但是现有的生成模型都存在一个共同的缺点,它们在处理上下文语句与源语句时,将上下文语句和源语句直接拼接作为整个对话历史处理,忽视了上下文语句和源语句在生成响应时的不同作用。将多轮对话分为当前轮的上下文和当前轮的源语句以及当前轮的响应三部分时,源语句决定了响应的重点,上下文负责填充响应的细节。例如,下面的例子,两段对话具有相同的上下文语句,可以发现不同的源语句对于响应生成具有重要的指导作用,上下文语句决定了响应都是在谈论提到的钢笔话题,但是第一个源语句关注的是正品问题,而第二个源语句关注的是价格问题。

Context: lamy钢笔怎么样

确实流畅好写

你在哪个网站上买的

我在淘宝上买过一个

Source1: 我担心买到的不是正品

Response1: 这牌子很少有人仿,基本都是正品

Source2: 价格贵不贵?

Response2: 和专柜的一样,不怎么贵

因此在响应生成中,上下文语句和源语句的作用是不同的,之前的方法将上下文与源语句直接进行拼接,无法解决这个问题,从而导致生成的响应中缺失重要指导信息,响应表现为通用、枯燥、多样性差。

为了解决这个问题,本文提出了一个分离Context机制与CVAE的Transformer[12]对话模型(STC-CVAE),模型将上下文语句与源语句进行分开编码,控制两部分信息在产生响应时具有不同的信息比重。同时,为了进一步增强产生响应的多样性,模型使用Transformer改进的CVAE结构来产生隐变量。CVAE通常假设潜在变量遵循具有对角协方差矩阵的多元高斯分布,该变量可以捕获所有有效响应上的潜在分布,进而可以从学习到的分布中进行采样来生成各种响应。现有的CVAE结构都是基于LSTM或GRU,对于多轮对话中较长依赖关系的提取能力较弱,使用Transformer进行改进,可以增强隐变量建模的语义信息。

本文在两个“豆瓣”多轮对话数据集上进行了实验,所提出的模型大大优于现有的方法。自动评估和具体例子都表明,本文提出的模型生成了具有更好多样性和相关性的响应。本文主要有以下两点贡献:

(1) 提出了一种基于分离Context机制与CVAE的Transformer对话模型,充分考虑了上下文语句和源语句对于生成响应的不同影响程度,提高了生成响应的相关性和多样性。

(2) 实验结果中的自动评估和具体例子都表明本文提出的模型优于现有模型,可以生成多样性更强、相关性更好的响应。

1 相关工作

1.1 Encoder-Decoder 模型

自神经网络模型应用于对话领域以来,响应的多样性一直是研究的热点问题。理想状态下,神经对话模型的响应应该是自然连贯和多样化的,但是现有大部分模型生成的响应都是安全响应和枯燥响应。为了解决这个问题,一些研究人员认为对话历史携带的信息只是部分信息,需要考虑更多的额外信息。如Li等人[4]通过将背景信息和说话风格编码到分布式Embedding中来捕捉说话人的特征,这些特征被用来对编码器-解码器生成的响应重新排序。Xing等人[5]基于会话潜在的狄利克雷分布(LDA),保持主题编码,来鼓励模型生成更多的主题相关的响应。

另一方面,一些研究人员在Encoder-Decoder模型的基础上,添加更加丰富的组件或者改变解码的策略。Li等人[7]提出最大化输入和输出之间的互信息来优化编码器-解码器,从而减少一般的响应。这种方法无条件地惩罚高频响应,并在给定输入的情况下优先考虑条件概率高的响应。Wiseman和Rush[13]通过减少训练和测试之间的偏差来改进解码网络。他们引入了一种基于搜索的loss,可以直接优化解码网络的集束搜索。Li等人[14]用MLE目标和强化学习来初始化一个编码器解码器模型,通过优化三个启发式奖励函数来优化模型: 信息性、一致性和回答的便利性。Xu等人[15]提出将GAN应用于对话中,引入了一个近似嵌入层,以解决由Seq2Seq生成模型中基于采样的输出解码过程引起的不可微分问题。Zhang等人[9]采用对抗学习方法直接优化模型训练中互信息(MMI)目标的下界。

由于早期的对话模型都是单轮模型,无法捕捉到会话转变中的长期依赖性,因此无法应用到多轮对话中。Serban等人[16]提出HRED,同时对句子和对话语境(上下文)进行建模,来实现多轮对话。然而,随着时间的流逝,反向传播存在梯度消失问题,因此递归架构限制了训练过程中使用的最大轮数和每轮中的单词数量。随着Transformer的提出,使用Transformer作为编码器和解码器能很好地避免这个问题。Oluwatobi等人[17]提出将多个Transformer decoder构成GPT-2的结构应用于对话模型上,提升了对话质量。

1.2 基于CVAE的生成模型

在图像领域,一些工作将变分自动编码器(VAE)用于图像生成[18],并且取得了不错的结果。受VAECVAE应用于图像生成任务上的启发,一些研究人员也将变分推理和潜在变量引入对话任务。Bowman等人[19]将VAE与基于LSTM的识别和解码器网络结合使用,以潜在的高斯变量生成句子。Serban等人[3]应用了潜在变量分层编码器-解码器对话模型来引入话语级别的变化,并促进生成更长的响应。Zhao等人[10]使用CVAE捕获了编码器中的话语级别多样性,使用潜在变量来学习潜在会话意图的分布。Gu等人[20]提出转换上下文相关的随机噪声,以高斯混合先验网络来丰富潜在空间。Shen等人[11]提出了一个允许基于特定属性生成条件响应的变分框架,根据指定的属性生成有意义的响应。Gao等人[21]引入了具有明确语义的离散潜在变量,以改善短文本对话中的CVAE模型。Shen等人[22]提出了一种层次的VAE来生成长文本,在词汇和句子两个层次对语义建模,生成两个层次的潜变量,潜变量可被更多的信息表示。Wang等人[23]提出了基于Transformer的CVAE用于故事生成,取得了不错的效果。为了提升产生响应的多样性,本文提出了分离Context机制与CVAE的Transformer对话模型,改进后的模型更适应于多轮对话任务,同时增加了分离上下文语句的编码机制,每个潜在变量考虑了上下文语句和源语句对生成响应的影响程度。

2 问题定义

3 模型描述

本节将按照模型结构先介绍模型的输入表示,然后介绍分离上下文编码,最后描述CVAE结构产生隐变量与最终状态组合进行解码。STC-CVAE模型整体结构如图1所示。

图1 STC-CVAE模型整体结构

3.1 输入表示

给定单词的输入表示定义为由单词、段和位置嵌入连接构成,见图1中Input部分所示。

(1)

3.2 分离上下文编码

一般的对话响应生成模型将上下文语句和源语句进行拼接,作为整个上下文输入到Encoder中。这样的做法将源语句视为上下文语句的一部分,处理起来较为便捷,但是这种处理方式忽略了在对话场景中源语句和上下文语句对响应的影响力是不同的。

为了更好地捕捉上下文语句和源语句对响应的影响程度,根据之前的描述,本文使用了分离上下文语句的方式,将上下文语句和源语句分开编码,编码后的输出通过门控机制来调节生成响应时两者的信息重要程度。

遵循Vaswani等人[12]提出的公式和符号,将注意力的查询、键和值表示为Q、K和V,将多头注意力表示为Multi-Head(Q、K、V),前馈网络表示为FFN(x),层归一化表示为LayerNorm(x)。

对于Encoder,Multi-head Self-attention的输入与原始的Transformer相同,源语句和上下文语句经过L个如下编码的Block:

其中,WG是可学习的参数矩阵,G为门控的权重,R为门控和,WG∈2dmodel×1。

R作为编码器的最终输出,输入到解码器中,解码与原始的Transformer解码器结构一致,都采用了Mask机制,确保对位置j的预测值只取决于j之前的单词。

3.3 引入CVAE结构

由于在z上的积分难以得到,因此遵循Zhao等人[10]的做法,本文使用变分推论并优化响应的变分下界ELBO,如式(8)所示。

(8)

其中,q(z|x,y) 为后验网络(即识别网络),近似潜在变量z的真实后验分布,DKL(||)为KL散度,假设z服从对角协方差矩阵的多元高斯分布。

设z服从多元高斯分布q(z|x,y)~N(μ,σ2I),如式(9)、式(10)所示。

其中,R是解码器的输出,作为查询向量。R表示编码器将x和y同时作为输入时的门控的最终输出。Wq∈demb×dz和bq∈dz是参数,dz是隐向量的维数。

先验网络仅编码给定的对话上下文x。同样地,q(z|x)~N(μ′,σ′2I),如式(11)、式(12)所示。

其中,MLPp是一个多层感知器,R′是编码器仅将x作为输入时的门控的最终输出。

与基于LSTM或GRU的CVAE模型不同,受Wang等人[23]的启发,SCT-CVAE模型不使用潜在变量z来初始化解码器的状态,通过一个组合层将其合并到解码状态。潜在变量z从获得分布中采样得到,如式(13)~式(15)所示。

其中,Wc∈dmodel×dmodel是参数矩阵,Mout为解码器的输入,Ct是组合层在时间步长t处的输出,并进一步反馈给线性变换和Softmax层,得到最终的概率分布。

3.4 SCT-CVAE训练算法流程

以下是SCT-CVAE算法流程,Θ为解码得到的概率分布。

算法: SCT-CVAE Training AlgorithmInput: {C,S,R}Output: Θ1. for each {C,S,R} do:2. for X=[S,R] and X=R do:3. 编码C,X 为 EC,EX;4. D←EC,EX经过注意力机制5. D和 EX 经过门控得到R6. R作为 Q, D作为K, V输入MulitHead7. end for8. {C,S,R},{C,S} 经过步骤3,4,5,6得到h,h'9. 计算由MLP(h) 和 Linear(h')得到两个分布的KL loss10. 从q(z|C,S,R)的分布中采样潜在向量z11. 将z与解码状态组合进行解码12. 计算输出与响应的loss13. 根据两个loss之和更新梯度end for

4 实验设置及结果分析

模型训练目标包括两部分,一部分是最大化重建响应y的概率,这可以使后验网络和响应生成器所做的预测更接近于真实响应;另一部分是最小化z的后验分布和先验分布之间的KL散度,这可以在测试阶段没有响应y时使先验网络产生合理的概率分布。在训练过程中对KL部分使用退火,这会使KL项的权重从0逐渐增加到1,缓解隐变量消失的问题。

4.1 数据集

实验数据采用“豆瓣”多轮对话数据集1[24]和豆瓣多轮对话数据集2[25],前者相较于后者具有更多的样本,每个对话样本中具有更多的对话轮数。数据集被划分为三元组{C,S,R},上下文语句与源语句和响应的拼接处理为同样大小长度的序列,长度为60。两个语料分别划分为250k1.8k16k,190k5k5k来进行训练验证测试,使用的词汇量为45 000个单词,覆盖了数据集中99.90%的单词。其他单词被替换为

4.2 训练参数设置

超参数设置如下,dmodel设置为512,demb设置为300。对于Transformer模型,注意头H设置为8,Transformer块L的数量设置为6。LSTM层的数量设置为2。对于VAE模型,dz设置为64,退火步长设置为20 000。本文将Dropout应用于Transformer块中每个子层的输出。对于所有模型,使用比率Pdrop=0.15。使用Adam优化器,其初始学习率为0.000 1,动量β1=0.9,β12=0.99,权重衰减为ε=10-9。批量大小设置为64。所有模型都使用贪婪搜索,并使用300维GloVe词向量。

4.3 Baseline模型

对比实验将使用以下5个模型。

Seq2Seq: 具有双向LSTM和软注意力机制的Seq2Seq作为baseline。

HRED: 对话由分层LSTM进行编码[16],word-level LSTM编码每个句子,context-level LSTM编码整个对话状态。

VHRED: 在HRED的基础上,增加高斯随机噪声[3]。

CVAE: 基于LSTM的CVAE模型[10],其中解码器的初始状态是潜变量和编码器的最后隐藏状态的组合。

Transformer: 使用原始的基于Transformer的Seq2Seq模型作为对话模型[12],此模型的输入与本文的输入表示相同。

4.4 评价标准

为了评估所有比较方法生成的响应,在测试集上计算以下自动指标:

BLEU: BLEU-n反映了一个候选响应的平均N-gram准确度,实验中使用了BLEU-n,n=1,2,3,4。

Distinct-1 and Distinct-2: 通过计算生成响应中不同的Uni-gram和Bi-gram数量来除以测试集响应中的Uni-gram和Bi-gram数量,结果作为评估生成结果多样性的指标。

4.5 实验结果与分析

表1列出了针对不同模型在两个数据集上自动评估的指标,可以看到,本文提出的模型结果明显好于其他对比模型。

表1 各模型在不同数据集结果比较

本文提出的STC-CVAE模型在大多数指标上达到了最佳的分数,表示该模型可以产生质量更好、多样性更高的响应。Transformer模型在所有的对比baseline模型中并不完全是最好的,说明直接使用Transformer作为Seq2Seq对话模型并不是一个很好的选择。在两个数据集上,HRED和VHRED两个模型在BLEU-1和BLEU-2的值明显好于其他对比的baseline模型,通过分析例子,本文发现这两个模型更倾向于输入大量重复和安全的词汇,因此在BLEU-1和BLEU-2上得分高于其他模型,但是在Distinct-1/2上表现不好,说明这两个模型并没有明显地提高生成响应的多样性。CVAE模型在不使用Transformer的模型中表现是最好的,在BLEU和Distinct指标上始终可以得到更好的分数,这表明,潜变量可以进一步提升结果的质量。因此,在STC-CVAE模型中引入CVAE是正确且有效的,后续的消融实验也证明了这一点。

4.6 消融实验

消融实验用来验证模型中不同部分的有效性。表2为消融实验的结果。在不分离上下文语句编码,即上下文语句和源语句拼接在一起做输入时,模型(SCT-CVAE Without DC)在BLEU-4上下降0.328,在Distinct-1上下降0.19,在Distinct-2上下降0.21,这表明分离上下文编码对提升响应的质量是有效的。当删除CVAE结构不生成潜变量时,这些数值同样下降,但是在Distinct上下降得更多,证明使用CVAE生成的潜变量对响应的多样性可以带来提高。

表2 去除各组件后模型的评价结果

4.7 样例分析

表3显示了两个例子以及所有比较方法产生的响应,第二个例子显示两个同样的上下文语句但是具有不同的源语句产生响应的情况。

Seq2Seq模型更倾向于生成简短且信息较少的响应。HRED和VHRED虽然生成的响应更长,但是响应中更多包含了很多重复和安全的词汇,如“哈哈”等,使回答显得枯燥且信息少。CVAE相较于前三个模型,生成的信息较多且相关性更大。对比表3中的例子得以发现,在对话上下文对的序列长度没有很长时,各个模型的表现优劣并不是很明显。在对话上下文序列很长的情况下,基于Transformer的模型和STC-CAVE模型的表现会更好。同时,基于Transformer的模型和STC-CAVE模型更容易捕捉对话上下文的一些重要词汇,如前面例子中的“迪卡侬”和后面例子中的“文身”等词汇。

本文还对具有同样上下文、不同源语句的情况进行对比,见表3中的后一个例子。第一种情况中,源语句的核心是“锁骨”和“低领衣服”,STC-CVAE产生的响应成功地捕捉到了这两个重要的信息,而第二种情况,源语句的核心是“烦”和“担心”,STC-CAVE捕捉到了“烦”这个重要指导词汇,并在响应中产生出“心烦”词汇。图2显示了源语句和响应语句的Attention可视化情况,响应的重要词汇和源语句中的词汇是密切相关的,证明了源语句对生成响应的重要指导作用。但是可以发现,所有模型无论是自然程度还是流畅性以及生成响应的长度上,都不及人类的回答,证明在对话响应生成上,现有研究还有很大的提升空间。

表3 不同模型产生响应结果比较

图2 源语句与响应语句中attention的可视化

5 结论

针对多轮对话生成响应多样性差的问题,本文提出了SCT-CVAE模型。该模型将Transformer与CVAE结合,通过引入潜在变量和分离上下文的编码机制,学习到了对话的多样性分布,挖掘出了上下文和源语句对生成响应的影响程度。实验结果表明,新模型比其他模型具有明显的优势,可以生成具有更高多样性和相关性的响应。

猜你喜欢
解码器解码编码器
《解码万吨站》
科学解码器(一)
科学解码器(二)
科学解码器(三)
线圣AudioQuest 发布第三代Dragonfly Cobalt蓝蜻蜓解码器
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于FPGA的同步机轴角编码器
基于双增量码道的绝对式编码器设计