百度于去年10月公布的基于飞桨开源深度学习平台开发的通用领域对话生成预训练模型PLATO,相关论文最近已正式被ACL 2020接收。

PLATO是业界首个基于隐空间(Latent Space)的端到端的预训练对话生成模型。据悉,该模型利用隐向量来表示对话的潜在方向,从而达到对话内容丰富度和流畅度的显著提升。针对具体的对话任务,基于PLATO可以用少量数据训练得到非常流畅的对话系统。

论文名称:

PLATO:Pre-trained Dialogue Generation Model with Discrete Latent Variable

论文地址:

https://arxiv.org/abs/1910.07931

预训练模型及代码:

https://github.com/PaddlePaddle/Research/tree/master/NLP/Dialogue-PLATO

引言

研发开放领域(Open-Domain)的对话机器人,使得它能用自然语言与人自由地交流,这一直是自然语言处理领域终极目标之一。

对话系统的挑战非常多,其中有两点非常重要,一是大规模开放域多轮对话数据匮乏; 二是对话中涉及常识、领域知识和上下文,因此在对话回复时,存在“一对多”问题。

比如这个例子“李雷:今天好冷啊,外面风好大。”韩梅梅Bot可以怎样回复李雷呢?

A.是啊,天气预报说今天气温骤降10度呢。

B.好期待下雪啊,这样就可以堆雪人了。

C.刚在外面走了一会,发型都被吹乱了。

一个对话的上文(Context),往往可以对应多个不同回复(Response)的方向。这些不同的回复随着不同的人,不同的背景和环境可能有所不同,但都是合理的回复。

对于这种复杂的一对多的模式,神经网络拟合起来往往非常棘手。在学习这样一对多的数据的时候,会因为模型能力和数据匮乏导致最终学习的效果趋向于平庸,极易产生如“哈哈”、“嗯”这样大家熟知的索然无味的“聊天终结语”。

预训练模型近年来不管在自然语言理解还是在自然语言生成领域都产生了巨大的影响。利用通用语料进行预训练,在目标领域上能用少量的数据得到很好的效果。

尽管如此,对话预训练的效果因为上述原因仍然不能让人满意。为了解决这些问题,百度提出了基于飞桨开源深度学习平台开发的一个新的对话生成框架——带离散隐变量的对话生成预训练模型“柏拉图”(PLATO)。

隐变量较为普遍地在VAE、CVAE等技术中使用,但在论文中,作者们首次提出将离散的隐变量结合Transformer结构,应用到通用的对话领域。通过引入离散隐变量,可以对上文与回复之间的“一对多”关系进行有效建模。

同时,文章中通过利用大规模的与人人对话类似的语料,包括Reddit和Twitter,进行了生成模型的预训练,后续在有限的人人对话语料上进行微调,即可以取得高质量的生成效果。

PLATO可以灵活支持多种对话,包括闲聊、知识聊天、对话问答等等。而文章最终公布的在三个公开对话数据集上的测试,PLATO都取得了新的最优效果。

模型介绍

在PLATO中,离散隐变量可以有K个取值,它的每个取值,是与一个回复中的意图相对应的,或者可以理解为多样化的对话的动作(Action)。

在PLATO的训练中,有2个任务同步进行,且共享网络参数:回复生成和隐变量识别。给定上文和离散隐变量的取值(即确定了回复中的意图),生成任务会尽量最大化目标回复的似然概率。

同时,识别任务尽量估计给定上文和目标回复对应的隐变量取值。显然,隐变量的准确识别,可以进一步提升回复生成的质量。

PLATO的网络架构如图1所示,由Transformer Blocks组成。针对多轮对话的输入的表示方法,PLATO也进行了独特的设计,每个token的Input Embedding是由对应的token、role、turn和position embedding相加得到。

预训练中同步进行了2个任务——回复生成(Response Generation)和隐变量识别(Latent Act Recognition)。

在回复生成任务中,PLATO借鉴UniLM使用了灵活的注意力机制:对上文进行了双向编码,充分利用和理解上文信息;对回复我们进行了单向解码,适应回复生成的Autoregressive特性。

在隐变量识别任务中,PLATO使用特殊符号[M]作为输入,收集给定上文和目标回复的信息,用于估计回复意图(即离散隐变量的取值)。

图1 带离散隐变量对话生成预训练的网络架构

PLATO训练使用了三个目标函数(Loss Function)——negative log-likelihood (NLL) loss、bag-of-words (BOW) loss和response selection (RS) loss,如图1最后一列所示。

在文本生成任务中,最常用的是NLL loss,PLATO引入了BOW loss是为了促进离散隐变量的训练。此外,RS可以辅助判断一个回复与上文的相关性。

PLATO的模型由大规模语义预训练模型进行参数初始化,在预训练中,PLATO使用了8.3M Twitter和Reddit对话样本。预训练的PLATO模型以及代码,已经在GitHub上开源,开源地址见本文开头部分。

实验结果及分析

为了验证预训练模型的效果,论文在3个公开对话数据集上进行了测试:Persona-Chat、Daily Dialog以及DSTC7-AVSD。

Persona-Chat是典型的知识聊天任务:两个人讲述自己信息(Persona Profiles),并在对话中尽量了解对方;Daily Dialog偏向日常闲聊类型;DSTC7-AVSD是对话式问答,根据视频场景信息,两人进行多轮问答,讨论视频中物体和事件。

在每个数据集上的实验,作者们对比了基线方法以及每个数据集上的SOTA方法。PLATO在Persona-Chat和Daily Dialog上的自动和人工评估结果,如表1所示。

表1 Persona-Chat和Daily Dialog上的评估结果

PLATO在DSTC7-AVSD上的结果,如表2所示。

表2 DSTC7-AVSD上的自动评估结果

由这些结果可见,PLATO在各个对话数据上,均超过了当前最优,取得了新的最优效果。

PLATO也与其他预训练模型进行了对比,在Persona-Chat上的实验结果如表3所示,其中2.2是不使用Latent Space的对比模型,3.1是完整PLATO模型。

表3 不同预训练模型在Persona-Chat的PPL结果

通过对比这些结果,可以看出:

灵活的注意力机制可以充分利用上文的双向信息(Model 1.2 v.s. Model 1.3);大规模的Twitter和Reddit语料,显著改善回复生成(Group 2&3 v.s. Group 1);离散隐变量的引入,则可以进一步提升回复质量(Model 3.1 v.s. Model 2.2)。

对于PLATO的定性分析,论文也在表4中提供了一些case。给定一个上文,通过对离散隐变量进行不同赋值,PLATO可以产生多样且都合理的回复。

表4 PLATO模型生成的回复

总结和未来工作

尽管越来越多的工作证明了随着预训练和大规模语料的引入,自然语言处理领域开启了预训练然后微调的范式。在对话模型上,大规模预训练还处于初级阶段,需要继续深入探索。

论文提出的隐变量空间预训练模型,可能成为端到端对话系统迈上一个新台阶的关键点之一。百度NLP也在持续优化当前对话模型,在不久的将来,更加强大的对话预训练模型也许会被陆续披露。

如果您加入官方 QQ 群,您将遇上大批志同道合的深度学习同学。官方 QQ 群:703252161

如果您想详细了解更多飞桨的相关内容,请参阅以下文档。

  • Dialogue-PLATO项目地址:https://github.com/PaddlePaddle/Research/tree/master/NLP/Dialogue-PLATO
  • 官网地址:https://www.paddlepaddle.org.cn
  • 飞桨开源框架项目地址:
    GitHub: https://github.com/PaddlePaddle/Paddle
    Gitee: https://gitee.com/paddlepaddle/Paddle

对话预训练_百度发布首个大规模隐变量对话模型PLATO相关推荐

  1. 超越Facebook、谷歌、微软,百度发布全球首个百亿参数对话预训练生成模型PLATO-XL...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 和 AI 进行无障碍的对话,是什么样的体验?你或许能够在这篇文章里找到 ...

  2. 大规模搜索+预训练,百度是如何落地的?

    大家好,我是kaiyuan.今天一起来看百度KDD2021的一篇工作,关于工业界语义检索召回系统,落地场景非常值得借鉴~ Pre-trained Language Model for Web-scal ...

  3. dell台式机进入安全模式_华为发布首款商用台式机,商用PC市场再掀变革?

    中新网客户端北京12月8日电 华为继续在商用PC领域发力,12月8日华为在北京发布其首款商用台式机--HUAWEI MateStation B515,聚焦于政企客户市场.今年8月,华为已推出HUAWE ...

  4. office 高效办公智慧树_华为发布首款商用台式机,打造未来高效智慧办公体验_企业...

    12月8日,华为在北京发布了其首款商用台式机HUAWEI MateStation B515,这是继今年8月华为推出HUAWEI MateBook B系列笔记本之后在商用PC领域的又一重磅产品,是华为商 ...

  5. 超越CLIP!谷歌发布首个大规模MoE架构的视觉语言模型

    文 | 明敏(发自凹非寺) 源 | 量子位 多模态模型常见,但是基于稀疏化的还是头一个.谷歌带来最新成果LIMoE,首次将稀疏化方法用在了图像文本混合模型上.要知道,随着大模型参数呈指数级增加,训练成 ...

  6. 水箱建模最小二乘法_【案例揭秘】利用隐变量建模和近红外光谱技术降低高剪切湿法制粒工艺放大的风险...

    编者语:我们在前不久给同行推送了: 高速剪切湿法制粒工艺放大原则评价 [大力推荐]高剪切湿法制粒含量不均匀的原因分析 [第十季群友会专题]湿法制粒终点控制简介 等多篇关于湿法制粒的文章今天推送一篇详细 ...

  7. EMNLP 2021 | ST-ToD:小样本场景下的任务型对话预训练

    ©PaperWeekly 原创 · 作者 | 褚维芜 单位 | 北京邮电大学研究生 研究方向 | 自然语言处理 论文标题: Self-training Improves Pre-training fo ...

  8. 自动发现_清华发布首个自动图学习框架,或有助于蛋白质建模和新药发现

    澎湃新闻记者 张唯 当前,人工智能领域的自动图机器学习研究悄然兴起,小到蛋白质分子结构,大到城市交通网络,都有自动图机器学习的用武之地. 澎湃新闻(www.thepaper.cn)记者从清华大学计算机 ...

  9. 《预训练周刊》第41期: 知识型对话生成、语境学习、通用控制器学习

    No.41 智源社区 预训练组 预 训 练 研究 观点 资源 活动 周刊订阅 告诉大家一个好消息,<预训练周刊>已经开启"订阅功能",以后我们会向您自动推送最新版的&l ...

最新文章

  1. J2EE分布式框架之开发环境部署(上)
  2. spring源码 — 一、IoC容器初始化
  3. [pytorch、学习] - 3.13 丢弃法
  4. SharePoint 大局观(4)——从开发人员角度
  5. make 怎么降级_Ubuntu 中将 make 的版本降低
  6. 虚拟服务器设置 - 百度,百度云虚拟主机BCH配置伪静态图文教学
  7. anaconda r 语言_Centos7系统下R、 Rstudio及sparklyr的安装与配置
  8. linux查看文件权限_Linux权限管理 -- 文件权限
  9. ros清华源_ROS操作系统学习(一)ROS安装
  10. Python如何实现人脸识别系统
  11. 计算机中丢失msvcp120.dll是什么意思,win7系统玩游戏提示“msvcp120.dll丢失”怎么修复...
  12. iBeacon距离测量误差有多大
  13. 高数 | 【无穷级数】证明:绝对收敛一定收敛
  14. 眼袋、眼袋、眼袋!眼袋一直有~~~~ 肿么办啊
  15. 刚开始创建maven工程时会出现plugins爆红的问题
  16. 求正方形的面积和缩放形状
  17. nodeJS Express 删除 x-powered-by
  18. 为什么连麦对面能听到我电脑内部的声音
  19. 博士申请 | 香港科技大学陈浩老师招收AI医疗方向全奖博士/博后/RA/实习生
  20. 从零开始学Pytorch(第5天)

热门文章

  1. mysql int zerofill_Mysql 中int[M]—zerofill-阿里云开发者社区
  2. android socket_附详尽答案,新版精选Android中高级面试题二
  3. 成功解决raise Py4JError py4j.protocol.Py4JError: py4j.protocol.Py4JError: Could not find py4j jar at
  4. 成功解决Type Error: can‘t multiply sequence by non-int of type ‘float‘
  5. 成功解决 class 'AttributeError' : 'Editor' object has no attribute '_Editor__markerMap'
  6. Ubuntu18.04 CUDA与cudnn安装
  7. BigData预处理(完整步骤)
  8. select 实现server I/O多路复用通信
  9. Spring3的表达式语言
  10. js格式化文件大小, 输出成带单位的字符串工具