模型:
facebook/xlm-roberta-xl
对于XLM-RoBERTa-XL模型的介绍:它是在2.5TB的经过筛选的CommonCrawl数据集上进行了预训练,包含了100种语言。该模型最初由Naman Goyal、Jingfei Du、Myle Ott、Giri Anantharaman和Alexis Conneau在论文《 Larger-Scale Transformers for Multilingual Masked Language Modeling 》中提出,并于《 this repository 》首次发布。
免责声明:发布XLM-RoBERTa-XL的团队没有为该模型编写模型卡片,因此该模型卡片由Hugging Face团队编写。
XLM-RoBERTa-XL 是 RoBERTa 的特大多语言版本。它在包含100种语言的2.5TB筛选后的CommonCrawl数据上进行了预训练。
RoBERTa 是一个在自监督方式下对大型语料进行预训练的transformers模型。这意味着它仅使用原始文本进行预训练,没有进行任何人工标注(这就是它可以使用大量公开可用数据的原因),通过自动处理从这些文本中生成输入和标签。
具体而言,它是通过遮盖语言模型(Masked language modeling,MLM)目标进行预训练的。它会随机遮盖输入中15%的单词,然后将整个遮盖的句子输入模型,并预测遮盖的单词。这与传统的递归神经网络(RNN)通常一次只看到一个单词的方式以及内部遮盖未来标记的自回归模型(如GPT)不同。这使得模型能够学习到句子的双向表示。
这样,模型学习到了内部表示了100种语言的特征,可以用于提取对下游任务有用的特征:例如,如果您有一个带标签的句子数据集,可以使用XLM-RoBERTa-XL模型生成的特征作为输入训练一个标准分类器。
您可以使用原始模型进行遮盖语言建模,但它更适合在下游任务上进行微调使用。请查看《 model hub 》以寻找适合您感兴趣任务的微调版本。
请注意,该模型主要用于在使用整个句子(可能有遮盖)进行决策的任务上进行微调,例如序列分类、标记分类或问答。对于文本生成等任务,您应该看一下GPT2等模型。
您可以直接使用此模型进行遮盖语言建模的管道:
>>> from transformers import pipeline >>> unmasker = pipeline('fill-mask', model='facebook/xlm-roberta-xl') >>> unmasker("Europe is a <mask> continent.") [{'score': 0.08562745153903961, 'token': 38043, 'token_str': 'living', 'sequence': 'Europe is a living continent.'}, {'score': 0.0799778401851654, 'token': 103494, 'token_str': 'dead', 'sequence': 'Europe is a dead continent.'}, {'score': 0.046154674142599106, 'token': 72856, 'token_str': 'lost', 'sequence': 'Europe is a lost continent.'}, {'score': 0.04358183592557907, 'token': 19336, 'token_str': 'small', 'sequence': 'Europe is a small continent.'}, {'score': 0.040570393204689026, 'token': 34923, 'token_str': 'beautiful', 'sequence': 'Europe is a beautiful continent.'}]
以下是如何在PyTorch中使用此模型获取给定文本的特征:
from transformers import AutoTokenizer, AutoModelForMaskedLM tokenizer = AutoTokenizer.from_pretrained('facebook/xlm-roberta-xl') model = AutoModelForMaskedLM.from_pretrained("facebook/xlm-roberta-xl") # prepare input text = "Replace me by any text you'd like." encoded_input = tokenizer(text, return_tensors='pt') # forward pass output = model(**encoded_input)
@article{DBLP:journals/corr/abs-2105-00572, author = {Naman Goyal and Jingfei Du and Myle Ott and Giri Anantharaman and Alexis Conneau}, title = {Larger-Scale Transformers for Multilingual Masked Language Modeling}, journal = {CoRR}, volume = {abs/2105.00572}, year = {2021}, url = {https://arxiv.org/abs/2105.00572}, eprinttype = {arXiv}, eprint = {2105.00572}, timestamp = {Wed, 12 May 2021 15:54:31 +0200}, biburl = {https://dblp.org/rec/journals/corr/abs-2105-00572.bib}, bibsource = {dblp computer science bibliography, https://dblp.org} }