百度发布全球首个大规模隐变量对话模型PLATO

百度于去年10月公布的通用领域对话生成预训练模型PLATO,最近已正式被ACL 2020接收。PLATO是业界首个基于隐空间(Latent Space)的端到端预训练对话生成模型。据悉,该模型利用隐向量来表示对话的潜在方向,从而达到对话内容丰富度和流畅度的显著提升。针对具体对话任务,基于PLATO可以用少量数据训练得到非常流畅的对话系统

1. 引言

研发开放领域(Open-Domain)的对话机器人,使得它能用自然语言与人自由地交流,一直是自然语言处理领域终极目标之一。对话系统的挑战非常多,其中有两点非常重要,一是大规模开放领域多轮对话数据匮乏; 二是对话中涉及常识、领域知识和上下文关联,因此在对话回复时,存在“一对多”的问题。例如下面这段例子

李雷:今天好冷啊,外面风好大。

韩梅梅Bot 可以怎样回复李雷呢?

  1. 是啊,天气预报说今天气温骤降10度呢。
  2. 好期待下雪啊,这样就可以堆雪人了。
  3. 刚在外面走了一会,发型都被吹乱了。

一个对话的上文(Context),往往可以对应多个不同回复(Response)的方向。这些不同的回复随着不同的人,不同的背景和环境可能有所不同,但都是合理的回复。对于这种复杂的一对多模式,神经网络拟合起来往往非常棘手。在学习这样一对多的数据时,会因为模型能力和数据匮乏导致最终学习的效果趋向于平庸,极易产生如“哈哈”,“嗯”这样大家熟知的索然无味的“聊天终结语”。

预训练模型近年来不管在自然语言理解还是在自然语言生成领域都产生了巨大的影响。利用通用语料进行预训练,在目标领域上能用少量的数据得到很好的效果。尽管如此,对话预训练的效果因为上面的原因仍然不能让人满意。为了解决这些问题,百度提出了一个新的对话生成框架 -- 带离散隐变量对话生成预训练模型“柏拉图”(PLATO)。 隐变量较为普遍地在VAE, CVAE等技术中使用, 但在百度的文章中,他们首次提出将离散的隐变量结合Transformer结构,应用到通用对话领域。通过引入离散隐变量,可以对上文与回复之间的“一对多”关系进行有效建模。同时,通过利用大规模的与人人对话类似的语料,包括Reddit和Twitter,进行生成模型的预训练,后续在有限的人人对话语料上进行微调,即可以取得高质量的生成效果。PLATO可以灵活支持多种对话,包括闲聊、知识聊天、对话问答等等。而文章最终公布的成绩中,PLATO在三个公开对话数据集上的测试,都取得了新的最优效果。

2. 模型介绍

在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上开源(https://github.com/PaddlePaddle/Research/tree/master/NLP/Dialogue-PLATO)。

3. 实验结果及分析

为了验证预训练模型的效果,百度公布的论文在3个公开对话数据集上进行了测试:Persona-Chat,Daily Dialog以及DSTC7-AVSD。Persona-Chat是典型的知识聊天任务:两个人讲述自己信息(persona profiles),并在对话中尽量了解对方;Daily Dialog偏向日常闲聊类型;DSTC7-AVSD是对话式问答,根据视频场景信息,两人进行多轮问答,讨论视频中物体和事件。

在每个数据集上的实验,百度对比了基线方法,以及每个数据集上的SOTA方法。PLATO在Persona-Chat和Daily Dialog上的自动和人工评估结果,如表1所示;PLATO在DSTC7-AVSD上的结果,如表2所示。由这些结果可见,PLATO在各个对话数据上,均超过了当前最优,取得了新的最优效果。

表1 Persona-Chat和Daily Dialog上的自动和人工评估结果

表2 DSTC7-AVSD上的自动评估结果PLATO也与其他预训练模型进行了对比,在Persona-Chat上的实验结果如表3所示。其中2.2是不使用latent space的对比模型,3.1是完整PLATO模型。通过对比这些结果,可以看出:灵活的注意力机制可以充分利用上文的双向信息(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)。

表3 不同预训练模型在Persona-Chat的PPL结果对于PLATO的定性分析,百度也在表4中提供了一些case。给定一个上文,通过对离散隐变量进行不同赋值, PLATO可以产生多样且都合理的回复。

表4 PLATO模型生成的回复

4. 总结和未来工作

尽管越来越多的工作证明了随着预训练和大规模语料的引入,自然语言处理领域开启了预训练然后微调的范式,但是在对话模型上,大规模预训练还处于初级阶段,需要继续深入探索。百度提出的隐变量空间预训练模型,可能成为端到端对话系统迈上一个新台阶的关键点之一。据悉,百度也在持续优化当前对话模型,或许在不久的将来,更加强大的对话预训练模型会被陆续披露。

产业隐变量自然语言处理对话系统PLATO百度
1
相关数据
自然语言理解技术

自然语言理解是人工智能的核心课题之一,也被广泛认为是最困难和最具标志性的任务。最经典的两个人工智能思想实验——图灵测试和中文房间,都是围绕自然语言理解来构建的。自然语言理解在人工智能技术体系中的重要性不言而喻,它一方面承载着机器和人的交流,另一方面直达知识和逻辑。自然语言理解也是人工智能学者孜孜以求的圣杯,机器学习的巨擘 Michael I. Jordan 就曾经在 Reddit 上的 AMA(Ask Me Anything)栏目中畅想用十亿美元建立一个专门用于自然语言理解的实验室。

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

对话系统技术

对话系统大致被分成两类: 任务为导向的对话系统,帮助用户去完成特定任务,比如找商品,订住宿,订餐厅等。实现任务为导向的对话系统,主要有两类方式,流水线方法和端到端方法。非任务导向的对话系统,与用户进行互动并提供回答,简单的说,就是在开放领域的闲聊。实现非任务导向对话系统也主要可分为两类,生成方法和基于检索的方法。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

自然语言生成技术

自然语言生成(NLG)是自然语言处理的一部分,从知识库或逻辑形式等等机器表述系统去生成自然语言。这种形式表述当作心理表述的模型时,心理语言学家会选用语言产出这个术语。自然语言生成系统可以说是一种将资料转换成自然语言表述的翻译器。不过产生最终语言的方法不同于编译程式,因为自然语言多样的表达。NLG出现已久,但是商业NLG技术直到最近才变得普及。自然语言生成可以视为自然语言理解的反向: 自然语言理解系统须要厘清输入句的意涵,从而产生机器表述语言;自然语言生成系统须要决定如何把概念转化成语言。

百度机构

百度是全球最大的中文搜索引擎,是一家互联网综合信息服务公司,更是全球领先的人工智能平台型公司。2000年1月1日创立于中关村,公司创始人李彦宏拥有“超链分析”技术专利,也使中国成为美国、俄罗斯、和韩国之外,全球仅有的4个拥有搜索引擎核心技术的国家之一。

https://www.baidu.com/
文本生成技术

文本生成是生成文本的任务,其目的是使人类书写文本难以区分。

对话生成技术

对话生成是能经由对话或文字进行交谈的计算机程序任务。能够模拟人类对话,通常以通过图灵测试为评估标准。

推荐文章
暂无评论
暂无评论~