🚀 RobBERT:基于荷兰语的RoBERTa语言模型
RobBERT是最先进的荷兰语BERT模型,它是一个经过大规模预训练的通用荷兰语语言模型。可以在给定的数据集上进行微调,以执行任何文本分类、回归或标记任务。因此,它已被许多研究人员和从业者成功用于实现各种荷兰语自然语言处理任务的最先进性能,包括情感检测、情感分析、共指消解等。
🚀 快速开始
RobBERT采用了RoBERTa的架构和预训练方法,但使用了荷兰语分词器和训练数据。RoBERTa是经过强大优化的英语BERT模型,比原始的BERT模型更强大。基于相同的架构,RobBERT可以使用微调RoBERTa模型的代码以及大多数用于BERT模型的代码轻松进行微调并推理,例如由HuggingFace Transformers库提供的代码。
默认情况下,RobBERT在训练中使用了掩码语言模型头。这可以作为一种零样本方法来填充句子中的掩码。你可以在Huggingface的RobBERT托管推理API上免费测试。你还可以通过使用HuggingFace的任何RoBERTa运行器、他们的微调笔记本,将模型名称更改为pdelobelle/robbert-v2-dutch-base
,或者使用原始的fairseq RoBERTa训练方案,为自己的任务创建一个新的预测头。
使用以下代码下载基础模型并自行微调,或者使用我们的微调模型之一(在我们的项目网站上有文档说明)。
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基于BERT的大多数笔记本在你的荷兰语数据集上微调RobBERT。
✨ 主要特性
RobBERT已被成功用于实现各种荷兰语自然语言处理任务的最先进性能,具体包括:
此外,它还在以下任务中取得了出色的、接近最先进水平的结果:
\* 请注意,一些评估使用的是RobBERT - v1,而改进后的RobBERT - v2在我们测试的所有方面都优于第一个模型
(还请注意,此列表并不详尽。如果你在应用中使用了RobBERT,我们很高兴了解相关情况!给我们发邮件,或者通过发送包含编辑内容的拉取请求将其添加到这个列表中!)
🔧 技术细节
论文中的性能评估结果
所有实验在我们的论文中有更详细的描述,代码可在我们的GitHub仓库中找到。
情感分析
使用荷兰书评数据集预测评论是正面还是负面。
模型 |
准确率 [%] |
ULMFiT |
93.8 |
BERTje |
93.0 |
RobBERT v2 |
95.1 |
Die/Dat(共指消解)
我们通过预测句子中应填入“die”还是“dat”来衡量模型进行共指消解的能力。为此,我们使用了EuroParl语料库。
在整个数据集上微调
模型 |
准确率 [%] |
F1 [%] |
基线 (LSTM) |
|
75.03 |
mBERT |
98.285 |
98.033 |
BERTje |
98.268 |
98.014 |
RobBERT v2 |
99.232 |
99.121 |
在10K个示例上微调
我们还仅使用10K个训练示例来衡量性能。这个实验清楚地表明,当数据量较少时,RobBERT优于其他模型。
模型 |
准确率 [%] |
F1 [%] |
mBERT |
92.157 |
90.898 |
BERTje |
93.096 |
91.279 |
RobBERT v2 |
97.816 |
97.514 |
使用零样本单词掩码任务
由于BERT模型是使用单词掩码任务进行预训练的,我们可以使用此任务来预测“die”或“dat”哪个更有可能。这个实验表明,RobBERT比其他模型内化了更多关于荷兰语的信息。
模型 |
准确率 [%] |
ZeroR |
66.70 |
mBERT |
90.21 |
BERTje |
94.94 |
RobBERT v2 |
98.75 |
词性标注
使用Lassy UD数据集。
模型 |
准确率 [%] |
Frog |
91.7 |
mBERT |
96.5 |
BERTje |
96.3 |
RobBERT v2 |
96.4 |
有趣的是,我们发现当处理小数据集时,RobBERT v2 显著优于其他模型。
命名实体识别
使用CoNLL 2002评估脚本。
模型 |
准确率 [%] |
Frog |
57.31 |
mBERT |
90.94 |
BERT - NL |
89.7 |
BERTje |
88.3 |
RobBERT v2 |
89.08 |
预训练过程细节
我们使用RoBERTa训练方案对RobBERT进行预训练。我们在[OSCAR语料库](https://oscar - corpus.com/)的荷兰语部分上对模型进行预训练,这是一个大型多语言语料库,通过在Common Crawl语料库中进行语言分类获得。这个荷兰语语料库大小为39GB,包含66亿个单词,分布在1.26亿行文本中,每行可能包含多个句子,因此使用的数据比同时期开发的荷兰语BERT模型更多。
RobBERT与RoBERTa的基础模型共享架构,而RoBERTa本身是对BERT的复制和改进。与BERT一样,它的架构由12个自注意力层组成,每个层有12个头,共有1.17亿个可训练参数。与原始BERT模型的一个区别在于RoBERTa指定的不同预训练任务,它仅使用MLM任务而不使用NSP任务。因此,在预训练期间,它只预测给定句子中某些位置被掩码的单词。训练过程使用Adam优化器,学习率l_r = 10^ - 6进行多项式衰减,并有1000次迭代的升温期,超参数beta_1 = 0.9,以及RoBERTa的默认值beta_2 = 0.98。此外,0.1的权重衰减和0.1的小丢弃率有助于防止模型过拟合。
RobBERT在一个计算集群上进行训练,每个节点有4个Nvidia P100 GPU,节点数量会动态调整,同时保持固定的批量大小为8192个句子。最多使用20个节点(即80个GPU),中位数为5个节点。通过使用梯度累积,批量大小可以独立于可用的GPU数量进行设置,以最大程度地利用集群。使用Fairseq库,模型训练了两个周期,总共超过16000个批次,在计算集群上大约需要三天时间。在计算集群上的训练任务之间,2个Nvidia 1080 Ti也为RobBERT v2进行了一些参数更新。
调查局限性和偏差
在RobBERT论文中,我们还调查了RobBERT中潜在的偏差来源。
我们发现,零样本模型在漂白模板句子中,对于大多数职业,估计“hij”(他)的概率高于“zij”(她),而不管这些职业在现实中的实际性别比例如何。
通过在DBRB荷兰书评情感分析数据集中加入评论作者的性别信息,我们发现RobBERT对女性撰写的高度正面评论的积极情绪检测通常比男性撰写的评论更准确。
如何复现论文实验
复现我们论文中的实验在[RobBERT仓库的README](https://github.com/iPieter/RobBERT#how - to - replicate - our - paper - experiments)中有详细描述。
名称由来
大多数类似BERT的模型名称中都有“BERT”这个词(例如RoBERTa、ALBERT、[CamemBERT](https://camembert - model.fr/)以及[许多其他模型](https://huggingface.co/models?search = bert))。因此,我们使用其掩码语言模型,通过[各种](https://huggingface.co/pdelobelle/robbert - v2 - dutch - base?text = Mijn+naam+is+%3Cmask%3Ebert.) [提示](https://huggingface.co/pdelobelle/robbert - v2 - dutch - base?text = Hallo%2C+ik+ben+%3Cmask%3Ebert.) [方式](https://huggingface.co/pdelobelle/robbert - v2 - dutch - base?text = Leuk+je+te+ontmoeten%2C+ik+heet+%3Cmask%3Ebert.) [询问](https://huggingface.co/pdelobelle/robbert - v2 - dutch - base?text = Niemand+weet%2C+niemand+weet%2C+dat+ik+%3Cmask%3Ebert+heet.)我们新训练的模型,让它给自己命名为“\<mask\>bert”,它始终称自己为RobBERT。我们认为这个名字非常合适,因为RobBERT是一个非常荷兰化的名字(因此显然是一个荷兰语语言模型),并且与它的基础架构RoBERTa有很高的相似性。
由于“rob”在荷兰语中是表示海豹的单词,我们决定画一只海豹,并把它打扮成芝麻街的Bert的样子,作为RobBERT的标志。
📄 许可证
本项目采用MIT许可证。
致谢与引用
本项目由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"
}