基于英语语言、使用掩码语言模型(MLM)目标训练的预训练模型。该模型在此论文中被提出,并首次发布。与所有ALBERT模型一样,此模型不区分大小写:“english”和“English”对它而言没有区别。
ALBERT是一种基于Transformer的模型,它在大规模英语语料库上以自监督的方式进行预训练。这意味着它仅使用原始文本进行预训练,无需人工对文本进行任何形式的标注(这也是它能够利用大量公开可用数据的原因),并通过自动流程从这些文本中生成输入和标签。更准确地说,它是在两个目标下进行预训练的:
通过这种方式,模型学习到英语语言的内部表示,该表示随后可用于提取对下游任务有用的特征:例如,如果您有一个带标签的句子数据集,您可以使用ALBERT模型生成的特征作为输入来训练一个标准分类器。
ALBERT的特别之处在于它在其Transformer中共享层。因此,所有层都具有相同的权重。使用重复层会产生较小的内存占用,然而,其计算成本仍与具有相同隐藏层数的类BERT架构相似,因为它必须迭代相同数量的(重复)层。
这是基础模型的第二个版本。版本2与版本1的不同之处在于不同的 dropout 率、额外的训练数据以及更长的训练时间。它在几乎所有下游任务中都取得了更好的结果。
该模型具有以下配置:
您可以将原始模型用于掩码语言建模或下一句预测,但它主要旨在针对下游任务进行微调。请查看[model hub]以寻找您感兴趣任务的微调版本。
请注意,此模型主要用于在需要使用整个句子(可能包含掩码)来做决策的任务上进行微调,例如序列分类、 token 分类或问答任务。对于文本生成等任务,您应该考虑 GPT2 等模型。
您可以直接通过 pipeline 将此模型用于掩码语言建模:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='albert-base-v2')
>>> unmasker("Hello I'm a [MASK] model.")
[
{
"sequence":"[CLS] hello i'm a modeling model.[SEP]",
"score":0.05816134437918663,
"token":12807,
"token_str":"▁modeling"
},
{
"sequence":"[CLS] hello i'm a modelling model.[SEP]",
"score":0.03748830780386925,
"token":23089,
"token_str":"▁modelling"
},
{
"sequence":"[CLS] hello i'm a model model.[SEP]",
"score":0.033725276589393616,
"token":1061,
"token_str":"▁model"
},
{
"sequence":"[CLS] hello i'm a runway model.[SEP]",
"score":0.017313428223133087,
"token":8014,
"token_str":"▁runway"
},
{
"sequence":"[CLS] hello i'm a lingerie model.[SEP]",
"score":0.014405295252799988,
"token":29104,
"token_str":"▁lingerie"
}
]以下是如何在 PyTorch 中使用此模型获取给定文本特征的方法:
from transformers import AlbertTokenizer, AlbertModel
tokenizer = AlbertTokenizer.from_pretrained('albert-base-v2')
model = AlbertModel.from_pretrained("albert-base-v2")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)而在 TensorFlow 中:
from transformers import AlbertTokenizer, TFAlbertModel
tokenizer = AlbertTokenizer.from_pretrained('albert-base-v2')
model = TFAlbertModel.from_pretrained("albert-base-v2")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)即便用于训练本模型的训练数据可被描述为相当中立,该模型仍可能产生有偏见的预测:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='albert-base-v2')
>>> unmasker("The man worked as a [MASK].")
[
{
"sequence":"[CLS] the man worked as a chauffeur.[SEP]",
"score":0.029577180743217468,
"token":28744,
"token_str":"▁chauffeur"
},
{
"sequence":"[CLS] the man worked as a janitor.[SEP]",
"score":0.028865724802017212,
"token":29477,
"token_str":"▁janitor"
},
{
"sequence":"[CLS] the man worked as a shoemaker.[SEP]",
"score":0.02581118606030941,
"token":29024,
"token_str":"▁shoemaker"
},
{
"sequence":"[CLS] the man worked as a blacksmith.[SEP]",
"score":0.01849772222340107,
"token":21238,
"token_str":"▁blacksmith"
},
{
"sequence":"[CLS] the man worked as a lawyer.[SEP]",
"score":0.01820771023631096,
"token":3672,
"token_str":"▁lawyer"
}
]
>>> unmasker("The woman worked as a [MASK].")
[
{
"sequence":"[CLS] the woman worked as a receptionist.[SEP]",
"score":0.04604868218302727,
"token":25331,
"token_str":"▁receptionist"
},
{
"sequence":"[CLS] the woman worked as a janitor.[SEP]",
"score":0.028220869600772858,
"token":29477,
"token_str":"▁janitor"
},
{
"sequence":"[CLS] the woman worked as a paramedic.[SEP]",
"score":0.0261906236410141,
"token":23386,
"token_str":"▁paramedic"
},
{
"sequence":"[CLS] the woman worked as a chauffeur.[SEP]",
"score":0.024797942489385605,
"token":28744,
"token_str":"▁chauffeur"
},
{
"sequence":"[CLS] the woman worked as a waitress.[SEP]",
"score":0.024124596267938614,
"token":13678,
"token_str":"▁waitress"
}
]这种偏差也会影响该模型的所有微调版本。
ALBERT 模型在 BookCorpus 和 English Wikipedia(不包含列表、表格和标题)上进行了预训练。其中,BookCorpus 是一个包含 11,038 本未出版书籍的数据集。
文本经过小写处理,并使用 SentencePiece 进行分词,词汇表大小为 30,000。模型的输入格式如下:
[CLS] Sentence A [SEP] Sentence B [SEP]ALBERT 的训练流程遵循 BERT 的设置。
每个句子的掩码处理细节如下:
[MASK]。在下游任务上进行微调后,ALBERT 模型取得了以下结果:
| 平均值 | SQuAD1.1 | SQuAD2.0 | MNLI | SST-2 | RACE | |
|---|---|---|---|---|---|---|
| V2 | ||||||
| ALBERT-base | 82.3 | 90.2/83.2 | 82.1/79.3 | 84.6 | 92.9 | 66.8 |
| ALBERT-large | 85.7 | 91.8/85.2 | 84.9/81.8 | 86.5 | 94.9 | 75.2 |
| ALBERT-xlarge | 87.9 | 92.9/86.4 | 87.9/84.1 | 87.9 | 95.4 | 80.7 |
| ALBERT-xxlarge | 90.9 | 94.6/89.1 | 89.8/86.9 | 90.6 | 96.8 | 86.8 |
| V1 | ||||||
| ALBERT-base | 80.1 | 89.3/82.3 | 80.0/77.1 | 81.6 | 90.3 | 64.0 |
| ALBERT-large | 82.4 | 90.6/83.9 | 82.3/79.4 | 83.5 | 91.7 | 68.5 |
| ALBERT-xlarge | 85.5 | 92.5/86.1 | 86.1/83.1 | 86.4 | 92.4 | 74.8 |
| ALBERT-xxlarge | 91.0 | 94.8/89.3 | 90.2/87.4 | 90.8 | 96.9 | 86.5 |
@article{DBLP:journals/corr/abs-1909-11942,
author = {Zhenzhong Lan and
Mingda Chen and
Sebastian Goodman and
Kevin Gimpel and
Piyush Sharma and
Radu Soricut},
title = {{ALBERT:} {A} Lite {BERT} for Self-supervised Learning of Language
Representations},
journal = {CoRR},
volume = {abs/1909.11942},
year = {2019},
url = {http://arxiv.org/abs/1909.11942},
archivePrefix = {arXiv},
eprint = {1909.11942},
timestamp = {Fri, 27 Sep 2019 13:04:21 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-1909-11942.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}