HuggingFace镜像/bert-large-uncased-whole-word-masking-finetuned-squad
模型介绍文件和版本分析
下载使用量0

BERT large model (uncased) whole word masking finetuned on SQuAD

基于英语语言、采用掩码语言模型(MLM)目标进行预训练的模型。该模型在 this paper 中被提出,并首次在 this repository 中发布。此模型为不区分大小写版本:即“english”和“English”之间没有区别。

与其他 BERT 模型不同,该模型采用了一种新技术进行训练:全词掩码(Whole Word Masking)。在这种情况下,一个单词所对应的所有 tokens 会被同时掩码。整体掩码率保持不变。

训练过程是相同的——每个被掩码的 WordPiece token 都是独立进行预测的。

预训练完成后,我们使用自己的微调脚本在 SQuAD 数据集上对该模型进行了微调。有关此微调的更多信息,请参见下文。

免责声明:发布 BERT 的团队并未为此模型编写模型卡片,因此本模型卡片由 Hugging Face 团队编写。

快速开始

使用openmind接口

>>> from openmind import pipeline
>>> pipe = pipeline('question-answering', model=model_path, device=device)
>>> question = "Where do I live?"
>>> context = "My name is Tim and I live in Sweden."
>>> print(pipe(question = question, context = context))
{'score': 0.9705850481987, 'start': 29, 'end': 35, 'answer': 'Sweden'}

调用example下的inference.py

cd examples
python inference.py

模型说明

BERT 是一种基于 Transformer 的模型,它在大量英文语料库上以自监督的方式进行预训练。这意味着它仅在原始文本上进行预训练,无需人工对文本进行任何形式的标注(因此可以利用大量公开可用的数据),并通过自动流程从这些文本中生成输入和标签。更准确地说,它通过两个目标进行预训练:

  • 掩码语言模型(MLM):给定一个句子,模型会随机掩码输入中 15% 的词语,然后将整个掩码后的句子输入模型,模型需要预测出被掩码的词语。这与传统的循环神经网络(RNNs)通常逐个处理词语的方式不同,也与像 GPT 这样的自回归模型在内部对未来 tokens 进行掩码的方式不同。它使模型能够学习句子的双向表示。
  • 下一句预测(NSP):在预训练过程中,模型将两个掩码后的句子拼接作为输入。有时这两个句子在原始文本中是相邻的,有时则不是。然后模型需要预测这两个句子是否是前后连贯的。

通过这种方式,模型学习到英语语言的内部表示,这些表示可用于提取对下游任务有用的特征:例如,如果您有一个带标签的句子数据集,就可以使用 BERT 模型生成的特征作为输入来训练一个标准分类器。

该模型具有以下配置:

  • 24 层
  • 1024 隐藏维度
  • 16 个注意力头
  • 3.36 亿参数

预期用途与局限性

该模型应用作问答模型。您可以在问答流水线中使用它,或者在给定查询和上下文的情况下使用它输出原始结果。您可以在 Transformers 文档的任务摘要中查看其他使用案例。

训练数据

BERT 模型在 [BookCorpus](一个包含 11,038 本未出版书籍的数据集)和 [English Wikipedia](不包括列表、表格和标题)上进行了预训练。

训练过程

预处理

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

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

以50%的概率,句子A和句子B对应原始语料库中的两个连续句子,在其他情况下,则是语料库中的另一个随机句子。请注意,此处所指的“句子”是一段连续的文本,通常比单个句子更长。唯一的限制是,这两个“句子”组合后的总长度需少于512个token。

每个句子的掩码处理细节如下:

  • 15%的token被掩码。
  • 在80%的情况下,被掩码的token会被替换为[MASK]。
  • 在10%的情况下,被掩码的token会被替换为一个与原token不同的随机token。
  • 在剩余10%的情况下,被掩码的token保持不变。

预训练

该模型在采用Pod配置的4个云TPU(共16个TPU芯片)上进行训练,训练步数为一百万步,批处理大小为256。在90%的训练步骤中,序列长度限制为128个token,其余10%的步骤则限制为512个token。使用的优化器为Adam,学习率为1e-4,$\beta_{1} = 0.9$,$\beta_{2} = 0.999$,权重衰减为0.01,学习率预热10,000步,之后进行学习率的线性衰减。

评估结果

获得的结果如下:

f1 = 93.15
exact_match = 86.91