模型训练核心:GPT 系列模型所依赖的数据

目录

GPT 初代训练数据与规模

GPT-2.0 训练数据与规模

GPT-3.0 训练数据与规模

InstructGPT 训练数据与规模

数据集数量

数据集分布

数据集标注标准

GPT-3.5 训练数据猜测

ChatGPT RLHF 训练数据猜测

总结


在前面的章节中,我们从模型结构、训练方法层面讲解了 ChatGPT 的原理,通读下来,大家应该可以对 ChatGPT 的原理有一个大致的认识和了解了。

如果把学习 ChatGPT 原理比作学习烹饪的话,那么,学完前面章节的模型原理就相当于学会了一份菜谱。

可是,学会菜谱可并不算学会了烹饪,还需要了解食材怎么选取,烹饪的厨具怎么选择。

ChatGPT 模型的食材就是数据,厨具就是算力。

ChatGPT 能够取得如此卓越的效果,依靠的绝不仅仅是模型结构和算法原理创新,数据算力也是其中极为重要的两环。自从 ChatGPT 发布公测以来,不断有其它公司或机构宣称也制作了性能可以对标 ChatGPT 的模型,但普遍来讲,都不及 ChatGPT 的效果优秀。换句话说,数据和算力在一定程度上卡住了后来者的脖子。

然而,OpenAI 机构并未公开 ChatGPT 相关的训练数据集和所耗用的算力。因此,我们只有通过回顾 GPT 系列模型公开的信息,尝试使用 ChatGPT,来大致分析 ChatGPT 的数据特点和规模。数据的准备、收集、清洗对于训练一个优质的模型来说非常重要。

GPT 初代训练数据与规模

GPT 初代沿着语言模型预训练(第 3 节)+ 特定任务 finetune 的思路展开。

  • 其中,语言模型预训练所使用到的数据主要是 BooksCorpus 数据集,其中包含了 7000 篇各种语言风格的英文图书,篇幅较长,适合于模型训练较长的上下文依赖。数据集总计大约 5GB。
  • 特定任务 finetune 则采用了在 NLP 学术界经常使用的测评数据集,如下表所示。

表中左侧分别是传统的 NLP 建模类型自然语言推理、问答系统、句子相似度计算、文本分类。右侧为数据集名称,读者可以根据名称搜索到相应的数据集。

在 GPT 初代模型中,它已经运用了在当时看来规模庞大的数据集和模型规模。但是,BooksCorpus 数据集总共只有 7000 本图书,这个数据量还是比较少的,内容也比较单一。

与此同时,GPT 模型使用的参数量规模大约在 1.17 亿,这个量级还是比较小的。

GPT-2.0 训练数据与规模

GPT2.0 十分注重数据的质量,从一个国外社交媒体 Reddit 上爬虫爬取了大量高质量数据,经过精心的组织和整理,形成了一个总数据量达 40GB 的数据集 WebText。社交媒体上的信息包罗万象,这些数据集的覆盖领域、内容、语言种类、风格、数据规模,就比 BookCorpus 要广得多了,因此它比较适合用于训练多任务模型。

OpenAI 在发表的 GPT2.0 论文中着重强调,在训练模型过程中,只有高质量的数据才能让模型获得好的效果,低质量的数据只会导致模型学习到垃圾信息。 也就是俗话说的,种瓜得瓜,种豆得豆。

此外,模型已经丢弃了预训练+ finetune 的思路,研究者们为了解决多任务学习的问题,直接预训练模型,然后不改变模型的参数和结构,后接 zero-shot,初次在多种 NLP 任务上做了尝试。

GPT-3.0 训练数据与规模

紧接着,GPT-3.0 采用了更大的数据,并在 few-shot 的道路上继续前进。它所采用的模型结构和数据情况与 ChatGPT 已较为接近。

GPT3 的主要数据集来源于 Common Crawl(CC) ,它是一个开源的互联网爬虫,旨在为 AI 提供充足的数据集。它的数据规模非常大,达到了 570 GB。语料分布极为广泛,只要是能够被爬虫爬到的,不限语言种类、时间、内容,统统被囊括进来。

当然,直接利用这套数据训练模型,会有一些低质量的文本对模型效果产生影响。所以,GPT3 做了一些操作,清洗文本,提升数据质量:

  • 制作了一个小型的高质量数据集,比较其与 Common Crawl 中的所有数据集的数据质量,把低质语料过滤掉。

  • Common Crawl 中还有很多的重复数据,GPT3 做了一个简单的去重操作(注意,570GB 是去重和清洗过后的数据量)。

  • 再加入一些其它的数据集,增加数据的多样性。那么,到底加入了哪些数据集呢?

    • WebText:这是 GPT2 中的数据集,再次利用了;
    • Books:这是 GPT 初代的数据集,又再次扩充利用了;
    • Wikipedia:维基百科中囊括了大量的高可信度的文本和知识,它有助于提升模型对事实类问题的回答。

所有利用的数据集以下表展示,这几种数据集,表中是以第 4 节中介绍的基于 BPE 算法做了 tokenization 之后的 token 为计数单位的。最后一列可以看作是这几个数据集的重要性。数值越高,说明数据集的质量越高,内容越可信,值得模型多学习几遍。数值越低,则说明数据集可信度较低,学或不学,并不起关键作用。

模型随着数据量的上升,其参数规模势必要跟着扩增。GPT3 的参数规模已经达到了 1750 亿。相比于前几代模型,GPT3 已经是个庞然大物。

说个不太科学的类比,人类之所以统治地球,站在生物链的顶端,可能并不是因为人的大脑结构比其它动物高级,而是人脑中的神经细胞数量远远碾压其它动物。

InstructGPT 训练数据与规模

GPT3、InstructGPT、GPT3.5、ChatGPT 这几个模型的关系如下图所示:

InstructGPT 模型直接在 GPT3 模型的基础上,尝试了 RLHF 训练方法。ChatGPT 实际上是在预训练语言模型 GPT3.5 基础上,结合 RLHF 训练方法得到的产物。

数据集数量

根据第 11 节对 RLHF 原理的介绍,InstructGPT 制作的训练数据集数量情况如下表所示:

其中,prompt 就是要输入给模型的指令,主要包括数据标注员自己想出来的,也包括从互联网上用户那里收集到的。SFT 即指有监督学习,RM 为训练奖励模型,PPO 即强化学习。

在 SFT 阶段,标注员提供的数据量多过用户提供的;而在 RM 阶段,用户提供的数量多过标注员;在强化学习阶段,已经完全脱离了标注员的标注数据。依据我个人粗浅的理解,标注员人数是有限的,因此构造的 prompt 语言风格、指令内容多多少少会有一定的规律,而互联网上用户的提问形式更加多样,内容覆盖也更广,在 PPO 阶段学习,使用了完全针对用户的数据集。

总体而言,这个数据量大约几万条,相比海量的预训练语言模型中用到的文本语料而言,可以说微乎其微,它说明了 RLHF 在少量的数据量上依然可以取得非常惊艳的效果

数据集分布

所有的这些 prompt 类型分布如下表所示,绝大多数都是文本生成、头脑风暴、聊天、总结等偏主观的指令。换句话说,模型学习到了更多的语言知识和语言操作,而对常识知识、事实性知识较为缺少。

例如,写一个爱情剧本,写一个简短的故事,翻译一段外文,头脑风暴一下,这些都更加偏向文学题目,而事实性、常识性的内容如计算 23+194.9=?,世界上第二高峰叫做什么名字?等等客观题目则比较缺乏。

这就很容易导致模型出现胡言乱语、编造事实的情况出现,这被称为幻觉妄语(Hallucination) ,仿佛一个精神病人在说一些不合逻辑和事实的事情。

在上表中,真正针对模型对客观知识性回复的内容,只有开放域问答(Open QA) 这一个子类别。这个类别仅仅占到总数据量的 12.4%。所谓开放域问答,即问题的答案是客观的,但答案的搜索范围不设限。实际上,互联网上用户针对 ChatGPT 的问答,开放域问答占绝大多数,例如以下 prompt:

相对应的则是闭域问答(Closed QA  ,类似于语文考试中的阅读理解,答案在给出的文本内部,但是文本中的信息真实性不可考证。例如以下:

假设我们给 ChatGPT 提供外部的文本,以 prompt 形式输入进去,然后针对文本内容进行闭域问答,实际上就构成了一个垂直领域的问答系统,这个目前已经有了很多的应用产品,如 ChatPDFlangchain 等等,大家感兴趣可以搜索一下它们的实现原理。

数据集标注标准

在第 11 节中,详细介绍了 RLHF 算法过程,其中讲到了在制作 Reward 模型时,需要对模型根据 prompt 生成的response 进行打分,而这个打分实际上需要有一定的标准。那么,OpenAI 设计了如下的打分标准:

在这份标准中,主要包括回答偏题、胡说八道,包含色情、暴力内容,给出有害建议,随意道德评价等等。例如,

prompt2:我想去重庆玩,有哪些好玩的地点呢?

response:你怎么这么无知呀,连重庆哪里好玩都不知道。重庆是一个充满活力和美食的城市,有很多值得一去的地方。以下是一些推荐:春熙路步行街,都江堰水利工程,华美极乐世界,少林寺。

其中,“华美极乐世界”是一个完全不存在的景点,这就属于胡说八道(Hallucination)的类型。“你怎么这么无知呀”则属于对用户产生了不恰当信息这一类型。

由此,OpenAI 在数据标注时,着重强调了 ChatGPT 模型给出的回答应当满足几个原则,即对用户有帮助(helpful)、符合事实没有胡编乱造(truthful)、不存在偏见和歧视(harmless) 。

GPT-3.5 训练数据猜测

尽管没有可靠资料,但是我们依然可以推断出,GPT3.5 利用了更加庞大的数据集,并且在模型训练过程中,事实性、可靠性的、包含客观知识的数据集被赋予了更高的权重。

而小说、故事、人们的聊天等等内容,则往往偏向人为编造。这部分数据集的作用在于,让语言模型学会丝滑地操作语言、理解语言。事实上,ChatGPT 在语言文字的运用方面已经超越了绝大多数人类,并不需要再做额外的训练。

此外,GPT3.5 已经超越了自然语言处理这个概念。自然语言通常就指人类使用的英语、汉语、日语等。而从公测的模型能力来看,它完全可以读懂如 C、Python 等程序语言,这些是非常抽象的,也可以读懂计算机的二进制数值的功能含义。

用户:请问以下二进制数据是什么含义?101010000011101001010010010000011110000111。

模型:上述二进制信息代表了……

此外,以文字形式表示的图像也可以理解,尽管图像是一种二维数据,文字是一维的串行数据:

用户:请问以下图片数据是什么含义?

   *

  *****

 *********

*************

模型:上述图像代表了一个三角形。

换句话说,但凡能够以文字形式表示的任何数据,GPT3.5 都可以处理并理解。

ChatGPT RLHF 训练数据猜测

在 InstructGPT 模型中,RLHF 强化学习的训练阶段,仅仅使用了几万条数据集,这个数据量级实在是太低了。从GPT 系列模型的发展规律来看,优质的模型效果 100% 来源于充足、高质量的数据集。自从 ChatGPT 接口放开以后,OpenAI 收获了来自全世界各种不同国家、语言、文化的问答数据。因此,我相信 OpenAI 用了比几万条数据集高出量级的 prompt 来制作 ChatGPT的 RLHF 部分。

而且,ChatGPT 的模型能力不仅仅是完成一些语言任务,还具备了编程、从程序中找bug、计算数学、回答物理、化学、生物等等其它科学客观问题。我想,ChatGPT 在制作 prompt 过程中,也加入了占比更高的客观问题 prompt。

总结

  • GPT 系列模型的发展伴随着数据量的指数级增长,证明了只有充足参数的大模型才能具备较高的智能。
  • InstructGPT 以较少的数据集训练得到了超过 SFT 的效果,证明了 RLHF 方法的有效性。
  • 数据的质量高低对模型训练的效果影响很大,需要克服幻觉妄语(Hallucination)。
  • ChatGPT 模型已经超越了自然语言处理的范畴。

猜你喜欢

转载自blog.csdn.net/m0_68036862/article/details/131198794
今日推荐