ps:在机器学习中,训练数据和测试数据通常是相似的,或者至少是同一类型的。但对于大型语言模型而言,训练数据被称为原始文本。
5.1
大语言模型背后的数据
大部分语言模型,例如:T5,GPT-3,Gopher的标准数据源是来自于Common Crawl。通常在从Common Crawl获取训练语料,要经过预处理,去重,语言识别,质量筛选等清洗过程。虽然从网络上获取的数据很丰富,但是这却不是最具有代表性的。网络上的数据来自发达国家的年轻用户占比较大,网络上的不良影响会是使某些边缘人群产生对网络的排斥感。
5.1.1
Webtext和OpenWebText
WebText是一个大型数据集,它的数据是从社交媒体平台Reddit所有出站链接网络中爬取的,每个链接至少有三个赞,代表了流行内容的风向标,对输出优质链接和后续文本数据具有指导作用。WebText主要是被用来训练GPT-2模型,目标是获取多样化且高质量的数据集。
OpenWebText
OpenWebText数据集从创建理念上复刻了WebText的构建方法,其目的是尽可能的模拟和复现WebText的制作思路和方法。这样子,研究人员们就可以利用OpenWebText来进行一些原本需WebText的实验和研究。
5.1.2
Colossal Clean Crawled Corpus(C4)
C4 语料库是爬虫项目 Common Crawl 在 2019 年 4 月对全网上部分文本的一次快照,其中使用了一些过滤器来删除非自然英语文本。这些过滤逻辑包括舍弃掉行尾没有终结符的文本、少于三个单词的句子、总共不到5个句子文档以及 Lorem ipsum 占位符,以及删除了包含任何淫秽色情、暴力恐怖等不良内容的文本。C4语料库主要是用来训练谷歌的T5模型。通过对数据集进行深入分析,发现其主要涉及一下几个方面:
(1)元数据:来源于语言数据
(2)包含的数据:由机器或者人类创作的,社会偏见,数据污染。
来自 Hugging Face 和艾伦人工智能研究所等机构的研究人员,曾经对C4语料库进行分析。
在社会偏见上,团队发现犹太人和阿拉伯人是最两极分化的民族:模型对犹太人有积极的偏见,而对阿拉伯人有消极的偏见。团队试图证明 C4 是这些偏见的导火索。团队通过对 Hamilton 等人(2016)的各种社会词汇进行平均,计算出一个情感词汇,并计算在同一文本中出现的带有情感的词汇。团队发现,关于“犹太人”的积极词语比例(在 340 万个词语中占比 73.2%)明显高于“阿拉伯人”(在 120 万个词语中占比 65.7%)。这是一个代表性的负面例子。
对于数据污染,有团队在研究C4的时候提出过检查他们的基准数据库。由于基准数据集常常被上传到网站上,因此基准数据集污染是一个潜在的问题。Brown et al.(2020)在引入 GPT-3 时提出了这个问题,他们承认,在他们的训练结束后,在过滤过程中发现了一个 bug,导致了一些基准数据集污染。由于模型再训练的成本问题,他们转而选择分析不同任务受到污染的影响程度,他们发现这些污染确实影响到了测试性能。
(3)排除的数据:医疗或健康数据,人口身份。
这其中的部分数据是来自于patent.google.com在,这些页面中有92%是在过去十年编写的。而且51.3% 的网页托管在美国。据估计,英语人口数量排名第二、第三和第四的国家——印度、巴基斯坦、尼日利亚和菲律宾,尽管有数千万讲英语的人,但它们的网址只有美国的 3.4%、0.06%、0.03%、0.1%。
我这里只是简单扩展了一下来自 Hugging Face 和艾伦人工智能研究所等机构的研究人员,对C4语料库进行分析得到的数据,在下面的这篇文章有更多关于C4语料库的研究。都在喂大规模互联网文本,有人把著名的 C4 语料库“读”透了 - 知乎 (zhihu.com)
5.1.3
Benchmark的数据污染问题
在对大型语言模型的能力进行评估时,我们通常会使用一些基准数据,比如:问题-答案对。我们需要注意在我们进行模型训练时,基准数据尽量不要训练数据有太多的重合,因为这样可能会使基准性能产生偏差。在机器学习中,保证数据卫生相对容易。这里面主要存在两种污染,一种是输入和输出的污染,另一种是只有输入在训练数据中出现的污染。但是这种数据不是由于数据集托管导致的,而是数据集在清洗的过程中,采用了JSON文件进行存储而造成的。所以当前的数据污染是一种自身很难避免的特性。但这也很容易造成很多问题,比如前面的“犹太人”和“阿拉伯”的共现频率产生差异。其次,数据集的选择和过滤也可能导致损害,以C4为例,大概只有10%被保留,其中Common Crawl涉及性取向的数据更容易被过滤。
5.1.4
GPT-3的数据集
GPT-3的数据集主要是来自与Common Crawl,而Common Crawl又类似与一个参考数据集WebText。通过训练一个二元分类器来检测WebText和Common Crawl的区别,尽可能的保留接近于WebText的文档。在处理数据时,GPT-3还采用模糊去重的方法,并且在基准数据集中移除了数据。此外GPT-3还扩大数据采样的多样性。所以在训练中,Common Crawl在数据集中占比82%,但只贡献了60%的数据。
5.1.5
The Pile数据集
这下面是The Pile数据集进行处理的一些流程,他的核心理念时从较小的高质量数据资源(如学术和专业资源)中获取数据。
首先将从CC 2013~2020获取的WARC文件分成3679份,随机选择22份进一步做语言识别和文本提取。语言识别采用pycld2库。文本提取使用jusText库。jusText提取文本之前需要先做语言识别,并且不能处理中文和日文等不使用空格分割字符的语言。
过滤
在高质量数据上训练了一个分类器对网页文档进行过滤。采用OpenWebText2的数据作为正样例。帕累托分布阈值α设为3,过滤了约24%的低质量文档。
去重
采用MinHashLSH算法进行模糊去重。每个Minhash使用了10个哈希函数,Jaccard相似度近似为0.5。去掉了约28%的重复文档。
The Pile包含了许多GPT-3所没有包含的资源。
5.2
数据集文档
数据集文档的目的主要是两个方面:一方面能够进行反馈,让创建者能够反思他们的决定以及这个过程中可能产生的危害,比如社会偏见。另一方面,它可以让使用者了解何时应该使用数据集,何时不应该使用数据集。
5.3
数据生态
目前为止,我们主要关注了现有的大型语言模型数据集的分析以及文档记录。我们还可以从其他的方面进行研究,比如数据管理,数据治理,数据尊严等方面。