三个方面浅析数据对大语言模型的影响
由于大语言模型的训练需要巨大的计算资源,通常不可能多次迭代大语言模型预训练。千亿级参数量的大语言模型每次预训练的计算需要花费数百万元人民币。因此,在训练大语言模型之前,构建一个准备充分的预训练语料库尤为重要。
本篇文章中,将从数据规模、数量质量以及数据多样性三个方面分析数据对大语言模型的性能的影响。需要特别的说明的是,由于在千亿参数规模的大语言模型上进行实验的成本非常高,很多结论是在 100 亿甚至是 10 亿规模的语言模型上进行的实验,其结果并不能完整的反映数据对大语言模型的影响。此外,一些观点仍处于猜想阶段,需要进一步验证。需要各位读者甄别判断。
1.数据规模影响
随着大语言模型参数规模的增加,为了有效地训练模型,需要收集足够数量的高质量数据,在文献 针对模型参数规模、训练数据量以及总计算量与模型效果之间关系的研究之前,大部分大语言模型训练所采用的训练数据量相较于 LLaMA 等最新的大语言模型模型都少很多。
表 1 给出了模型参数量和预训练数据量对比。在 Chinchilla 模型提出之前,大部分的大语言模型都在着重提升模型的参数量,但是所使用的训练语料数量都在 3000 亿词元左右,LAMDA 模型所使用的训练语料数量甚至仅有 1680 亿。虽然 Chinchilla 模型参数量仅有 LAMDA 模型一半大小,但是训练语料的词元数量却达到了 1.4 万亿词元,是 LaMDA 模型训练语料的 8 倍多。
表 1 模型参数量与训练语料数量对比
DeepMind 的研究人员在文献 中给出了他们通过训练参数范围从 7000 万到 160 亿,训练词元数量从 5 亿到 5000 亿不等的 400 多个语言模型所得到分析结果。研究发现,如果模型训练要达到计算最优(Compute-optimal),模型大小和训练词元数量应该等比例缩放,即模型大小加倍则训练词元数量也应该加倍。为了验证该分析结果,他们使用与 Gopher 语言模型训练相同的计算资源,根据上述理论预测了 Chinchilla 语言模型的最优参数量与词元数量组合。最终确定 Chinchilla 语言模型为 700 亿参数,使用了 1.4 万亿词元进行训练。通过实验发现,Chinchilla 在很多下游评估任务中都显著地优于 Gopher(280B)、GPT-3(175B)、Jurassic-1(178B)以及 Megatron-Turing NLG(530B)。
图 1.1 给出了在同等计算量情况下,训练损失随参数量的变化情况。针对 9 种不同的训练参数量设置,使用不同词元数量的训练语料,训练不同大小的模型参数量,使得最终训练所需浮点运算数达到预定目标。对于每种训练量预定目标,图中左侧绘制了平滑后的训练损失与参数量之间的关系。从左图中可以看到,训练损失值存在明显的低谷,这意味着对于给定训练计算量目标,存在一个最佳模型参数量和训练语料数量配置。利用这些训练损失低谷的位置,还可以预测更大的模型的最佳模型参数量大小和训练词元数量,如图 3.5 中间和右侧所示。图中绿色线表示使用 Gopher 训练计算量所预测的最佳模型参数量和训练数据词元数量。还可以使用幂律(Power Law)对计算量限制、损失最优模型参数量大小以及训练词元数之间的关系进行建模。C 表示总计算量、Nopt 表示模型最优参数量、Dopt 表示最优训练词元数量,他们之间的关系符合一下关系:
图 1.1 在同等计算量情况下,训练损失随参数量的变化情况
LLaMA 模型在训练时采用了与文献相符的训练策略。研究发现,70 亿参数的语言模型在训练超过 1 万亿个词元(1T Tokens)后,性能仍在持续增长。因此,Meta 的研究人员在 LLaMA2 模型训练中,进一步增大了训练数据量,训练数据量达到了 2 万亿词元。文献给出了不同参数量模型在训练期间,随着训练数据量的增加,模型在问答和常识推理任务上的效果演变过程,如图 2.1 所示。研究人员分别在 TriviaQA、HellaSwag、NaturalQuestions、SIQA、WinoGrande 以及 PIQA 等 6 个数据集上进行了测试。可以看到,随着训练数据量的不断提升,模型在分属两类任务的 6 个数据集上的性能都在稳步提高。通过使用更多的数据和更长的训练时间,较小的模型也可以实现良好的性能。
图 1.2 LLaMA 模型训练期间在问答和常识推理任务上效果演变
文献对不同任务类型所依赖的语言模型训练数量进行了分析。针对分类探查(ClassifierProbing)、信息论探查(Info-theoretic Probing)、无监督相对可接受性判断(Unsupervised Relative Acceptability Judgment)以及应用于自然语言理解任务的微调(Fine-tuning on NLU Tasks)等四类任务,基于不同量级预训练数据的 RoBERTa 模型在上述不同类型任务上的效果进行了实验验证和分析。分别针对预训练了 1M、10M、100M 和 1B 个单词的 RoBERTa 模型进行了能力分析。研究发现,模型只需要约 10M 到 100M 个单词的训练,就可以可靠地获得语法和语义特征。但是需要更多的数据量训练才能获得足够的常识知识和其他技能,并在典型下游自然语言理解任务中取得较好的结果。
2 数据质量影响
数据质量通常被认为是影响大语言模型训练效果的关键因素之一,包含大量重复的低质量数据甚至导致训练过程不稳定,造成模型训练不收敛。现有的研究表明训练数据的构建时间、包含噪音或有害信息情况以及数据重复率等因素,都对语言模型性能存在较大影响。截止到 2023 年 9 月的研究都得出了相同的结论,即语言模型在经过清洗的高质量数据上训练数据可以得到更高的性能。
文献介绍了 Gopher 语言模型在训练时针对文本质量进行的相关实验。如图 2.1 所示,具有 140 亿参数的模型在 OpenWebText、C4 以及不同版本的 MassiveWeb 数据集上训练得到的模型效果对比。他们分别测试了利用不同数据训练得到的模型在 Wikitext103 单词预测、Curation Corpus 摘要以及 LAMBADA 书籍级别的单词预测三个下游任务上的表现。图中 Y 轴表示不同任务上的损失,数值越低表示性能越好。从结果可以看到,使用经过过滤和去重后的 MassiveWeb 数据训练得到的语言模型在三个任务上都远好于使用未经处理的数据训练得到的模型。使用经过处理的 MassiveWeb 数据训练得到的语言模型在下游任务上的表现也远好于使用 OpenWebText 和 C4 数据集训练得到的结果。
图 2.1 Gopher 语言模型使用不同数据质量训练效果分析
GLaM 语言模型构建时,同样也对训练数据质量的影响的进行了分析。该项分析同样使用包含 17 亿参数的模型,针对下游少样本任务性能进行了分析。使用相同超参数,对通过原始数据集和经过质量筛选后的数据训练得到的模型效果进行了对比,实验结果如图 2.2 所示。可以看到,使用高质量数据训练的模型在自然语言生成和自然语言理解任务上表现更好。特别是,高质量数据对自然语言生成任务上的影响大于在自然语言理解任务。这可能是因为自然语言生成任务通常需要生成高质量的语言,过滤预训练语料库对于语言模型的生成能力至关重要。文献[86] 的研究强调了预训练数据的质量在下游任务的性能中也扮演着关键角色。
Google Research 的研究人员针对数据构建时间、文本质量、是否包含有害信息开展了系统研究。使用具有不同时间、毒性和质量以及领域组成的数据,训练了 28 个 15 亿参数的仅解码器结构语言模型。研究结果表明,语言模型训练数据的时间、内容过滤方法以及数据源对下游模型行为具有显著影响。
图 2.2 GLaM 语言模型使用不同数据质量训练效果分析
针对数据时效性对于模型效果的影响问题,研究人员们在 C4 语料集的 2013、2016、2019 和 2022 等不同版本上训练了四个自回归语言模型。对于每个版本,从 Common Crawl 数据上删除了截止年份之后爬取的所有数据。使用新闻、Twitter 和科学领域的评估任务来衡量时间错位的影响。
这些评估任务的训练集和测试集按年份划分,分别在每个按年份划分的数据集上微调模型,然后在所有年份划分的测试集上进行评估。图 2.3 给出了使用 4 个不同版本的数据集所训练得到的模型在 5 个不同任务上的评测结果。热力图颜色(Heatmap Colors)根据每一列进行归一化得到。从图中可以看到,训练数据和测试数据的时间错配会在一定程度上影响模型的效果。
图 2.3 训练数据和测试数据之间的时间错位情况下性能分析
Anthropic 的研究人员针对数据集中的重复问题开展了系统研究。为了研究数据重复对大语言模型的影响,研究人员构建了特定的数据集,其中大部分数据是唯一的,但是只有一小部分数据被重复多次,并使用这个数据集训练了一组模型。研究发现了一个强烈的双峰下降现象,即重复数据可能会导致训练损失在中间阶段增加。例如,通过将 0.1% 的数据重复 100 次,即使其余 90% 的训练数据保持不变,一个 800M 参数的模型的性能也可能降低到与 400M 参数的模型相同。此外,研究人员还设计了一个简单的复制评估,即将哈利·波特(Harry Potter)的文字复制 11 次,计算模型在第一段上的损失。在仅有 3% 的重复数据的情况下,训练过程中性能最差的轮次仅能达到参数量为 1/3 的模型的结果。
文献 中对大语言模型的记忆能力进行分析,根据训练样例在训练数据中出现的次数,显示了记忆率的变化情况,如图 2.4 所示。可以看到,在训练中只见过一次的样例,Palm 模型的记忆率为 0.75%,而见过 500 次以上的样例的记忆率超过 40%。这也在一定程度上说明重复数据对于语言模型建模具有重要影响。这也可能进一步影响使用上下文学习的大语言模型的泛化能力。由于 Palm 方法仅使用了文档级别过滤,因此片段级别(100 个以上 Token)可能出现非常高的重复次数。
图 2.4 大语言模型记忆能力评
3.数据多样性影响
来自不同领域、使用不同语言、应用于不同场景的训练数据具有不同的语言特征,包含不同语义知识。通过使用不同来源的数据进行训练,大语言模型可以获得广泛的知识。表 3.2 给出了 LLaMA 模型训练所使用数据集合。可以看到 LLaMA 模型训练混合了大量不同来源数据,包括网页、代码、论文、图书、百科等。针对不同的文本质量,LLaMA 模型训练针对不同质量和重要性的数据集设定了不同的采样概率,表中给出了不同数据集在完成 1.4 万亿词元训练时,每个数据集的采样轮数。
Gopher 模型训练过程对数据分布进行了消融实验,验证混合来源对下游任务的影响情况。
表 3.1 LLaMA 模型所使用数据集合
针对 MassiveText 子集设置了不同权重的数据组合,并用于训练语言模型。利用 Wikitext103、LAMBADA、C4 和 Curation Corpus 测试不同权重组合训练得到的语言模型在下游任务上的性能。为了限制数据组合分布范围,实验中固定了 Wikipedia 和 GitHub 两个数据集合的采样权重。对于 Wikipedia,要求对训练数据进行完整的学习,因此将采样权重固定为 2%。对于 GitHub,采样权重设置为 3%。
对于剩余的的四个子集(MassiveWeb、News、Books 和 C4)设置了 7 种不同的组合。图 3.2 给出了 7 种不同子集采样权重训练得到 Gopher 模型在下游任务上的性能。可以看到,使用不同数量子集采样权重训练,所获得模型效果差别很大。在所有任务中表现良好且在 Curation Corpus 上取得最佳表现的绿色配置是 10% 的 C4、50% 的 MassiveWeb、30% 的 Books 和 10% 的 News。增加书籍数据的比例可以提高模型从文本中捕获长期依赖关系的能力,因此可以降低 LAMBADA 语料集上的损失。而使用更高比例的 C4 数据集则有助于在 C4 验证集上获得更好的表现。
图 3.2 采用不同采样权重训练得到的 Gopher 语言模型在下游任务上的性能
以上就是从数据规模、数量质量以及数据多样性三个方面分析数据对大语言模型的性能的影响的介绍,在构建大语言模型时,数据的质量和多样性对于提高模型的性能至关重要。同时,为了推动大语言模型的研究和应用,学术界和工业界也开放了多个针对大语言模型的开源数据集。下一篇文章中,我还会介绍典型的开源数据集合,敬请关注!
文章转载自:华为云开发者联盟
评论