ALBERT-XXLarge-v2 项目介绍
模型概述
ALBERT-XXLarge-v2 是一种基于英文语言的大型预训练模型,利用掩码语言模型(Masked Language Modeling, MLM)目标进行训练。它首次介绍于 这篇论文 中,并在 这个仓库 中首次发布。与所有 ALBERT 模型一样,该模型不区分英文单词的大小写。
ALBERT 是一种变形金刚模型,在大量的英文数据上进行了自监督预训练。其预训练仅依赖于原始文本,通过自动生成的方式为这些文本生成输入和标签。具体而言,ALBERT 使用了两个目标进行预训练:
- 掩码语言建模(MLM):模型随机掩盖输入句子的15%的单词,然后通过模型预测这些被掩盖的单词。与传统的递归神经网络(RNN)或类似 GPT 的自回归模型不同,这种方法允许模型学习双向表征。
- 句子顺序预测(SOP):ALBERT 用于预测两个连续文本段的顺序的预训练损失。
这种预训练方式使模型能够学习英文语言的内在表示形式,随后可以用于提取有用特征来完成下游任务。ALBERT 具有共享层的特点,意味着所有层都具有相同的权重,这使得其计算成本与具有相同隐藏层数量的 BERT 类架构类似,但所需内存较少。
这个版本是 xxlarge 模型的第二版,与第一版相比,版本2在几乎所有下游任务中都表现得更好。
模型的配置信息如下:
- 12 次重复层
- 128 的嵌入维度
- 4096 的隐藏层维度
- 64 个注意力头
- 总参数量为 223M
预期用途及限制
原始模型可以用于掩码语言建模或句子顺序预测,但主要用于在下游任务上微调,感兴趣的用户可以在 模型库 中寻找为某一任务微调的版本。
这一模型主要适用于利用整个句子(可能经过掩盖)来进行决策的任务,如序列分类、标记分类或问答任务。对于如文本生成类任务,建议使用 GPT2 类模型。
使用方法
可以通过如下代码进行掩码语言建模:
from transformers import pipeline
unmasker = pipeline('fill-mask', model='albert-xxlarge-v2')
unmasker("Hello I'm a [MASK] model.")
此外,可以轻松地在 PyTorch 和 TensorFlow 中使用该模型获取文本特征。
在 PyTorch 中:
from transformers import AlbertTokenizer, AlbertModel
tokenizer = AlbertTokenizer.from_pretrained('albert-xxlarge-v2')
model = AlbertModel.from_pretrained("albert-xxlarge-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-xxlarge-v2')
model = TFAlbertModel.from_pretrained("albert-xxlarge-v2")
text = "Replace me by any text you'd like."
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
限制与偏见
尽管该模型使用的训练数据相对中立,但在一些预测中可能仍会存在偏见,这点在微调版本中也会影响。
训练数据
ALBERT 模型预训练的数据包括 BookCorpus和 英语维基百科(不包括列表、表格和标题)。
训练过程
数据预处理
文本经过小写和 SentencePiece 分词,词汇量为30,000。模型输入形式为:
[CLS] Sentence A [SEP] Sentence B [SEP]
训练过程
ALBERT 的训练过程与 BERT 类似。具体的掩码过程如下:
- 15% 的 token 被掩盖。
- 在 80% 的情况下,掩盖的 token 被替换为
[MASK]
。 - 在 10% 的情况下,掩盖的 token 被替换为其他随机 token。
- 剩下的 10%,掩盖的 token 保持不变。
评估结果
在下游任务中的微调结果如下:
平均分 | 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 |