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

news2025/1/20 14:49:51

一、大纲内容

在这里插入图片描述

二、详细内容

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/427689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DAY 36 文本处理命令awk

awk的概述 awk: 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本, 默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令 awk信息的读入也是逐行指定的匹配模式进行查找&#x…

Unity ——使用贝塞尔曲线对三维管状物体进行弯曲

参考链接:【Unity】弹性鱼竿简单实现-通过贝塞尔曲线修改Mesh - 简书 参考论文:吴晓亮, 黄襄念. Unity 中使用贝塞尔曲线对三维物体进行弯曲[J]. 现代计算机, 2016 (5): 57-59. unity项目下载:https://download.csdn.net/download/weixin_4…

时间序列 | MATLAB实现CNN-GRU-Attention时间序列预测

时间序列 | MATLAB实现CNN-GRU-Attention时间序列预测 目录时间序列 | MATLAB实现CNN-GRU-Attention时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-GRU-Attention时间序列预测,CNN-GRU结合注意力机制时间序列预测。 模型描…

涨点技巧:卷积变体DCNV2引入Yolov8,助力小目标涨点

1.DCN V2介绍 DCN V2: Improved Deep & Cross Network and Practical Lessons for Web-scale Learning to Rank Systems 论文:https://arxiv.org/abs/2008.13535 作者通过在DCN的基础上,增加了2个创新点,分别是调制模块和使用多个调制后的DCN模块,从形成了DCN的升级版…

解码营养行业新趋势 2023晶球益生菌与肠内营养健康高峰论坛圆满落幕

后疫情时代,国人自身健康管理意识日益提高,越来越多的人认识到到微生物组、营养吸收与免疫健康的密切联系,并逐渐认可微生态和肠内营养在临床应用过程中的积极作用,使得营养治疗研究成果进一步落地转化。消费升级新时代&#xff0…

一文带你读懂,这三个交换机层级的区别和联系。

01 第二层交换机 OSI参考模型的第二层叫做数据链路层,第二层交换机通过链路层中的MAC地址实现不同端口间的数据交换。 第二层交换机主要功能,就包括物理编址、错误校验、帧序列以及数据流控制。 因为这是最基本的交换技术产品,目前桌面型交…

CDN到期不想续费?!MINIO救个场!

一、安装MINIO 下载 wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230413030807.0.0.x86_64.rpm -O minio.rpm 安装 yum install minio.rpm 二、启动 MinIO 服务器 创建启动实例目录 mkdir ~/minio 启动 MInIO实例 minio server ~/minio -…

解析hash(散列)数据结构

前言 在学习完map、set这两个由红黑树构成的容器后,我们来到了这里hash,首先我们要有一个基础的认知——哈希和map与set的仅在使用时的差别区别:前者内部的元素没有序,而后者有序,其它的都相同,这里我们可…

【C++进阶之路】第一篇:C++中的继承

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【C学习与应用】 ✒️✒️本篇内容:继承的基础概念,定义方法,基类和派生类的转换,继承中类的作用域&#xf…

VSCode配置React Native调试环境

首先,用VSCode打开新建的react native工程,此时只能运行,是无法调试的。如果想单步调试代码,需要配置。 点击VSCode左边三角形菜单: 点击“创建launch.json文件”, 选择“React Native”调试器,…

肖 sir_就业课__011性能测试讲解

性能测试讲解 一、你做过性能测试吗? 方法1:做过 方法2:在公司中性能测试有专门的性能小组做,但是我也会做性能 二、性能测试有哪些类型? 1)压力测试(破坏性测试) 压力测试是系统在一…

WiFi协议曝安全漏洞:Linux、Android和iOS未能逃脱

来自美国东北大学和鲁汶大学的学者披露了一组IEEE 802.11 Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Android和iOS的各种设备。 来自美国东北大学和鲁汶大学的学者披露了一组IEEE 802.11 Wi-Fi协议标准的一个基础设计漏洞,影响到运行L…

【C++核心】内存、引用、函数

一、内存四区域 C程序在执行时,将内存大方向划分为4个区域 程序运行前分为: 代码区:存放函数体的二进制代码exe,由操作系统进行管理的 exe机器指令、共享、只读 全局区:存放全局变量和静态变量以及常量(字…

运行时内存数据区之虚拟机栈——操作数栈

操作数栈 每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出(Last-In-First-Out)的操作数栈,也可以称之为表达式栈(Expression Stack)。操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据或提取数…

Netty缓冲区ByteBuf源码解析

在网线传输中,字节是基本单位,NIO使用ByteBuffer作为Byte字节容器, 但是其使用过于复杂,因此Netty 写了一套Channel,代替了NIO的Channel ,Netty 缓冲区又采用了一套ByteBuffer代替了NIO 的ByteBuffer &…

微服务+springcloud+springcloud alibaba学习笔记【OpenFeign的使用】(5/9)

OpenFeign的使用 5/91、OpenFeign简介1.1、Feign及OpenFeign概念和作用1.2、Feign和OpenFeign区别2、OpenFeign使用步骤2.1、创建Feign消费端微服务2.2、修改POM文件配置2.3、编写yml配置文件2.4、编写主启动类2.5、编写业务类2.5.1、编写 service 层接口,用于服务提…

什么是线性回归?线性回归有什么特征?

什么是线性回归 线性回归定义与公式 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。 特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归 线…

Orange Pi 5B面世,传承经典,再续传奇

近日,香橙派又出大招。刚刚发布的Orange Pi 5B在性能和表现上再度升级。此前,Orange Pi 5凭借出色的性能和极低的价格被誉为“地表最高性价比开发板”,一经上市就引起市场轰动,销量引领同类产品市场,获得极佳口碑。那么…

【音视频第13天】另外一种拥塞控制算法-TransportCC

目录与Goog-REMB区别TrendLine滤波器与Goog-REMB区别 与Goog-REMB有两个区别: 将拥塞评估算法从接收端移动到了发送端,评估和控制是一体的。TransportCC是发送端评估发送端接着改变码率,REMB是接收端评估,把评估出来的值给发送端…

STL源码剖析-分配器 Allocator

分配器(Allocator) 分配器给容器用的,是一个幕后英雄的角色。分配器的效率非常重要。因为容器必然会使用到分配器来负责内存的分配,它的性能至关重要。 在C中,内存分配和操作通过new和delete完成。 new中包含两个操作,第一步是…