一、大纲内容
二、详细内容
Abstract
○ 对话生成模型可以用于闲聊、知识对话、对话问题生成
○ 本文
■ 构建了一个灵活的attention机制,充分的促进了单向和双向的语言生成模型
■ 介绍了一个离散的潜变量,较好的解决了一问多答的问题
■ 上述两个结构通过一个共享结构相互促进
■ 在三个公开的数据集证明了有效性
Introduction
○ 对话生成的挑战:有限语料,复杂背景,多样对话关系
○ 预训练+fine-tuning的模式在对话生成上也有闪光点
○ 问题
■ 对话语料和知识的gap非常大
■ uni-directional的对话生成和BERT之类的bi-directional模式不大一样
■ 存在一句话对应多个回答的情况
○ 本文
■ 引入Reddit和Twitter的对话数据
■ 类似与unilm的模型被引入到预训练的任务中
■ 离散的隐变量来对一对多的对话关系进行建模,一个隐变量的值反应了一个特定的对话intent
■ 与可控生成的隐藏变量不同,这里不需要预训练,可以用无监督来自动学习语料中的隐藏变量值信息
■ 训练目标:最小化生成目标+估计潜变量的值w.r.t
■ 潜变量的值对对话生成的效果有很大的提升
■ 在chit-chat闲聊,知识对话,对话问题生成上做了实验,证明了有效性和优越性
Dialogue Generation Pre-training
○ 对一个上下文,可能有多个合适的回复,导致多样的对话流,这就是一对多的问题,本文提出一个隐藏的离散变量到transformer的结构中,来解决这个问题
Model Architecture
■ 输入
● dialogue context c:对话上下文,也包括对话的背景知识
● respnse r:回复结果
● latent variable z:潜变量z,可以有k种选择,每一种对一特定的一个潜在语音行为
●
● 两个任务:response generation + latent act recognition
■ response generation
● 单向解码的过程,利用(content,隐变量z,t-1的回复历史),解码生成当前的token,用的是单向的模型
■ latent act recognition
● 与回复生成共享网络,但是有个独立的attention mask来做双向的encoding
●
Input Representation
■ 输入表征:token+role+turn(轮次)+position
■ EOU:家在每一个utterance的末尾用于分割
■ BOU:加在回复的开通,他的最终特征h用于预测下一个词
■ z:k-way 类别特征,唯独为K*D
■ role:EA:角色A,EB:角色B
■ turn:E[0]:第0轮,E[-1]:最后一轮
■
■ 注意:隐藏层z的Role,Turn,Position embedding为空
pre-training objectives
■ loss函数:negative log-likelihood(NLL) loss + bag of words(BOW) + response selection (RS)loss
■ Response Generation
● NLL loss:通过上下文content和response估计隐藏变量z,然后根据学习到的z,结合上下文content,来生成回复
● bag of words loss:被应用于加速z隐藏变量的学习
● BOW loss使words更离散,迫使隐藏变量z学习到目标回复结果的全局信息
■ Response Selection
● 目的:帮助区分是否回复结果于对话上下文相关+区分回复是否与背景知识一致
● 利用二进制交叉熵来实现,(c,r),lr=1代表一致,(c,r-),lr=0代表不相关,最后通过加了一个sigmoid来预测其概率
● 最终loss = Lnll + Lbow + Lrs
pre-traning procedure
■ 12层transformer,利用BERTbase做初始化,利用了Twitter+Reddit的数据来训练,每个样本数据(c,r)通过网络两次,分别完成latent act recognition和response generation的训练
■ latent act recognition
● 给一个context和目标response,估计z的分布p(z|c,r)
● 随机选择r-负样本,计算Lrs回复选择的loss
■ response generation:通过第一步估计的P(z|c,r)的值,计算Lnll + Lbow
■ optimization:综合所有loss,通过后向传播更新网络结构
■ 超参数
● context长度:250,response长度:50
● 12层模型,768隐藏权重,batch size 64,学习率 5e-5
● K种类:20
● V100 32G GPU训练了3.5M steps,大概两周时间
Fine-tuning and Inference
■ 可以用于chit-chat,知识对话,conversational question answering
■ fine-tuning目标函数和预训练阶段一致
■ 推理过程
● 1:根据隐藏变量z的值,生成候选的k个回复
● 2:计算每个response的P(lr=1|c,r)的概率,挑选概率最高的
Experiments
settings
■ persona-chat:知识对话
■ Daily Dialog:闲聊
■ DSTC7-AVSD:conversational question answering(只利用了text数据,包括视频的caption和summary,没有用多模态模型去利用音频和视觉的特征)
Compared Methods
■ baseline:Seq2Seq
■ state of the art:
● persona-chat:LIC,2019 ConvAI2 challenge的冠军,基于GPT模型
● Daily Dialog:iVAEmi
● DSTC7-AVSD:CMU模型
■
Metrics
■ BLEU:衡量了n-gram的重叠指标
■ Distinct-1/2:衡量生成的多样性,定义:不同的uni-grams和bi-grams的个数/总的生成words数
■ Knowledge Recall/Precision/F1:衡量背景知识的信息量
■ DSTC7-AVSD:MSCOCO平台提供了6个指标,BLEU,METEOR,ROUGH-L,CIDEr
■ 人工评价
● 随机选择100个对话上下文和结果来评价,3个众包来评价,主要看fluency:流畅程度,coherence:连贯性,是否与对话上下文和背景知识相关,informativeness:信息量,overall:整体评估,0:bad,1:正常,2:好的回复(流畅度、连贯性、信息量、整体)四个方面
● 投票来得到最终score,Fleiss's kappa分数为0.5左右,证明标注人员的要求达到了统一
experimental results
■ Personal-Chat和Daily Dialog:
● 自动评估和人工评估相关性不大,自动评估阶段,没一个模型可以全部比另一个好
● 人工评估:我们的模型全部比其他的好,流畅程度高,信息量大,一致性高,
● 人工评估:发现添加latent隐藏变量的学习,显著的提升了其效果
● LIC等tansformer类的方法比RNN-base的方法(seq2seq)要高很多
■ DSTC7-AVSD:生成选择的模块,通过一个额外的ranking step来加强,选择了top1的结果作为最终答案,并且给出了上限(理想场景能选择最佳的候选结果)
■ Discussions
● 可以根据设置latent variable的值,生成不同的回复结果,可以生成多样的,合适的回复
● 对比不同的预训练模型
○ group1: BERT + GPT-2,fine-tuning
○ group2:引入Twitter和Reddit数据继续预训练
○ group3:引入隐藏变量
Related Work
○ 预训练模型:GPT,GPT2模型,从左到右自回归的方式,BERT,Unilm模型
○ one-to-many模型:
■ CVAE,利用高斯分布去捕获对话变量
■ SpaceFusion:在隐藏空间,联合优化多样性和相关性,粗略的匹配预测回复的距离和方向
■ VAE:连续表征
■ 离散表征
■ 数据量比较少=>平衡多样性和流畅性还比较困难
● Conclusion
○ 引入离散变量解决一对多的问题
○ 后续尝试利用强化学习来提升潜在的选择策略,来提升对话生成