引言
RoBERTa(“鲁棒优化 BERT 方法”的缩写)是 BERT(Transformers 的双向编码器表示)模型的高级版本,由 Facebook AI 的研究人员创建。与 BERT 类似,RoBERTa 是一种基于 Transformers 的语言模型,它使用自注意力来分析输入序列并在句子中生成上下文化的单词表示。
在本文中,我们将更详细地了解 RoBERTa。
RoBERTa 与 BERT
RoBERTa 与 BERT 之间的一个主要区别是,RoBERTa 是在更大的数据集上进行训练的,并且采用了更有效的训练程序。具体来说,RoBERTa 是在 160GB 的文本上进行训练的,是 BERT 所用数据集的 10 倍以上。此外,RoBERTa 在训练过程中采用了动态掩蔽技术,这增强了模型学习更稳健、更通用的单词表示的能力。
RoBERTa 在各种自然语言处理任务(例如语言翻译、文本分类和问答)上表现出比 BERT 和其他领先模型更优异的性能。它还成为许多成功的 NLP 模型的基础模型,并在研究和工业应用中广受欢迎。
总而言之,RoBERTa 是一个强大而有效的语言模型,为 NLP 做出了重大贡献,推动了广泛应用的进步。
RoBERTa 模型架构
RoBERTa 模型与 BERT 模型具有相同的架构。它是 BERT 的重新实现,修改了关键超参数并对嵌入进行了微调。
BERT 的一般预训练和微调流程如下图 1 所示。在 BERT 中,除输出层外,预训练和微调使用相同的架构。预训练的模型参数用于初始化各种下游任务的模型。在微调过程中,所有参数都会进行调整。
相比之下,RoBERTa 不使用下一句预训练目标。相反,它使用更大的 mini-batch 和更高的学习率进行训练。RoBERTa 采用不同的预训练方案,用字节级 BPE 标记器(类似于 GPT-2)替换字符级 BPE 词汇表。此外,RoBERTa 不需要定义哪个标记属于哪个段,因为它缺少 token_type_ids。可以使用分离标记 tokenizer.sep_token(或)轻松划分段。
此外,与最初用于训练 BERT 的 16GB 数据集不同,RoBERTa 的训练数据集是超过 160GB 的未压缩文本。该数据集包含 BERT 使用的 16GB 英文维基百科和书籍语料库,以及来自 WebText 语料库(38GB)、CommonCrawl 新闻数据集(63 万篇文章,76GB)和 Common Crawl 故事数据集(31GB)的额外数据。RoBERTa 已使用这个庞大的数据集和 1024 块 V100 Tesla 芯片进行预训练。 GPU运行了一天。
RoBERTa模型的优势
RoBERTa 的架构与 BERT 类似,但为了提高性能,作者对架构和训练过程进行了一些简单的设计更改。这些变化包括:
- 删除下一句预测 (NSP) 目标:在 BERT 中,使用辅助 NSP 损失训练模型来预测文档的两个片段是来自同一文档还是不同文档。作者对带有和不带有 NSP 损失的模型版本进行了实验,发现删除 NSP 损失可以匹配或略微提高下游任务的性能。
- 使用更大批次大小和更长序列进行训练:BERT 最初训练了 1 万步,批次大小为 256 个序列。RoBERTa 训练了 125 步,每步 2,000 个序列,以及 31,000 步,每批次 8,000 个序列。更大的批次可以提高掩码语言建模目标的困惑度和最终任务的准确性。它们也更容易使用分布式并行训练进行并行化。
- 动态更改掩码模式:在 BERT 中,掩码在数据预处理期间进行一次,从而产生单个静态掩码。为了避免这种情况,训练数据被复制并在 10 个时期内使用不同的策略掩码 40 次,从而产生 4 个具有相同掩码的时期。此策略与动态掩码进行了比较,每次将数据传递到模型时都会生成不同的掩码。
RoBERTa 的性能
RoBERTa 模型在 MNLI、QNLI、RTE、STS-B 和 RACE 任务上均取得了当时最佳的性能,并在 GLUE 基准上表现出显著的性能提升。RoBERTa 以 88.5 分的成绩荣登 GLUE 排行榜榜首。
如何使用 RoBERTa
Huggingface 的 Transformers 库提供了各种不同大小、适用于各种任务的预训练 RoBERTa 模型。在本文中,我们将重点介绍如何加载 RoBERTa 模型并执行情绪分类。
我们将使用针对特定任务的数据集进行微调的 RoBERTa 模型,特别是来自 Huggingface 中心的预训练模型“cardiffnlp/twitter-roberta-base-emotion”。
首先,我们需要安装并导入所有必要的包,并使用“RobertaForSequenceClassification”(包含分类头)加载模型,并使用“RobertaTokenizer”加载标记器。
!pip install -q transformers#导入必要的包
进口火炬
从 transformers 导入 RobertaTokenizer、RobertaForSequenceClassification#加载模型和 tokenizer
model_name =“cardiffnlp/twitter-roberta-base-emotion”
tokenizer = RobertaTokenizer.from_pretrained(模型名称)
model = RobertaForSequenceClassification.from_pretrained(model_name)#对输入进行标记
输入 = tokenizer(“我爱我的猫”,return_tensors =“pt”)#检索 logits 并使用它们来预测潜在的情绪
使用 torch.no_grad():
logits = 模型(**输入).logitspredicted_class_id = logits.argmax().item()model.config.id2label[predicted_class_id]
>> 输出:乐观
输出结果为“乐观”,根据我们使用的分类模型的预定义标签,这是正确的。我们可以使用另一个预训练模型或微调模型来获得具有更合适标签的结果。
RoBERTa评估结果
使用动态掩蔽进行训练
在最初的 BERT 实现中,掩蔽发生在数据预处理期间,从而产生单个静态掩蔽。此方法与动态掩蔽进行了比较,在动态掩蔽中,每次将序列输入模型时都会生成一个新的掩蔽模式。与静态掩蔽相比,动态掩蔽表现出相当或略胜一筹的性能。
根据上述发现,我们采用动态掩蔽方法对 RoBERTa 进行预训练。
完整句子,无 NSP 丢失
对比不使用 NSP 损失的训练和使用单个文档中的文本块(doc-sentences)的训练,结果显示此配置优于最初发布的 BERTBASE 结果。此外,消除 NSP 损失可匹配或略微提高下游任务的性能。
虽然观察到将序列限制为来自单个文档(DOC-SENTENCES)比合并来自多个文档(FULL-SENTENCES)的序列产生更好的性能,但 RoBERTa 选择使用 FULL-SENTENCES 以便于比较,因为 DOC-SENTENCES 格式会导致批次大小变化。
大批量训练
使用大批量训练可加快优化速度并提高任务准确性。此外,分布式数据并行训练有助于大批量并行化,从而进一步提高效率。经过适当调整后,大批量可以提高模型在特定任务上的性能。
更大的字节级 BPE
字节对编码 (BPE) 结合了字符级和单词级表示的各个方面,能够有效处理自然语言语料库中常见的大量词汇。RoBERTa 与 BERT 的不同之处在于,它采用了由 50K 个子词单元组成的更大的字节级 BPE 词汇表,而无需额外的预处理或输入标记化。
了解 RoBERTa 的局限性
虽然 RoBERTa 是一个功能强大的模型,但它也存在一些局限性。以下是一些局限性:
- 计算资源:训练和微调 RoBERTa 需要大量的计算资源,包括强大的 GPUs 和大量内存。这使得资源有限的个人或组织难以有效地利用 RoBERTa。
- 领域特异性:未经进一步微调的预训练语言模型(如 RoBERTa)可能无法在特定领域的任务或数据集上发挥最佳性能。它们可能需要对特定领域的数据进行额外训练才能达到所需的性能水平。
- 数据效率:RoBERTa 和类似模型需要大量数据进行预训练,但并非所有语言或领域都有这些数据。这种对大量数据的依赖可能会限制它们在数据稀缺或数据获取成本高昂的环境中的应用。
- 可解释性:RoBERTa 的黑箱特性使得解释该模型如何得出预测结果变得困难。了解模型的内部工作原理并诊断错误或偏差可能具有挑战性,尤其是在复杂的应用程序或敏感领域。
- 微调挑战:虽然针对特定任务对 RoBERTa 进行微调可以提高性能,但需要专业知识和实验来选择正确的超参数、数据增强技术和训练策略。这个过程可能非常耗时且耗费资源。
- 偏见与公平性:像 RoBERTa 这样的预训练语言模型可能会继承训练数据中存在的偏见,从而导致预测出现偏差或不公平。解决偏见并确保 AI 模型中的公平性仍然是一项重大挑战,需要仔细的数据管理和模型设计考虑。
- 分布外泛化:RoBERTa 可能难以泛化到分布外的数据或处理与其训练数据明显不同的场景。这种限制可能会影响 RoBERTa 在数据分布变化很常见的实际应用中的稳健性和可靠性。
为了克服这些限制,您可以选择更先进的型号,例如最近发布的Llama 3。或者,您也可以申请 novita.ai LLM API密钥 以低成本无缝连接到您现有的系统:


结语
RoBERTa 以 BERT 为基础,利用更大的训练数据集和改进的技术(如动态掩码和删除下一句预测目标),显著推进了自然语言处理。这些增强功能以及字节级 BPE 标记器和更大批量大小的使用,使 RoBERTa 能够在各种 NLP 任务上实现卓越性能。虽然它需要大量的计算资源和微调专业知识,但 RoBERTa 对该领域的影响是深远的,它树立了新的标杆,并成为研究和工业应用的多功能模型。
novita.ai一站式平台,无限创意,让您访问 100 多个 API。从图像生成和语言处理到音频增强和视频处理,价格低廉,按需付费,让您摆脱 GPU 打造您自己的产品时,无需担心维护问题。免费试用。
推荐阅读
探索 Novita 的更多内容
订阅即可将最新帖子发送到您的电子邮箱。





