BERT模型在大规模多语言语料库上以自监督方式进行预训练。这意味着它仅在原始文本上进行预训练,无需人工对文本进行任何形式的标注(因此可以利用大量公开可用的数据),并通过自动流程从这些文本中生成输入和标签。更准确地说,它通过两个目标进行预训练:
通过这种方式,模型学习训练集中语言的内部表示,这些表示随后可用于提取对下游任务有用的特征:例如,如果您有一个带标签的句子数据集,您可以使用BERT模型生成的特征作为输入来训练标准分类器。
您可以将原始模型用于掩码语言建模或下一句预测,但它主要旨在针对下游任务进行微调。您可以寻找针对您感兴趣的任务的微调版本。
请注意,此模型主要用于在需要使用整个句子(可能带有掩码)来做决策的任务上进行微调,例如序列分类、标记分类或问答任务。对于文本生成等任务,您应该考虑像GPT2这样的模型。
您可以直接将此模型与用于掩码语言建模的 pipeline 配合使用:
>>> from openmind import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-multilingual-cased')
>>> unmasker("Hello I'm a [MASK] model.")
[{'score': 0.10738343000411987, 'token': 4827, 'token_str': 'fashion', 'sequence': "hello i'm a fashion model."}, {'score': 0.08830235153436661, 'token': 2535, 'token_str': 'role', 'sequence': "hello i'm a role model."}, {'score': 0.0532546304166317, 'token': 2047, 'token_str': 'new', 'sequence': "hello i'm a new model."}, {'score': 0.04640047997236252, 'token': 3565, 'token_str': 'super', 'sequence': "hello i'm a super model."}, {'score': 0.02712862752377987, 'token': 2986, 'token_str': 'fine', 'sequence': "hello i'm a fine model."}BERT 模型在拥有最大维基百科的 104 种语言上进行了预训练。
文本经过小写处理,并使用 WordPiece 进行分词,共享词汇表大小为 110,000。拥有较大维基百科的语言会进行欠采样,而资源较少的语言则会进行过采样。对于像中文、日文汉字和韩文汉字这类没有空格的语言,会在每个字符周围添加 CJK Unicode 块。
模型的输入形式如下:
[CLS] Sentence A [SEP] Sentence B [SEP]以 0.5 的概率,句子 A 和句子 B 对应原始语料库中的两个连续句子,在其他情况下,则是语料库中的另一个随机句子。请注意,此处所指的“句子”是一段连续的文本,通常比单个句子更长。唯一的限制是,这两个“句子”组合后的总长度需少于 512 个 token。
每个句子的掩码处理细节如下:
[MASK]。@article{DBLP:journals/corr/abs-1810-04805,
author = {Jacob Devlin and
Ming{-}Wei Chang and
Kenton Lee and
Kristina Toutanova},
title = {{BERT:} Pre-training of Deep Bidirectional Transformers for Language
Understanding},
journal = {CoRR},
volume = {abs/1810.04805},
year = {2018},
url = {http://arxiv.org/abs/1810.04805},
archivePrefix = {arXiv},
eprint = {1810.04805},
timestamp = {Tue, 30 Oct 2018 20:39:56 +0100},
biburl = {https://dblp.org/rec/journals/corr/abs-1810-04805.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}