CamemBERT:一款出色的法语语言模型

摘要

预训练语言模型在自然语言处理中已无处不在。尽管这些模型取得了成功,但大多数可用模型要么是在英语数据上训练的,要么是在多种语言数据拼接的基础上训练的。这使得这些模型在除英语以外的所有语言中的实际应用非常有限。本文探讨了为其他语言训练基于Transformer的单语语言模型的可行性,并以法语为例,评估了我们的语言模型在词性标注、依存句法分析、命名实体识别和自然语言推理任务上的表现。我们表明,使用网络爬取的数据优于使用维基百科数据。更令人惊讶的是,我们发现,相对较小的网络爬取数据集(4GB)能够带来与使用更大数据集(130+GB)相当的结果。我们表现最好的模型CamemBERT在所有四个下游任务中达到或改进了现有技术水平。

1 引言

预训练词表示在自然语言处理(NLP)中有着悠久的历史,从非上下文相关的表示(Brown等,1992;Ando和Zhang,2005;Mikolov等,2013;Pennington等,2014)到上下文相关的词嵌入(Peters等,2018;Akbik等,2018)。词表示通常通过在大规模文本数据上训练语言模型架构获得,然后作为输入提供给更复杂的任务特定架构。最近,这些专门的架构已被大规模预训练语言模型完全取代,这些模型针对每个应用进行微调。这一转变使得在广泛任务中的性能得到了大幅提升(Devlin等,2019;Radford等,2019;Liu等,2019;Raffel等,2019)。

这些迁移学习方法相较于传统的任务特定方法具有明显的优势。特别是,它们可以以无监督的方式进行训练,从而利用大量原始文本中的信息。然而,它们也带来了实施上的挑战,即预训练所需的数据量和计算资源,可能需要数百GB的文本和数百个GPU(Yang等,2019;Liu等,2019)。这限制了这些最先进模型在单语环境中的可用性,尤其是英语以外的语言。这尤其不便,因为它阻碍了它们在NLP系统中的实际应用,也阻止了我们研究它们的语言建模能力,例如在形态丰富的语言中的表现。

尽管多语言模型取得了显著成果,但它们通常更大,并且其结果(如我们将在法语中观察到的)在高资源语言上可能落后于单语模型。为了复现和验证迄今为止仅在英语中获得的结果,我们利用新发布的多语言语料库OSCAR(Ortiz Suárez等,2019)训练了一个法语单语语言模型,称为CamemBERT。我们还训练了不同版本的CamemBERT,使用不同规模和风格多样性的较小语料库,以评估这些参数对下游任务性能的影响。CamemBERT使用了RoBERTa架构(Liu等,2019),这是高性能且广泛使用的BERT架构(Devlin等,2019)的改进版本。

我们在法语的四个不同下游任务上评估了我们的模型:词性标注(POS)、依存句法分析、命名实体识别(NER)和自然语言推理(NLI)。CamemBERT在所有四个任务中相比之前的单语和多语言方法(包括mBERT、XLM和XLM-R)改进了现有技术水平,这证实了大规模预训练语言模型在法语中的有效性。

我们的贡献可以总结如下:
• 首次发布了基于RoBERTa架构的法语单语模型,使用了最近引入的大规模开源语料库OSCAR,并且是BERT原作者之外首次为英语以外的语言发布如此大规模的模型。该模型在MIT开源许可证下公开发布。
• 我们在四个下游任务上取得了最先进的结果:词性标注、依存句法分析、命名实体识别和自然语言推理,证实了基于BERT的语言模型在法语中的有效性。
• 我们证明了小型且多样化的训练集可以达到与大规模语料库相似的性能,通过分析预训练语料库在规模和领域方面的重要性。

2 相关工作

2.1 上下文语言模型

从非上下文到上下文词嵌入
最早的神经词向量表示是非上下文化的词嵌入,最著名的是word2vec(Mikolov等,2013)、GloVe(Pennington等,2014)和fastText(Mikolov等,2018),它们被设计为任务特定神经架构的输入。上下文词表示(如ELMo(Peters等,2018)和flair(Akbik等,2018))通过考虑上下文提高了词嵌入的表示能力。它们通过处理词语的多义性,在许多任务上提高了模型性能。这为更大规模的上下文模型铺平了道路,这些模型在大多数任务中完全取代了下游架构。这些方法以语言建模为目标进行训练,范围从基于LSTM的架构(如Dai和Le,2015)到成功的基于Transformer的架构,如GPT2(Radford等,2019)、BERT(Devlin等,2019)、RoBERTa(Liu等,2019)以及最近的ALBERT(Lan等,2019)和T5(Raffel等,2019)。

非英语上下文模型
随着大规模预训练语言模型的成功,它们被扩展到多语言环境中,如多语言BERT(以下简称mBERT)(Devlin等,2018),这是一个针对104种不同语言的单一多语言模型,基于维基百科数据训练;以及后来的XLM(Lample和Conneau,2019),它显著改进了无监督机器翻译。最近的XLM-R(Conneau等,2019)通过在2.5TB数据上训练扩展了XLM,并在多语言基准测试中超越了之前的分数。研究表明,多语言模型可以通过利用其他语言的高质量数据,在特定下游任务上获得与单语模型竞争的结果。
一些非英语单语模型已经发布:日文、葡萄牙文、德文和巴斯克文的ELMo模型,以及简体中文、繁体中文(Devlin等,2018)和德文(Chan等,2019)的BERT模型。
然而,据我们所知,尚未有针对英语以外的语言训练与最新英语模型(如RoBERTa在超过100GB数据上训练)规模相当的模型的特别努力。

BERT和RoBERTa
我们的方法基于RoBERTa(Liu等,2019),而RoBERTa本身基于BERT(Devlin等,2019)。BERT是一个多层双向Transformer编码器,通过掩码语言建模(MLM)目标进行训练,灵感来自Cloze任务(Taylor,1953)。它有两种规模:BERTBASE架构和BERTLARGE架构。BERTBASE架构规模较小,因此更快且更易于使用,而BERTLARGE在下游任务中实现了更高的性能。RoBERTa通过识别关键设计选择改进了BERT的原始实现,使用动态掩码、移除下一句预测任务、以更大的批次训练、在更多数据上训练以及训练更长时间。

3 下游评估任务

在本节中,我们介绍了用于评估CamemBERT的四个下游任务,即:词性标注(POS)、依存句法分析、命名实体识别(NER)和自然语言推理(NLI)。我们还介绍了用于比较的基线方法。

任务 词性标注是一项低级别的句法任务,旨在为每个词分配其对应的语法类别。依存句法分析则是预测带标签的句法树,以捕捉词之间的句法关系。
对于这两项任务,我们使用通用依存关系(UD)框架及其对应的UD词性标注集(Petrov等,2012)和UD树库集合(Nivre等,2018)进行实验,这些数据被用于CoNLL 2018共享任务(Seker等,2018)。我们在UD v2.2中的四个免费法语UD树库上进行评估:GSD(McDonald等,2013)、Sequoia(Candito和Seddah,2012;Candito等,2014)、Spoken(Lacheret等,2014;Bawden等,2014)和ParTUT(Sanguinetti和Bosco,2015)。表1简要概述了每个树库的规模和内容。

在这里插入图片描述

我们还在命名实体识别(NER)任务上评估了我们的模型,NER是一项序列标注任务,旨在预测哪些词指代现实世界中的对象,如人物、地点、物品和组织。我们使用了2008年版本的法国树库(FTB)(Abeillé等,2003),该版本由Candito和Crabbé(2009)引入,并由Sagot等(2012)添加了NER标注。FTB包含超过1.1万个实体提及,分布在7种不同的实体类型中。表1中还简要概述了FTB的内容。

最后,我们使用XNLI数据集(Conneau等,2018)的法语部分在自然语言推理(NLI)任务上评估了我们的模型。NLI任务旨在预测一个假设句子是否与前提句子存在蕴含、中立或矛盾的关系。XNLI数据集是Multi-Genre NLI(MultiNLI)语料库(Williams等,2018)的扩展,通过将验证集和测试集手动翻译成15种语言。英语训练集则通过机器翻译为其他语言。该数据集包含每种语言的12.2万条训练样本、2490条开发样本和5010条测试样本。通常,NLI任务的性能通过准确率进行评估。

基线方法
在依存句法分析和词性标注任务中,我们将我们的模型与以下方法进行比较:

  • mBERT:BERT的多语言版本(见第2.1节)。我们在与CamemBERT相同的条件下,对每个树库微调mBERT,并添加额外的层用于词性标注和依存句法分析。
  • XLMMLM-TLM:来自Lample和Conneau(2019)的多语言预训练语言模型,在NLI任务上表现优于mBERT。我们使用Hugging Face的transformer库(Wolf等,2019)中的版本,并在与我们的模型相同的条件下进行微调。
  • UDify(Kondratyuk,2019):基于mBERT的多任务多语言模型,UDify同时在124个不同的UD树库上训练,创建了一个适用于75种语言的单一词性标注和依存句法分析模型。我们报告了Kondratyuk(2019)论文中的分数。
  • UDPipe Future(Straka,2018):基于LSTM的模型,在CoNLL 2018共享任务(Seker等,2018)中在依存句法分析中排名第3,在词性标注中排名第6。我们报告了Kondratyuk(2019)论文中的分数。
  • UDPipe Future + mBERT + Flair(Straka等,2019):原始的UDPipe Future实现,使用mBERT和Flair作为基于特征的上下文词嵌入。我们报告了Straka等(2019)论文中的分数。

在法语中,由于标注语料库的有限性,NER任务的研究较少。因此,我们将我们的模型与Dupont(2017)设定的最新基线进行比较,他在FTB上训练了CRF(Lafferty等,2001)和BiLSTM-CRF(Lample等,2016)架构,并使用启发式方法和预训练词嵌入进行了增强。此外,与词性标注和依存句法分析一样,我们还比较了针对NER任务微调的mBERT版本。

对于XNLI任务,我们提供了Wu和Dredze(2019)报告的法语mBERT分数。我们还报告了XLMMLM-TLM(如上所述)的分数,这是Lample和Conneau(2019)的最佳模型。此外,我们还报告了XLM-R(Conneau等,2019)的结果。

4 CamemBERT:法语语言模型
在本节中,我们描述了用于CamemBERT的预训练数据、架构、训练目标和优化设置。

4.1 训练数据

预训练语言模型受益于在大规模数据集上训练(Devlin等,2018;Liu等,2019;Raffel等,2019)。因此,我们使用了OSCAR语料库(Ortiz Suárez等,2019)的法语部分,这是Common Crawl的预过滤和预分类版本。
OSCAR是从Common Crawl快照中提取的单语语料库集合。它采用了与Grave等(2018)相同的方法,使用基于fastText线性分类器(Grave等,2017;Joulin等,2016)的语言分类模型,该分类器在维基百科、Tatoeba和SETimes上预训练,支持176种语言。未进行其他过滤。我们使用了未打乱的法语数据版本,其原始文本大小为138GB,经过子词分词后包含327亿个词元。

4.2 预处理

我们使用SentencePiece(Kudo和Richardson,2018)将输入文本数据分割为子词单元。SentencePiece是字节对编码(BPE)(Sennrich等,2016)和WordPiece(Kudo,2018)的扩展,不需要预分词(在词或词元级别),从而消除了对语言特定分词器的需求。我们使用32k个子词词元的词汇表。这些子词是从预训练数据集中随机采样的107个句子中学习的。为了简化,我们没有使用子词正则化(即从多个可能的分割中采样)。

4.3 语言建模

Transformer
与RoBERTa和BERT类似,CamemBERT是一个多层双向Transformer(Vaswani等,2017)。鉴于Transformer的广泛使用,我们在此不详细描述,读者可参考(Vaswani等,2017)。CamemBERT使用了BERTBASE(12层,768隐藏维度,12个注意力头,1.1亿参数)和BERTLARGE(24层,1024隐藏维度,12个注意力头,3.4亿参数)的原始架构。
CamemBERT与RoBERTa非常相似,主要区别在于使用了全词掩码(whole-word masking)以及SentencePiece分词(Kudo和Richardson,2018)而非WordPiece(Schuster和Nakajima,2012)。

预训练目标
我们在掩码语言建模(MLM)任务上训练模型。给定由N个词元组成的输入文本序列x1, …, xN,我们选择15%的词元进行可能的替换。在这些被选中的词元中,80%被替换为特殊的标记,10%保持不变,10%被替换为随机词元。然后,模型通过交叉熵损失预测初始被掩码的词元。
遵循RoBERTa的方法,我们动态掩码词元,而不是在预处理期间为整个数据集静态固定掩码。这提高了多样性,并使模型在多次训练时更具鲁棒性。
由于我们使用SentencePiece对语料库进行分词,模型的输入词元是完整词和子词的混合。BERT的升级版本和Joshi等(2019)表明,掩码整个词而不是单个子词可以提高性能。全词掩码(WWM)使训练任务更加困难,因为模型必须预测整个词,而不是在给定其余部分的情况下仅预测词的一部分。我们通过在初始未分词的文本中使用空格作为词分隔符来训练模型。

WWM的实现方式是首先随机采样序列中15%的词,然后将这15%中每个词的所有子词词元作为候选替换。这相当于接近原始15%的选中词元比例。这些词元随后被替换为标记(80%)、保持不变(10%)或被替换为随机词元。
后续研究表明,BERT最初使用的下一句预测(NSP)任务并未提高下游任务性能(Lample和Conneau,2019;Liu等,2019),因此我们也将其移除。

优化
遵循(Liu等,2019),我们使用Adam优化器(Kingma和Ba,2014)( β 1 = 0.9 , β 2 = 0.98 \beta_{1}=0.9,\beta_{2}=0.98 β1=0.9,β2=0.98)对模型进行优化,训练100k步,批量大小为8192个序列,每个序列最多包含512个词元。我们强制每个序列仅包含完整段落(对应于预训练数据集中的行)。

预训练
我们使用fairseq库(Ott等,2019)中的RoBERTa实现。我们的学习率在前10k步预热至峰值0.0007(由于批量较大,而非原始的0.0001),然后通过多项式衰减降至零。除非另有说明,我们的模型使用BASE架构,并在256个Nvidia V100 GPU(每个32GB)上预训练100k次反向传播步骤,耗时一天。出于实际考虑,我们没有训练更长时间,尽管性能似乎仍在提升。

4.4 使用CamemBERT进行下游任务

我们以两种方式使用预训练的CamemBERT。
第一种称为微调(fine-tuning),我们以端到端的方式在特定任务上微调模型。
第二种称为基于特征的嵌入(feature-based embeddings)或简称为嵌入(embeddings),我们从CamemBERT中提取冻结的上下文嵌入向量。这两种互补的方法揭示了CamemBERT捕获的预训练隐藏表示的质量。

微调
对于每个任务,我们在CamemBERT架构的顶部附加相关的预测层。遵循BERT的工作(Devlin等,2019),对于序列标注和序列标记任务,我们附加一个线性层,分别以特殊标记的最后隐藏表示和每个词的第一个子词词元的最后隐藏表示作为输入。对于依存句法分析,我们插入一个双仿射图预测头,灵感来自Dozat和Manning(2017)。我们建议读者参考该文章以获取有关此模块的更多细节。
我们在XNLI上微调时,添加一个分类头,由一个带非线性的隐藏层和一个线性投影层组成,并对两者进行输入dropout。
我们为每个任务和每个数据集独立微调CamemBERT。我们使用Adam优化器(Kingma和Ba,2014)以固定学习率优化模型。我们对学习率和批量大小的组合进行网格搜索。我们从前30个epoch中选择在验证集上表现最佳的模型。对于NLI,我们使用RoBERTa作者在MNLI任务上提供的默认超参数。尽管这可能进一步提高了性能,但我们没有应用任何正则化技术(如权重衰减、学习率预热或判别性微调),除了NLI。我们表明,以简单的方式微调CamemBERT可以在所有任务上取得最先进的结果,并在所有情况下优于现有的基于BERT的模型。
词性标注、依存句法分析和NER实验使用Hugging Face的Transformer库扩展以支持CamemBERT和依存句法分析(Wolf等,2019)。NLI实验使用fairseq库,遵循RoBERTa的实现。

嵌入
遵循Straková等(2019)和Straka等(2019)对mBERT和英语BERT的做法,我们在基于特征的嵌入设置中使用CamemBERT。为了获得给定词元的表示,我们首先计算Transformer最后四层中每个子词表示的平均值,然后对生成的子词向量进行平均。
我们在嵌入设置中评估CamemBERT的词性标注、依存句法分析和NER任务;使用Straka等(2019)和Straková等(2019)的开源实现。

5 CamemBERT的评估

在本节中,我们通过评估模型在四个任务上的表现来衡量其性能:词性标注(POS)、依存句法分析、命名实体识别(NER)和自然语言推理(NLI)。

词性标注和依存句法分析
对于词性标注和依存句法分析,我们在两种设置下将CamemBERT与其他模型进行比较:微调(fine-tuning)和基于特征的嵌入(feature-based embeddings)。结果如表2所示。

在这里插入图片描述

CamemBERT在所有树库和指标上均达到了最先进的分数。两种方法得分相近,微调版本的CamemBERT略占优势,这引发了对复杂任务特定架构(如UDPipe Future)需求的质疑。
尽管优化过程更简单且没有任务特定的架构,微调CamemBERT在所有树库上均优于UDify,有时优势显著(例如在Sequoia上LAS提高4.15%,在ParTUT上LAS提高5.37%)。CamemBERT在所有树库上的表现也优于其他多语言预训练模型(如mBERT和XLMMLM-TLM)。
CamemBERT总体上略优于之前的最先进任务特定架构UDPipe Future+mBERT+Flair,除了在Sequoia的词性标注和Spoken的词性标注上,CamemBERT分别落后0.03%和0.14%的UPOS分数。UDPipe Future+mBERT+Flair使用了Flair(Akbik等,2018)的上下文字符串嵌入,这些嵌入实际上是预训练的上下文字符级词嵌入,专门用于处理拼写错误以及前缀和后缀等子词结构。这种设计选择可能解释了CamemBERT在词性标注上的分数差异,尤其是在Spoken树库中,单词未大写,这可能对CamemBERT造成问题(因为其训练数据是大写的),但Flair在UDPipe Future+mBERT+Flair模型中可能能够正确处理。

命名实体识别
对于NER,我们同样在微调设置和作为任务特定架构LSTM+CRF的输入嵌入中评估CamemBERT。结果如表3所示。

在这里插入图片描述
在这里插入图片描述

在两种情况下,CamemBERT的F1分数均高于传统的基于CRF的架构(包括非神经网络和神经网络)以及微调的多语言BERT模型。将CamemBERT作为嵌入用于传统的LSTM+CRF架构时,得分略高于微调模型(89.08 vs. 89.55)。这表明,尽管CamemBERT可以在没有任何任务特定架构的情况下成功使用,但它仍然可以生成高质量的上下文嵌入,这在存在强大下游架构的场景中可能非常有用。

自然语言推理
在XNLI基准测试中,我们将CamemBERT与之前最先进的多语言模型在微调设置下进行比较。除了标准的BASE架构CamemBERT模型外,我们还训练了一个LARGE架构的模型,称为CamemBERTLARGE,以便与XLM-RLARGE进行公平比较。该模型使用第6节中描述的CCNet语料库训练了100k步。我们预计,更长时间的训练会带来更好的性能。
CamemBERT的准确率高于其BASE架构的同类模型,比mBERT高出5.6%,比XLMMLM-TLM高出2.3%,比XLM-RBASE高出2.4%。CamemBERT使用的参数数量仅为XLM-RBASE的一半(1.1亿 vs. 2.7亿)。
CamemBERTLARGE在XNLI基准测试中达到了85.7%的最先进准确率,而最近的XLM-RLARGE为85.2%。CamemBERT使用的参数比多语言模型少,主要是因为其词汇量较小(例如32k vs. XLM-R的250k)。有两个因素可能解释了CamemBERT优于XLM-R的原因。尽管XLM-R在2.5TB的数据上进行了训练,但其中只有57GB是法语数据,而我们使用了138GB的法语数据。此外,XLM-R还处理100种语言,作者表明,当将语言数量减少到7种时,他们的BASE架构可以在法语XNLI上达到82.5%的准确率。

CamemBERT结果总结
CamemBERT在考虑的4个下游任务中改进了现有技术水平,从而在法语上证实了基于Transformer模型的有效性。无论是将CamemBERT作为微调模型使用,还是将其作为上下文嵌入与任务特定架构结合使用,我们都取得了这些结果。这引发了对更复杂下游架构需求的质疑,类似于在英语中展示的结果(Devlin等,2019)。此外,这表明CamemBERT无需进一步调整即可生成高质量的表示。

6 语料库来源和规模的影响

在本节中,我们研究了预训练语料库的同质性和规模对下游任务性能的影响。为此,我们通过改变预训练数据集来训练不同版本的CamemBERT。在本实验中,我们将预训练步数固定为100k,并允许epoch数相应变化(数据集较小时epoch数更多)。所有模型均使用BASE架构。
为了研究是否需要同质的干净数据,还是更需要多样化且可能噪声较多的数据,我们除了使用OSCAR外,还使用了其他预训练数据来源:

  • 维基百科:在文体和风格上具有同质性。我们使用2019年法文维基百科的官方数据,并使用Giuseppe Attardi的WikiExtractor去除HTML标签和表格。
  • CCNet(Wenzek等,2019):从Common Crawl中提取的数据集,其过滤过程与OSCAR不同。它使用在维基百科上训练的语言模型来过滤低质量文本(如代码或表格)。由于这一过滤步骤将Common Crawl中的噪声数据偏向于更类似维基百科的文本,我们预计CCNet将作为未过滤的“噪声”OSCAR数据集和“干净”维基百科数据集之间的中间地带。由于不同的过滤过程,CCNet平均包含更长的文档,而OSCAR中的文档较短且通常噪声较多。

表6总结了这些不同语料库的统计数据。

为了比较这三种预训练数据来源,我们从OSCAR和CCNet中随机抽取4GB文本(以文档为单位),从而创建与法文维基百科规模相同的Common Crawl语料库样本。这些较小的4GB样本还为我们提供了一种研究预训练数据规模影响的方法。表5提供了不同版本CamemBERT的下游任务性能。上半部分报告了微调设置下的分数,下半部分报告了嵌入设置下的分数。
在这里插入图片描述
在这里插入图片描述

6.1 Common Crawl vs. 维基百科?

表5清楚地表明,在4GB版本的OSCAR和CCNet(Common Crawl)上训练的模型表现始终优于在法文维基百科上训练的模型。无论是在微调设置还是嵌入设置中,这一结论都成立。不出所料,在涉及与维基百科文体和风格差异较大的任务(如Spoken树库上的标注和解析)中,差距更大。在XNLI任务上,性能差距也非常大,这可能是由于基于Common Crawl的语料库在文体和主题上的多样性更大。XNLI基于multiNLI,涵盖了多种口语和书面文本的文体。
在4GB版本的CCNet和OSCAR上训练的模型在下游任务中的表现非常相似。

6.2 需要多少数据?

我们实验的一个意外结果是,仅在4GB OSCAR样本上训练的模型与在整个138GB OSCAR上训练的标准CamemBERT表现相似。唯一存在较大性能差距的任务是NER,其中“138GB”模型的F1分数高出0.9分。这可能是由于较大语料库中存在更多的命名实体,这对该任务有益。相反,其他任务似乎并未从额外数据中获益。
换句话说,当在OSCAR和CCNet等文体和风格多样化的语料库上训练时,4GB的未压缩文本足以作为预训练语料库,在使用BASE架构时达到最先进的结果,优于在60GB文本上预训练的mBERT。这引发了对训练单语Transformer语言模型(如BERT或RoBERTa)时是否需要使用OSCAR或CCNet等大型语料库的质疑。
这不仅意味着训练最先进语言模型的计算(以及环境)成本可以降低,还意味着可以为所有能够创建4GB或更大Common Crawl语料库的语言训练类似CamemBERT的模型。OSCAR支持166种语言,并为38种语言提供了这样的语料库。此外,稍小的语料库(例如低至1GB)也可能足以训练高性能的语言模型。
我们的结果是在BASE架构上获得的。需要进一步研究以验证我们的发现在更大架构和其他更复杂的自然语言理解任务中的有效性。然而,即使使用BASE架构和4GB训练数据,验证损失在100k步(400个epoch)后仍在下降。这表明我们仍然对4GB预训练数据集欠拟合,更长时间的训练可能会提高下游性能。

7 讨论

自本工作预发表以来(Martin等,2019),许多单语语言模型相继出现,例如(Le等,2019;Virtanen等,2019;Delobelle等,2020),涵盖了多达30种语言(Nozza等,2020)。在几乎所有测试配置中,这些模型的表现均优于多语言语言模型(如mBERT)(Pires等,2019)。有趣的是,Le等(2019)表明,将他们的FlauBert(一种基于RoBERTa的法语语言模型,训练数据较少但经过更多编辑)与CamemBERT结合使用,可以提高解析模型的性能,并在法语成分句法分析中建立了新的最先进水平,从而突出了两种模型的互补性。
与BERT首次发布时的英语情况类似,法语类似规模语言模型的可用性促进了有趣的应用,例如法律文本的大规模匿名化,其中基于CamemBERT的模型在该任务上建立了新的最先进水平(Benesty,2019),或最近发布的法语Squad数据集上的首次大规模问答实验(d’Hoffschmidt等,2020),作者使用CamemBERTLARGE达到了人类水平的表现。作为第一个使用开源Common Crawl Oscar语料库的预训练语言模型,CamemBERT对社区产生了重要影响,为后续许多单语语言模型的研究铺平了道路。此外,其所有训练数据的可用性促进了可重复性,并为更好地理解此类模型迈出了一步。本着这种精神,我们通过我们的网站以及huggingface和fairseq API提供了实验中使用的模型,包括基础的CamemBERT模型。

8 结论

在本工作中,我们探讨了为英语以外的语言训练基于Transformer的语言模型的可行性。以法语为例,我们训练了CamemBERT,这是一种基于RoBERTa的语言模型。我们在四个下游任务(词性标注、依存句法分析、命名实体识别和自然语言推理)上评估了CamemBERT,在这些任务中,我们的最佳模型达到或改进了所有任务的最先进水平,即使与强大的多语言模型(如mBERT、XLM和XLM-R)相比也是如此,同时参数数量更少。
我们的实验表明,使用具有高多样性的网络爬取数据优于基于维基百科的数据。此外,我们展示了我们的模型在仅使用4GB预训练数据的情况下可以达到惊人的高性能,从而质疑了大规模预训练语料库的必要性。这表明,只要有几千兆字节的数据可用,就可以为资源远少于英语的语言训练最先进的基于Transformer的语言模型。这为资源匮乏语言的单语上下文预训练语言模型的兴起铺平了道路。关于在小规模领域特定内容上进行预训练是否比微调等迁移学习技术更好的问题仍然开放,我们将其留给未来的工作。
CamemBERT基于纯开源语料库进行预训练,并通过MIT许可证免费提供,可通过流行的NLP库(fairseq和huggingface)以及我们的网站camembert-model.fr获取。

#附录
在附录中,我们分析了CamemBERT的不同设计选择(表8),包括全词掩码的使用、训练数据集、模型规模以及训练步数,并结合语料库来源和规模的影响分析(第6节)。在所有消融实验中,所有分数均来自至少4次运行的平均值。对于词性标注和依存句法分析,我们在4个树库上取平均分数。我们还在表7中报告了不同模型的所有平均测试分数。

A 全词掩码的影响

在表8中,我们比较了使用传统子词掩码和全词掩码训练的模型。全词掩码对自然语言推理(NLI)的下游性能有积极影响(尽管仅提高了0.5个准确率点)。令人惊讶的是,这种全词掩码方案对命名实体识别(NER)、词性标注和依存句法分析等较低层次任务的帮助不大。

B 模型规模的影响

表8比较了使用BASE和LARGE架构训练的模型。出于实际原因,这些模型使用CCNet语料库(135GB)进行训练。我们证实了较大模型对NLI和NER任务的积极影响。LARGE架构分别减少了19.7%和23.7%的错误率。令人惊讶的是,在词性标注和依存句法分析上,增加三倍的参数并未带来与BASE模型相比的显著差异。Tenney等(2019)和Jawahar等(2019)表明,BERT的低层已经学习了低层次的句法能力,而高层次的语义表示则存在于BERT的高层中。词性标注和依存句法分析可能不会从增加更多层中受益,因为BASE架构的低层已经捕捉到了完成这些任务所需的信息。

C 训练数据集的影响

表8比较了在CCNet和OSCAR上训练的模型。两个数据集的主要区别在于CCNet的额外过滤步骤偏向于类似维基百科的文本。在OSCAR上预训练的模型在词性标注和依存句法分析上表现略好,但在NER上提高了1.31分。CCNet模型在NLI上表现更好(提高了0.67分)。

在这里插入图片描述

D 训练步数的影响

图1展示了下游任务性能随训练步数的变化情况。本节中的所有分数均为至少4次不同随机种子运行的平均值。对于词性标注和依存句法分析,我们还在4个树库上取平均分数。
我们每个epoch(1个epoch等于8360步)评估一次模型,并报告掩码语言建模的困惑度以及下游任务的表现。图1表明,任务越复杂,训练步数的影响越大。我们观察到,依存句法分析和NER在大约22k步时达到早期平台期,而对于NLI,尽管随着预训练步数的增加,边际改善变小,但在100k步时性能仍在缓慢提升。
在表8中,我们比较了两个在CCNet上训练的模型,一个训练了100k步,另一个训练了500k步,以评估总训练步数的影响。训练500k步的模型在词性标注和解析任务上的分数相比100k步并没有显著提高。对于XNLI,提升略高(+0.84分)。
这些结果表明,低层次的句法表示在语言模型训练的早期阶段就被捕捉到,而提取NLI所需的复杂语义信息则需要更多的训练步数。

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4461.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性代数概述

矩阵与线性代数的关系 矩阵是线性代数的研究对象之一: 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,是线性代数中的核心概念之一。矩阵的定义和性质构成了线性代数中矩阵理论的基础,而矩阵运算则简洁地表示和…

金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout

找到Kingbase\ES\V8\KESRealPro\V008R006C006B0021\ClientTools\guitools\KStudio\KStudio.ini 修改JVM参数: 默认值: -Xms512m -Xmx1024m 改为: -Xms1024m -Xmx2048m -XX:MaxPermSize512m SQL查询报错:An I/O error occurred …

Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端

文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理(1)为RestClient(2)为WebClient(3)为RestTemplate 注意 一、概述 官方文档…

kubernetes学习-Service(七)

一、Service-pod-endpoint关系 # 查看endpoints [rootk8s-master deployments]# kubectl get endpoints NAME ENDPOINTS AGE kubernetes 192.168.129.136:6443 90m nginx-svc 10.109.131.1:80,10.111.156.65:80 22m # …

Python数据分析案例70——基于神经网络的时间序列预测(滞后性的效果,预测中存在的问题)

背景 这篇文章可以说是基于 现代的一些神经网络的方法去做时间序列预测的一个介绍科普,也可以说是一个各种模型对比的案例,但也会谈一谈自己做了这么久关于神经网络的时间序列预测的论文,其中一些常见的模式及它们存在的问题以及效果&#x…

opencv笔记2

图像灰度 彩色图像转化为灰度图像的过程是图像的灰度化处理。彩色图像中的每个像素的颜色由R,G,B三个分量决定,而每个分量中可取值0-255,这样一个像素点可以有256*256*256变化。而灰度图像是R,G,B三个分量…

LeetCode:2266. 统计打字方案数(DP Java)

目录 2266. 统计打字方案数 题目描述: 实现代码与解析: 动态规划 原理思路: 2266. 统计打字方案数 题目描述: Alice 在给 Bob 用手机打字。数字到字母的 对应 如下图所示。 为了 打出 一个字母,Alice 需要 按 对…

http://noi.openjudge.cn/——4.7算法之搜索——【169:The Buses】

题目 169:The Buses 总时间限制: 5000ms 内存限制: 65536kB 描述 A man arrives at a bus stop at 12:00. He remains there during 12:00-12:59. The bus stop is used by a number of bus routes. The man notes the times of arriving buses. The times when buses arrive …

java基础概念59-File

一、路径 二、File类 2-1、常见的构造方法 示例: 【注意】: 一般不自己用分割符把父路径和子路径拼接起来,因为,不用的操作系统,分隔符不同。 2-2、小结 2-3、File中常见的成员方法 示例: 【注意】&#…

PortSwigger靶场练习---第二关-查找和利用未使用的 API 端点

第二关:Finding and exploiting an unused API endpoint 实验:查找和利用未使用的 API 端点 PortSwigger靶场地址: Dashboard | Web Security Academy - PortSwigger 题目: 官方提示: 在 Burp 的浏览器中&#xff0c…

软路由系统iStoreOS 一键安装 docker compose

一键安装命令 大家好!今天我来分享一个快速安装 docker-compose 的方法。以下是我常用的命令,当前版本是 V2.32.4。如果你需要最新版本,可以查看获取docker compose最新版本号 部分,获取最新版本号后替换命令中的版本号即可。 w…

SpringCloud nacos 2.0.0 + seata 2.0.0

NACOS 下载nacos https://github.com/alibaba/nacos/releases/tag/2.2.0 启动nacos startup.cmd -m standalone SEATA 下载seata https://seata.apache.org/release-history/seata-server 新建数据库-seata CREATE TABLE branch_table (branch_id bigint NOT NULL,xid …

springboot音乐播放器系统

Spring Boot音乐播放器系统是一个基于Spring Boot框架开发的音乐播放平台,旨在为用户提供高效、便捷的音乐播放体验。 一、系统背景与意义 随着互联网的飞速发展和人们对音乐娱乐需求的不断增长,音乐播放器已经成为人们日常生活中不可或缺的一部分。传…

奉加微PHY6230兼容性:部分手机不兼容

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

Go-知识 版本演进

Go-知识 版本演进 Go release notesr56(2011/03/16)r57(2011/05/03)Gofix 工具语言包工具小修订 r58(2011/06/29)语言包工具小修订 r59(2011/08/01)语言包工具 r60(2011/09/07)语言包工具 [go1 2012-03-28](https://golang.google.cn/doc/devel/release#go1)[go1.1 2013-05-13]…

C#,入门教程(02)—— Visual Studio 2022开发环境搭建图文教程

如果这是您阅读的本专栏的第一篇博文,建议先阅读如何安装Visual Studio 2022。 C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net/beijinghorn/article/details/123350910 一、简单准备 开始学习、编写程序…

数字艺术类专业人才供需数据获取和分析研究

本文章所用数据集:数据集 本文章所用源代码:源代码和训练好的模型 第1章 绪论 1.1研究背景及意义 随着社会经济的迅速发展和科技的飞速进步,数字艺术类专业正逐渐崛起,并呈现出蓬勃发展的势头。数字艺术作为创作、设计和表现形式的…

imbinarize函数用法详解与示例

一、函数概述 众所周知,im2bw函数可以将灰度图像转换为二值图像。但MATLAB中还有一个imbinarize函数可以将灰度图像转换为二值图像。imbinarize函数是MATLAB图像处理工具箱中用于将灰度图像或体数据二值化的工具。它可以通过全局或自适应阈值方法将灰度图像转换为二…

使用ffmpeg提高mp4压缩比,减小文件体积【windows+ffmpeg+batch脚本】

文章目录 关于前情提要FFmpeg是什么使用脚本运行FFmpeg首先,下载ffmpeg.exe然后在视频相同位置写一个bat脚本运行压缩脚本 关于 个人博客,里面偶尔更新,最近比较忙。发一些总结的帖子和思考。 江湖有缘相见🤝。如果读者想和我交…

Codeforces Round 997 (Div. 2) A~C

今天的封面是水母猫猫和佩佩,原图在这里,记得关注画师夏狩大大 至此,天鹅完成了连续四场比赛在四个不同比赛上四次分的壮举!(ABC388,CodeChef169,牛客月赛109,CF997) 这场…