英文

RobBERT: 基于RoBERTa的荷兰语言模型。

RobBERT 是最先进的荷兰语BERT模型。它是一个大型预训练的通用荷兰语言模型,可以在给定的数据集上进行微调,以执行任何文本分类、回归或标记标记任务。因此,它已被许多 researchers practitioners 成功用于实现各种荷兰语自然语言处理任务的最先进性能,包括:

并且在以下任务中也取得了卓越的接近SOTA结果:

*请注意,几个评估使用了RobBERT-v1,并且第二个改进的RobBERT-v2在我们测试的所有内容上都优于第一个模型

*还请注意,此列表并非详尽无遗。如果您在应用程序中使用了RobBERT,我们很乐意了解!通过发送电子邮件告诉我们,或者通过使用编辑发送请求将其自己添加到此列表。

关于RobBERT的更深入的信息可以在我们的 blog post our paper the RobBERT Github repository 中找到。

如何使用

RobBERT使用 RoBERTa 的架构和预训练,但使用荷兰语分词器和训练数据。RoBERTa是经过优化的英语BERT模型,使其比原始BERT模型更强大。给定相同的架构,RobBERT可以使用 code to finetune RoBERTa 模型和BERT模型使用的大多数代码进行微调和推理,例如通过 HuggingFace Transformers 库提供的代码。

默认情况下,RobBERT使用了训练中使用的掩码语言模型头。这可以用作一种零-shot方式来填充句子中的掩码。您可以在 RobBERT's Hosted infererence API of Huggingface 上免费测试它。您还可以通过使用HuggingFace的 RoBERTa-runners their fine-tuning notebooks 中的任何一个来为自己的任务创建一个新的预测头,只需将模型名称更改为pdelobelle/robbert-v2-dutch-base,或使用原始的fairseq RoBERTa 训练方案。

使用以下代码下载基础模型并进行微调,或使用我们的微调模型之一(在 our project site 中有记录)。

from transformers import RobertaTokenizer, RobertaForSequenceClassification
tokenizer = RobertaTokenizer.from_pretrained("pdelobelle/robbert-v2-dutch-base")
model = RobertaForSequenceClassification.from_pretrained("pdelobelle/robbert-v2-dutch-base")

从transformers v2.4.0开始(或从源代码安装),您可以使用AutoTokenizer和AutoModel。然后,您可以使用大多数 HuggingFace's BERT-based notebooks 为不同类型的荷兰语言数据集上的RobBERT进行微调。

论文技术细节

我们的性能评估结果

所有实验在我们的 paper 中有更详细的描述,代码在 our GitHub repository 中。

情感分析

使用 Dutch Book Reviews Dataset 预测评论是积极的还是消极的。

Model Accuracy [%]
ULMFiT 93.8
BERTje 93.0
RobBERT v2 95.1

Die/Dat(指代消解)

我们通过预测句子中应该填入“die”还是“dat”来衡量模型进行指代消解的能力。为此,我们使用了 EuroParl corpus

完整数据集微调
Model Accuracy [%] F1 [%]
12336321 (LSTM) 75.03
mBERT 98.285 98.033
BERTje 98.268 98.014
RobBERT v2 99.232 99.121
仅使用1万个示例进行微调

我们还使用仅有1万个训练示例的性能进行了测量。此实验清楚地表明,当数据量有限时,RobBERT的性能优于其他模型。

Model Accuracy [%] F1 [%]
mBERT 92.157 90.898
BERTje 93.096 91.279
RobBERT v2 97.816 97.514
使用零shot词掩蔽任务

由于BERT模型是使用词掩蔽任务进行预训练的,我们可以使用它来预测“die”或“dat”的可能性更大。这个实验显示RobBERT比其他模型内部化了更多荷兰语信息。

Model Accuracy [%]
ZeroR 66.70
mBERT 90.21
BERTje 94.94
RobBERT v2 98.75

词性标注

使用 Lassy UD dataset

Model Accuracy [%]
Frog 91.7
mBERT 96.5
BERTje 96.3
RobBERT v2 96.4

有趣的是,我们发现在处理小的数据集时,RobBERT v2明显优于其他模型。

命名实体识别

使用 CoNLL 2002 evaluation script

Model Accuracy [%]
Frog 57.31
mBERT 90.94
BERT-NL 89.7
BERTje 88.3
RobBERT v2 89.08

预训练程序细节

我们使用RoBERTa的训练方案预训练了RobBERT。我们对荷兰语部分的 OSCAR corpus 进行了预训练。这是一个大型的多语言语料库,通过在Common Crawl语料库中进行语言分类获得。这个荷兰语语料库有39GB大小,包含66亿个单词,分布在1.26亿行文本中,每行可能包含多个句子,因此使用的数据比同时开发的其他荷兰语BERT模型更多。

RobBERT共享其架构 RoBERTa's base model ,它本身是BERT的复制和改进版本。与原始BERT模型不同,RoBERTa指定的预训练任务仅使用了MLM任务,而不是NSP任务。因此,在预训练期间,它只预测了给定句子中特定位置的单词是否被掩盖。训练过程使用Adam优化器,学习率采用多项式衰减l_r=10^-6,并具有1000个迭代的渐变增加期,超参数beta_1=0.9和RoBERTa的默认值beta_2=0.98。此外,权重衰减为0.1,小的dropout为0.1有助于防止模型过拟合。

RobBERT在每个节点上使用4个Nvidia P100 GPU的计算集群进行训练,节点数在保持固定批量大小为8192个句子的情况下进行动态调整。最多使用20个节点(即80个GPU),中位数为5个节点。通过使用梯度累积,可以独立设置批量大小,而不受可用GPU数量的限制,以最大限度地利用集群。使用 Fairseq library ,该模型经过了两个时期的训练,总共超过16000批次,计算集群中大约需要三天时间。在计算集群的训练作业之间,2个Nvidia 1080 Ti还完成了对RobBERT v2的一些参数更新。

研究限制和偏见

RobBERT paper 中,我们还调查了RobBERT的潜在偏见来源。

我们发现,无论实际工作性别比例如何,零shot模型估计"hij"(he)的概率大于"zij"(she)在漂白的模板句子中的绝大多数职业中。

通过将DBRB荷兰书籍情感分析数据集与评论作者的陈述性别相结合,我们发现RobBERT更准确地检测到女性撰写的高度正面的评论比男性撰写的评论更积极。

如何复制我们的论文实验

复制我们的论文实验 described in detail on teh RobBERT repository README

RobBERT名称的起源

大多数类似BERT的模型的名称中都包含单词BERT(例如 RoBERTa ALBERT CamemBERT many, many others )。因此,我们使用掩码语言模型查询我们训练的模型,用 all kinds of prompts 让其自己为自己命名,它一致地称呼自己为RobBERT。我们认为这非常合适,因为RobBERT是一个 very Dutch name (因此明显是一个荷兰语言模型),并且与其根架构BERT RoBERTa 非常相似。

由于“rob”是荷兰语中表示海豹的词,我们决定画一只海豹,并像Robbie穿上 Bert from Sesame Street 为了 RobBERT logo

致谢和引用

该项目由 Pieter Delobelle Thomas Winters Bettina Berendt 创建。如果您要引用我们的论文或模型,可以使用以下BibTeX:

@inproceedings{delobelle2020robbert,
    title = "{R}ob{BERT}: a {D}utch {R}o{BERT}a-based {L}anguage {M}odel",
    author = "Delobelle, Pieter  and
      Winters, Thomas  and
      Berendt, Bettina",
    booktitle = "Findings of the Association for Computational Linguistics: EMNLP 2020",
    month = nov,
    year = "2020",
    address = "Online",
    publisher = "Association for Computational Linguistics",
    url = "https://www.aclweb.org/anthology/2020.findings-emnlp.292",
    doi = "10.18653/v1/2020.findings-emnlp.292",
    pages = "3255--3265"
}