纵观对话预训练技术演变史:化繁为简的背后,什么在消亡?

673c18c77884d42cdef1f8b0ea7e3889.png

文 | 橙橙子

最近,百度发布了对话生成预训练模型PLATO-XL,110亿的参数规模,也让它成为了对话领域目前最大的预训练模型。不到两年的时间,PLATO系列已走过三代。作为国内对话预训练技术的头部玩家,它的每一次升级,也拨动着对话技术爱好者的好奇心。

今天,我们将秉承客观公正的态度,对三代技术进行系统的对比,试图从它的演化历程中深入挖掘出开放域对话效果提升的秘密。文末最后,将会抛出灵魂拷问化繁为简是否意味着“算法”走向了尽头,对话预训练技术之路将走向何方?

论文标题:
PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable
PLATO-2: Towards Building an Open-Domain Chatbot via Curriculum Learning
PLATO-XL: Exploring the Large-scale Pre-training of Dialogue Generation

论文链接:
https://arxiv.org/pdf/1910.07931.pdf
https://arxiv.org/pdf/2006.16779.pdf
https://arxiv.org/pdf/2109.09519.pdf

PLATO-1代:基于离散隐变量的对话预训练

PLATO-1代主要为了解决开放域对话系统中存在的两个问题,一是多轮对话数据匮乏问题,二是一个对话的上文(Context)可以对应多个合理回复(Response)的“一对多(One-to-many)”问题,从而增加回复的多样性和吸引力。

为了解决第一个问题,PLATO在通用预训练模型BERT的基础上进行了较大规模对话领域数据(Twitter & Reddit ~8.3M)的二次预训练,并且在下游特定种类的对话数据上进行了微调。其中,领域二次预训练起到了关键作用。

为了解决第二个问题,PLATO在预训练中引入了隐变量识别任务。给定训练数据上下文和目标回复(Context,Response),首先让模型以识别隐变量种类的方式学习到隐含的意图是什么,意图的候选是一个有限的大小为K的隐变量集合。即根据上下文和回复估计出离散隐变量分布的后验概率,并从中采样。接着,才会依据估计得到的隐变量和上下文进行拼接,进行序列化的回复生成任务

在模型结构上,PLATO借鉴了UniLM[1]:对上文进行了双向编码,充分利用和理解上文信息;对回复进行单向解码,适应回复生成的自回归特性。

b3981da97203334b31e861df8afe4d66.png

PLATO训练使用了三个目标函数。负对数似然(negative log-likelihood, NLL loss)是典型的文本生成目标。为了帮助隐变量的学习,增加了词袋损失(bag-of-words, BOW loss),即忽略回复词的顺序,让离散隐变量能捕捉到目标回复的全局信息。回复选择损失(response selection, RS loss)则是通过采样负例进行分类的方式判断回复和上下文的相关性。

整体上,PLATO的二次领域数据预训练手法和离散隐变量解决回复多样性的问题在当时是比较先进的,在闲聊、对话式问答等多个数据集上达到了当时的领先水平,并且很好的展示了解决对话多样性的能力。4c41ed110e6a7572dbee71a366e5dd22.png

值得指出的是,第一代的PLATO瞄准的是解决对话预训练中的某种特定问题。8.3M的对话数据,12层的Transformer,1.3亿参数,单机8卡,表明它并没有在参数规模和大规模训练手法上花太多功夫。

PLATO-2代:基于课程学习的对话预训练

PLATO-2代是PLATO-1代的技术延伸,即如何让PLATO-1代的技术在更大规模数据和更大规模参数下的高效训练。PLATO-2代的初心仍然想坚持PLATO-1代的思路,认为相对于Meena[2], Blender[3]等“One-to-one”的模型,基于隐变量的“One-to-many”设计具有更好的深度畅聊能力。

遗憾的是,从头开始直接放大PLATO-1代使得训练很困难。原文中并没有直接做量化的实验告诉我们有多困难或者效果损失有多严重,仅有文字表明会遇到训练不稳定和效率的问题。因此,二代采用了课程学习的思路,第一阶段,走“One-to-one”的粗粒度路线,走的是上下文双向编码,回复单向生成的经典结构。试图捕捉到典型的规律、通用的概念,结果上更倾向于得到安全的回复。第二阶段,正式引入了离散隐变量网络,走“One-to-many”的细粒度路线,目标多样回复生成。第三阶段,训练评估模型,用来学习回复的一致性从而选择最合适的回复,评估部分独立出来是为了免除多种任务的干扰。

在二代所处的历史时刻,Facebook的Blender[3]已经出生,通用预料预训练(BookWiki like Corpus)+ 社交对话数据二次预训练(Twitter+Reddit)+ 人工标注数据(BST)再次调优的思路已经成为了最佳数据利用路线,也被PLATO-2代所采用。

b60068430c168ecbd5b38ff523e09031.png

总体上,PLATO-2代的方法个人感觉是无奈之举,一代充满诚意的精心设计在更大数据和更大算力面前反而显得没有优势了,只能用最简单的一对一模型打头阵,“训练困难”四个字写满心酸、充满不甘。

其实从三阶段课程学习中每个阶段的参数细节上我们也可以看出,第二阶段离散隐变量的引入导致batch size骤减,学习率精调,可能是对显存占用、超参等有严格的要求。50e9b6f6bc19fe399da9a255523ac138.png

另外有两个细节,关于深度学习框架和深度数据清洗没有这两个环节,可能无法支撑起模型的效果。以框架为例,PLATO-2代是有着32层Transformer,16亿参数,耗费64卡,3周时间,在7亿样本训练(英文部分)的中等规模模型。已经对深度学习框架的非常规特性有一定的依赖,除了采用了混合精度等常规操作外,特别加入了gradient checkpointing/Recompute[4,5] 的能力,这是一项用时间换空间的技术,在网络前向时只保存部分中间节点,在反向时重新计算没保存的部分,能够极大的减小显存占用,提大batch size。

PLATO-3代:百亿参数极简对话预训练

其实看到3代叫PLATO-XL这个名字,当时就有一种预感,离散隐变量和课程学习都要被抛弃了。理由也是有理由的,2代已经告诉我们为了不同而不同有多么耗费心神。在巨大算力的绝对硬实力面前,貌似任何设计都显得过分雕琢而显得性价比太低了。从模型结构图就可以看出来PLATO-3代有多么朴实无华。

这是一种纯简Transform结构,对话上下文双向编码,回复单向生成,只保留了负对数似然作为文本生成的预训练目标。Token编码+位置编码+类型编码+多轮对话角色编码组成输入也是经典搭配。

3e2874c7628c1c2f184caa75afa1e2be.png

就是这样一个被PLATO1代和2代作为baseline被踩的对象,如今华丽蜕变,这样的故事我们可能在其他领域也有所耳闻。表明经典结构在参数规模没有跃进之前,不好妄自批判,否则会打脸很严重

但是朴实无华真的意味着技术简单么,显然不是!只是发生了单点技术贡献的转换。PLATO-3代的参数量在对话领域规模惊人,达到了110亿。这是一个有着72层Transformer,32个注意力头,词向量维度和前向隐层维度都相对大,在256块 V100-32G GPU上训练的单体大模型。PLATO-2代表明,如果单卡要把所有参数装进去,最多可以装入16亿参数。所以除了gradient checkpointing/Recompute[4,5],最新的3代也充分加入了PaddlePaddle新的功能特性:分片数据并行(sharded data parallelism)[6],通过在多个设备上划分优化器状态、梯度和参数来保持低通信量和高计算效率。PLATO3代的batch size达到了惊人的200万token,可以说是提分杀手锏了。从某种角度来说,特定领域模型大而强效果的背后,背书的是一个公司综合能力和一个团队的综合整合资源能力

效果上看,PLATO-3代在开放域对话连贯性、信息丰富度、吸引人的程度上有不俗的表现,同时在知识性对话和任务型对话上达到了新的高度。

9e56a4e04a9ef16f21f2668180a09f71.pngaf4386254e10a420154c8c80bd6499f7.png

发散一下:如果说单体模型参数量可以做的更大,对加速训练的基础设施、软硬件堆栈设计、分布式训练技术优化算法的要求会更苛刻。拥有5300亿的威震天-图灵(Megatron-Turing)[7] 大家是不是很耳熟?拿它在PLATO的对话数据上二次预训练效果会怎么样呢?:)

路在何方

为了对PLATO三代版本的演变细节进行更直观的对比,这里整理了表格(以英文模型为例)。

5a92820a56aee7b16a4fc0ea8e54ddbd.png

亲自体验过PLATO的效果,十分惊艳,这里要给一个大大的赞。但是又有些不安。不管我们承不承认,以预训练技术为代表的大模型已经开启了大规模工程化模式。这就意味着,目前最有效的途径里,单点模型算法的差异占比越来越小,一系列单点技术整合的壁垒占比越来越高。

但是另外一方面,工程化和资金投入(简称烧钱)又有极其相关的联系,容易导致巨头们你方唱罢我登场PK参数级别的内卷局面。如果简单优雅的方法能够把问题解决的非常好,应该值得更多的赞誉和推崇。但是能够拼手速和资源攻占的问题,不一定是关键问题。并且这似乎离我们想象的,依靠人类的灵感天赋创造力,十年磨一剑,扫地僧似的算法科学家,在白板上思维纵横,数学符号串联出突破人工智能本质问题的途径差别巨大。

工程化技术的红利会见底么?毕竟开放域对话要解决的技术问题如此复杂,要达到人类的知识水平、情感能力、多模交互水准极其困难。

雪崩的时候 没有一片雪花是无辜的。

de7742a70621c1b5d6fc1a91b249a9ad.png萌屋作者:橙橙子

拿过Kaggle金,水过ACM银,发过顶会Paper,捧得过多个竞赛冠军。梦想是和欣欣子存钱开店,沉迷于美食追剧和炼丹,游走于前端后端与算法,竟还有一颗想做PM的心!

作品推荐

  1. 惊呆!不用一张图片,却训出个图像识别SOTA?

  2. 视觉增强词向量:我是词向量,我开眼了!

  3. 多模态为什么比单模态好?第一份严谨证明来了!

7dda13cd6f2f2dcfcd92f641b9f0897b.png后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

4c26ad565fe29d095fb7d3a3a79f33b2.gif 5d3d2bb8788c3104f787dd747faefbb1.png

[1] Unified Language Model Pre-training for Natural Language Understanding and Generation https://arxiv.org/pdf/1905.03197.pdf

[2] Towards a Human-like Open-Domain Chatbot https://arxiv.org/pdf/2001.09977.pdf

[3] Recipes for building an open-domain chatbot https://arxiv.org/pdf/2004.13637.pdf

[4] Training Deep Nets with Sublinear Memory Cost https://arxiv.org/pdf/1604.06174.pdf

[5] BERT重计算:用22.5%的训练时间节省5倍的显存开销 https://mp.weixin.qq.com/s/CmIVwGFqrSD0wcSN_hgH1A

[6] Zero: Memory optimizations toward training trillion parameter models https://arxiv.org/pdf/1910.02054.pdf

[7] Using DeepSpeed and Megatron to Train Megatron-Turing NLG 530B, the World’s Largest and Most Powerful Generative Language Model https://www.microsoft.com/en-us/research/blog/using-deepspeed-and-megatron-to-train-megatron-turing-nlg-530b-the-worlds-largest-and-most-powerful-generative-language-model/

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

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

相关文章

会议交流 | CNCC2021中国计算机大会 —— 知识图谱赋能数字化转型论坛

OpenKGOpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。点击阅读原文,进入 OpenKG 网站。

LeetCode 687. 最长同值路径(二叉树,递归)

1. 题目 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。 注意:两个节点之间的路径长度由它们之间的边数表示。 示例 1: 输入:5/ \4 5/ \ \1 1 5 输出: 2示例 2: 输入:1/ …

机器学习中的数据清洗与特征处理综述

随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富。通过对这些数据的分析和挖掘,不仅能给美团业务发展方向提供决策支持,也为业务的迭代指明了方向。目前在美团的团…

论文浅尝 | 面向视觉常识推理的层次语义增强方向图网络

论文笔记整理:刘克欣,天津大学硕士链接:https://dl.acm.org/doi/abs/10.1145/3475731.3484957动机视觉常识推理(VCR)任务旨在促进认知水平相关推理的研究。现有的方法仅考虑了区域-词的相似性来实现视觉和语言域之间的语义对齐,忽…

分类问题后处理技巧CAN,近乎零成本获取效果提升

文 | 苏剑林编 | 智商掉了一地单位 | 追一科技思想朴素却不平凡的分类问题后处理技巧,浅显易懂的讲解,拿来吧你!顾名思义,本文将会介绍一种用于分类问题的后处理技巧——CAN(Classification with Alternating Normaliz…

LeetCode 840. 矩阵中的幻方(数学)

1. 题目 3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的 grid,其中有多少个 3 3 的 “幻方” 子矩阵?(每个子矩阵都是连续的&…

Docker系列之一:入门介绍

Docker简介 Docker是DotCloud开源的、可以将任何应用包装在Linux container中运行的工具。2013年3月发布首个版本,当前最新版本为1.3。Docker基于Go语言开发,代码托管在Github上,目前超过10000次commit。基于Docker的沙箱环境可以实现轻型隔离…

论文浅尝 | 动态知识图谱对齐

论文笔记整理:谭亦鸣,东南大学博士生来源:AAAI‘21链接:https://ojs.aaai.org/index.php/AAAI/article/view/16585概述本文提出了一种动态图谱(KG)对齐方法,在“动态”(即图谱可能随时间更新)的…

你的 GNN,可能 99% 的参数都是冗余的

文 | iven自从图卷积神经网络(GCN)面世以来,图神经网络(GNN)的热潮一瞬间席卷 NLP。似乎在一切 NLP 任务上,引入一个图结构,引入一个 GNN,就能让模型拥有推理能力。更重要的是&#…

LeetCode 874. 模拟行走机器人(set)

1. 题目 机器人在一个无限大小的网格上行走&#xff0c;从点 (0, 0) 处开始出发&#xff0c;面向北方。该机器人可以接收以下三种类型的命令&#xff1a; -2&#xff1a;向左转 90 度-1&#xff1a;向右转 90 度1 < x < 9&#xff1a;向前移动 x 个单位长度 在网格上有…

高级语言的编译:链接及装载过程介绍

引言 随着越来越多功能强大的高级语言的出现&#xff0c;在服务器计算能力不是瓶颈的条件下&#xff0c;很多同学会选择开发效率高&#xff0c;功能强大的虚拟机支持的高级语言&#xff08;Java&#xff09;&#xff0c;或者脚本语言&#xff08;Python&#xff0c;Php&#xf…

图谱实战 | 基于半结构化百科的电影KG构建、查询与推理实践记录

转载公众号 | 老刘说NLP本文围绕基于半结构化百科的电影知识图谱构建、查询与推理实践这一主题&#xff0c;完成基于百度百科的电影元组抽取、基于protg的电影本体构建、基于D2RQ的RDF数据转换与查询、基于Apache jena的电影知识推理四个环节的实践。这是半结构化知识图谱构建和…

推荐系统精排:看阿里妈妈再试线性模型

文 | 水哥源 | 知乎saying1.科学总是要求我们有深度&#xff0c;但在实际业务中这却是一条悖论&#xff1a;越有深度的事情往往投入产出比不够高2.当我有一个方法A&#xff0c;还有一个方法B。且B的某种简单形式就是A的时候&#xff0c;我就会很快乐&#xff0c;因为这时候B获取…

LeetCode 686. 重复叠加字符串匹配

1.题目 给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数&#xff0c;使得字符串B成为叠加后的字符串A的子串&#xff0c;如果不存在则返回 -1。 举个例子&#xff0c;A “abcd”&#xff0c;B “cdabcdab”。 答案为 3&#xff0c; 因为 A 重复叠加三遍后为 “abcd…

如何提升大规模Transformer的训练效果?Primer给出答案

文 | 舞风小兔编 | 智商掉了一地如何进一步提升大规模Transformer的训练效果&#xff1f;Primer给出了答案&#xff0c;一起来看看吧&#xff01;Transformer是深度学习界的明星模型。由于其具有高度的并行性&#xff0c;十分容易在并行计算系统中扩展至超大规模。自然语言处理…

会议交流|大模型与图学习等知识图谱相关技术实践探索

2021年&#xff0c;在疫情隔离和复杂国际形势的背景下&#xff0c;我们越发认识到重视核心基础技术&#xff0c;对保持国家独立自主发展的关键价值&#xff0c;互联网和科技行业也面临着新的挑战和变革机遇&#xff0c;新的AI技术正发挥越来越大的作用&#xff0c;AI技术本身正…

Kafka文件存储机制那些事

Kafka是什么 Kafka是最初由Linkedin公司开发&#xff0c;是一个分布式、分区的、多副本的、多订阅者&#xff0c;基于zookeeper协调的分布式日志系统(也可以当做MQ系统)&#xff0c;常见可以用于web/nginx日志、访问日志&#xff0c;消息服务等等&#xff0c;Linkedin于2010年贡…

LeetCode 392. 判断子序列(双指针二分查找)

1. 题目 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长&#xff08;长度 ~ 500,000&#xff09;&#xff0c;而 s 是个短字符串&#xff08;长度 <100&#xff09;。 字符串的一个子序列是原始…

仅仅因为方法 Too Simple 就被拒稿,合理吗?

文 | 小戏编 | 小轶如果你看到自己实验行之有效的论文被退稿&#xff0c;而收到的退稿理由仅仅是“方法太简单”&#xff0c;你会怎么想&#xff1f;这两天在推特上&#xff0c;佐治亚理工的 Riedl 教授吐槽了自己收到的 AAAI phase 1 退稿理由居然是因为“这方法似乎太简单”&…

论文浅尝 | 从具有数值边缘属性的知识图谱中学习嵌入

论文笔记整理&#xff1a;朱珈徵&#xff0c;天津大学硕士链接&#xff1a;https://www.ijcai.org/proceedings/2021/0395.pdf动机从遗传数据到社会网络&#xff0c;在越来越多的场景下与知识图谱边缘相关的数值已经被用来表示不确定性、边的重要性&#xff0c;甚至是带外知识。…