AI技术干货|深入探索如何微调大型预训练模型(中篇)
金博士| 流媒体网| 2024-03-18
【流媒体网】摘要:如何获取开源项目中的各类基础数据集?

  本文导读:本篇是“基于开源大模型库快速实现AI应用”系列教程的一部分。在前一篇《深度解析Transformer大模型管道背后的原理》中,我们通过一个实例详细展示了如何结合模型和分词器,来复现《开源Transformer模型实现NLP文本应用》中提到的管道(pipeline)功能。文章还深入探讨了分词器的工作原理,并在文末讲解了如何用大模型处理多句子,以及相关的注意事项。

  本文将进一步引导读者,展示如何针对特定数据集优化预训练模型。我们首先会介绍如何获取开源项目中的各类基础数据集,为微调工作打下坚实基础。之后,我们将深入探索高级的训练器(Trainer)API,这为模型微调提供了一个便捷的接口。同时,为了满足特定需求,本文也会指导您如何实现自定义的训练循环。鉴于当前的训练任务常在分布式环境下完成,我们还会介绍如何借助特定的加速库来简化这一流程,使之适应各种硬件配置。整体而言,本章的目标是为您提供一整套工具和方法,帮助您更有效地利用预训练模型,在各类任务上实现更佳表现。

  关键词:预训练模型、模型微调、训练器、优化器、动态填充、数据整理函数

  前文回顾:AI技术干货|深入探索如何微调大型预训练模型(上篇)

  3. 数据集

  上一节示例程序展示了如何使用transformers库微调预训练的BERT模型进行序列分类任务。当然,仅仅在两个句子上训练模型并不会产生很好的结果。要获得更好的结果,我们需要准备一个更大的数据集。

  在本文中,我们将使用MRPC(Microsoft Research Paraphrase Corpus)数据集作为例子,这个数据集是由William B. Dolan和Chris Brockett在一篇论文中介绍的。该数据集由5,801对句子组成,带有一个标签,指示它们是否是释义句(即,两个句子是否意思相同)。我们选择它作为本章的内容,因为它是一个小数据集,所以很容易进行实验和训练。

  在介绍MRPC之前,我们先看一下GLUEBenchmark及其进阶版本SuperGLUE。

  3.1. GLUE benchmark

  GLUE(General Language Understanding Evaluation)基准测试是一个专门评估各种自然语言处理(NLP)模型在多个文本理解任务上性能的工具。它的目标是为NLP社区提供一个统一的评价标准,帮助研究者们能够在一个公共的基准上对比各种模型的性能差异。

  GLUE涵盖了10个不同的文本分类任务,它们都来自于现有的数据集,如情感分析、句子关系判断以及文本蕴含关系判断等。这些任务的评估标准包括准确率、F1分数等,最后会综合这些指标,计算出模型在所有任务上的整体性能。

  随着NLP领域的迅速进展,很多模型在GLUE任务上已经达到了与人类相当的表现。因此,为了提供更具挑战性的任务,GLUE的后续版本SuperGLUE应运而生。SuperGLUE加入了一系列更为复杂的文本理解任务。

  在实际应用中,GLUE已经被证明是NLP领域的一个重要标杆。很多前沿的模型,例如BERT、RoBERTa和XLNet,都选择在GLUE上进行评估。这不仅帮助研究者们更深入地认识到这些模型的优势和不足,而且还进一步推动了NLP技术的发展。

  值得一提的是,GLUE包含了众多公开的数据集,例如MNLI、QQP、QNLI、SST-2、CoLA、STS-B、MRPC和RTE等,这些数据集覆盖了从文本分类到文本匹配的多种任务。为了保证评估的公正性和统一性,GLUE还提供了一个在线评估平台。研究者们可以直接在这个平台上提交他们的模型,进行评估,并与其他模型进行比较。

  发展至今,GLUE已经成为NLP领域内一个不可或缺的工具,为研究者们提供了一个评估和对比各种模型在文本理解任务上性能的平台,为推动NLP领域的发展做出了巨大贡献。

  3.2. SuperGLUE

  SuperGLUE是一个更为先进的自然语言处理(NLP)基准测试平台,它的目标是评估各种模型在一系列更为复杂的文本理解任务上的表现。这个测试是在GLUE(General Language Understanding Evaluation)基准测试之后推出的,主要是为了应对NLP领域日益增长的挑战。因为随着技术的发展,许多模型在GLUE上的任务中已经达到了与人类相似的性能。为了继续推动技术的进步,研究者们设计了SuperGLUE。

  SuperGLUE中的任务都非常具有挑战性,它们要求模型不只是进行简单的模式匹配或关键词搜索,而是要能深入地理解语义并进行推理。例如,BoolQ任务要求模型回答一个问题,判断给定的段落是否能支持这个是/否的问题。而WSC任务则是一个代词消歧的任务,模型需要准确地判断代词在句子中的指代对象。ReCoRD是一个阅读理解任务,但它要求模型使用常识进行推理。WiC要求模型判断一个词在两个不同的句子中是否有相同的意思,而COPA任务则是给出一个前提,模型要从两个选择中选出一个最有可能的原因或结果。当然,SuperGLUE中还有许多其他的任务。

  评估模型的性能时,研究者们使用了多种指标,比如准确率和F1分数等。这些得分最后会被综合起来,形成一个总分,以此来评估模型在所有任务上的整体表现。

  SuperGLUE的推出不仅为研究者提供了一个更高的评估标准,同时也鼓励他们开发出更加先进和强大的模型。而这些模型除了在基准测试中有应用外,在实际的应用场景中也非常有价值。例如,代词消歧技术可以应用在机器翻译中,而BoolQ等问答任务则可以用于实际的问答系统。

  下面给出SuperGLUE几个任务示例:

  1. BoolQ (Boolean Questions)

  描述:这是一个二分类问题,要求模型回答一个给定段落能否支持的是/否问题。

  示例

  段落:“Wolverines are solitary animals.”

  问题:“Are wolverines social animals?”

  答案:“No”

  2. WSC (Winograd Schema Challenge)

  描述:这是一个代词消歧的任务,模型需要正确地解决代词的参考问题。

  示例

  句子:“The trophy couldn’t fit in the suitcase because it was too large.”

  问题:“What was too large?”

  答案:“The trophy”

  3. ReCoRD (Reading Comprehension with Commonsense Reasoning Dataset)

  描述:这是一个阅读理解任务,但它需要常识推理来回答问题。

  示例

  段落:“Jenny went to the bank to withdraw money. She then went shopping.”

  问题:“Where did Jenny get the money from?”

  答案:“bank”

  4. WiC (Words in Context)

  描述:给定两个句子和一个在这两个句子中都出现的词,模型需要判断该词在这两个句子中的意思是否相同。

  示例

  句子1:“He will race the car.”

  句子2:“He watched the race.”

  :“race”

  答案:“No” (在第一个句子中表示动作,在第二个句子中表示名词活动)

  5. COPA (Choice of Plausible Alternatives)

  描述:给定一个前提和两个选择,模型需要选择最有可能的原因或结果。

  示例

  前提:“The man broke his leg.”

  选择1:“He tripped on a toy.”

  选择2:“He ate a sandwich.”

  答案:“He tripped on a toy.”

  这些任务的设计明确地使得简单的模式匹配或基于关键词的方法难以成功,要求模型必须具备深入的语义理解和推理能力。与GLUE中的任务相比,SuperGLUE的任务更具挑战性,更能考验模型的真实语言理解能力。

  总之,SuperGLUE不仅是一个评估模型性能的基准测试,更是一个驱动NLP领域技术进步的重要工具,它为模型在各种文本理解任务上的研究和发展提供了强大的支持。

  3.3. GLUE 与 SuperGLUE 的差异

  GLUE和SuperGLUE都是用于评估自然语言处理(NLP)模型在多种文本理解任务上性能的基准测试。尽管它们有很多相似之处,但也存在一些关键的区别。以下是GLUE和SuperGLUE之间的主要差异:

  表格 1 GLUE和SuperGLUE的差异

  总的来说,虽然GLUE和SuperGLUE都旨在为NLP模型提供评估平台,但SuperGLUE提供了更复杂、更具挑战性的任务,旨在推动NLP领域向前发展。

  3.4. MRPC简介

  在研究如何自动识别和生成句子释义时,一个明显的问题是缺乏大规模、公开的句子释义标注数据集。为了填补这一空白,“Microsoft Research Paraphrase Corpus”(简称MRPC)应运而生。这个数据集收录了5801组句子对,每一组都经过了人工判断,以确认它们是否具有相似的语义,或者说,是否可以视为释义关系。为了构建这个语料库,研究团队采用了启发式的方法,并结合了基于SVM的分类器,从大量的主题分类新闻数据中筛选出可能的句子释义。例如,当两则新闻报道都涉及到“北京举办奥运会”的事件,其中的句子可能就有很高的释义相似性。经过筛选,这些句子对提交给了人工审核,结果显示其中约67%的句子对在语义上是相似的。

  MRPC作为一个数据集,为研究句子间的语义等价性提供了一个参考平台。首先,在背景层面,释义识别在自然语言处理领域起到了核心作用。它的任务是判断两个句子在语义上是否具有相似性或等价性。例如,“他去了超市买东西”和“他到超市购买物品”在语义上是相似的。为了支持此类研究,Microsoft Research推出了这个Paraphrase Corpus。在内容上,MRPC包含5801组句子对,并进行了细致的人工标注。这些数据的来源是多种新闻报道,并利用特定技术从中筛选出可能的句子释义。但在构建的过程中,也出现了一些挑战,尤其是在为人工审核者制定评估标准时。总而言之,MRPC为研究者们提供了一个有价值的资源,成为了评估和比较不同释义识别技术的参考平台。

  4. 加载数据集

  多数的开源大模型网站不仅包含模型,还有多种语言的多个数据集。我们这里只关注作为GLUE benchmark的10个数据集之一MRPC数据集,看看如何把它作为我们大模型微调的数据集。

  Hugging Face Datasets库提供了一个非常简单的命令来下载和缓存Hub上的数据集。我们可以这样下载MRPC数据集:

  from datasets import load_dataset

  raw_datasets = load_dataset("glue", "mrpc")

  raw_datasets

  输出结果为:

  DatasetDict({

  train: Dataset({

  features: ['sentence1', 'sentence2', 'label', 'idx'],

  num_rows: 3668

  })

  validation: Dataset({

  features: ['sentence1', 'sentence2', 'label', 'idx'],

  num_rows: 408

  })

  test: Dataset({

  features: ['sentence1', 'sentence2', 'label', 'idx'],

  num_rows: 1725

  })

  })

  如你所见,我们得到一个DatasetDict对象,其中包含训练集、验证集和测试集。每个集合都包含几个列(sentence1、sentence2、label和idx)和可变数量的行,这些行是每个集合中的元素数量(因此,训练集中有3668对句子,验证集中有408对,测试集中有1725对)。

  此命令下载并缓存数据集,默认位置为~/.cache/huggingface/datasets。回忆前面的文章,我们可以通过设置HF_HOME环境变量来自定义缓存文件夹。

VIP专享文章,请登录或扫描以下二维码查看

“码”上成为VIP会员
没有多余的门路、套路
只有简单的“值来值往”一路!

深度分析、政策解读、研究报告一应俱全
极致性价比,全年精彩内容不容错过!
更多福利,尽在VIP专享


分享到:
版权声明:凡注明来源“流媒体网”的文章,版权均属流媒体网所有,转载需注明出处。非本站出处的文章为转载,观点供业内参考,不代表本站观点。文中图片均来源于网络收集整理,仅供学习交流,版权归原作者所有。如涉及侵权,请及时联系我们删除!