英文

ALBERT XLarge v2

在英语语言上,使用遮蔽语言建模(Masked Language Modeling,MLM)目标的预训练模型。它是在 this paper 中引入的,首次发布于 this repository 。与所有的ALBERT模型一样,这个模型是无大小写区别的:它不区分英语和English。

免责声明:发布ALBERT的团队没有为这个模型撰写模型卡片,因此这个模型卡片是由Hugging Face团队编写的。

模型描述

ALBERT是在自我监督的方式下,通过在大规模的英语数据上进行预训练的Transformer模型。这意味着它仅使用原始文本进行预训练,没有以任何方式人工标注数据(这就是为什么它可以使用大量的公开可用数据),通过自动生成输入和标签来进行预训练。更具体地说,它通过两个目标进行预训练:

  • 遮蔽语言建模(MLM):将一个句子,模型会随机遮蔽输入中15%的单词,然后将整个遮蔽的句子输入模型,并预测被遮蔽的单词。这与通常按顺序逐个查看单词的传统递归神经网络(RNN)不同,也与内部遮蔽未来标记的自回归模型如GPT不同。这使模型能够学习到句子的双向表示。
  • 句子排序预测(SOP):ALBERT使用基于预测两个连续文本片段顺序的预训练损失。

这样一来,模型学习到了英语的内部表示,可以用于提取对下游任务有用的特征:如果你有一个带有标签的句子数据集,你可以使用ALBERT模型生成的特征作为输入训练一个标准分析器。

ALBERT的特殊之处在于它在其Transformer中共享其层。因此,所有的层都有相同的权重。使用重复层可以减小内存占用,但计算成本与具有相同数量的隐藏层的类似BERT架构的成本相似,因为它必须通过相同数量的(重复)层进行迭代。

这是xlarge模型的第二个版本。版本2与版本1不同,因为它具有不同的丢弃率,额外的训练数据和更长的训练时间。它在几乎所有的下游任务中都有更好的结果。

这个模型具有以下配置:

  • 24个重复的层
  • 128个嵌入维度
  • 2048个隐藏维度
  • 16个注意力头
  • 58M个参数

预期使用和限制

您可以使用原始模型进行遮蔽语言建模或下一个句子预测,但它主要用于在下游任务上进行微调。请参阅 model hub ,以查找您感兴趣的任务上进行微调的版本。

请注意,该模型主要用于在使用整个句子(可能是遮蔽的)进行决策的任务上进行微调,例如序列分类、标记分类或问答。对于文本生成等任务,您应该查看类似GPT2的模型。

如何使用

您可以直接使用这个模型的流程进行遮蔽语言建模:

>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='albert-xlarge-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-xlarge-v2')
model = AlbertModel.from_pretrained("albert-xlarge-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-xlarge-v2')
model = TFAlbertModel.from_pretrained("albert-xlarge-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-xlarge-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 上进行预训练的,该数据集由11,038本未发表的书籍和 English Wikipedia 个网页(不包括列表、表格和标题)组成。

训练过程

预处理

文本被转换为小写,并使用SentencePiece进行分词,词汇表大小为30,000。模型的输入的形式如下:

[CLS] Sentence A [SEP] Sentence B [SEP]

训练

ALBERT的训练过程遵循BERT的设置。

每个句子的遮蔽过程的具体细节如下:

  • 将15%的标记遮蔽掉。
  • 在80%的情况下,将被遮蔽的标记替换为[MASK]。
  • 在10%的情况下,将被遮蔽的标记替换为与其不同的随机标记。
  • 在剩下的10%的情况下,保留被遮蔽的标记不变。

评估结果

在下游任务上进行微调时,ALBERT模型实现了以下的结果:

Average 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

BibTeX条目和引用信息

@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}
}