PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable论文学习

75 篇文章 7 订阅
61 篇文章 2 订阅

一、大纲内容

在这里插入图片描述

二、详细内容

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
○ 引入离散变量解决一对多的问题
○ 后续尝试利用强化学习来提升潜在的选择策略,来提升对话生成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值