language: zh
tags:
- exbert
license: apache-2.0
datasets:
- bookcorpus
- wikipedia
BERT基础模型(不区分大小写)
该模型采用掩码语言建模(MLM)目标对英语进行预训练,最初在这篇论文中提出,并首次发布于此代码库。该模型不区分大小写:即不会区分"english"和"English"。
免责声明:发布BERT的团队未为此模型编写说明卡片,故本说明卡片由Hugging Face团队撰写。
模型描述
BERT是基于大规模英文语料通过自监督方式预训练的transformers模型。这意味着它仅对原始文本进行预训练,无需任何人工标注(因此可利用大量公开数据),通过自动化过程从文本生成输入和标签。具体而言,其预训练包含两个目标:
- 掩码语言建模(MLM):随机遮蔽输入句子中15%的词汇后,模型需预测被遮蔽的词汇。与传统循环神经网络(RNN)逐词处理或GPT等自回归模型内部遮蔽未来词不同,该方法使模型能学习句子的双向表征。
- 下一句预测(NSP):预训练时将两个遮蔽后的句子拼接作为输入,模型需判断这两个句子是否原文相邻。
通过这种方式,模型学习到英语语言的内在表征,可提取适用于下游任务的特征。例如对于已标注句子数据集,可利用BERT模型生成的特征作为输入训练标准分类器。
预期用途与限制
原始模型可直接用于掩码语言建模或下一句预测,但主要用途是在下游任务上微调。可通过模型中心查找感兴趣任务的微调版本。
需注意,该模型主要针对需要利用完整句子(可能含遮蔽词)进行决策的任务(如序列分类、标记分类或问答)进行微调。文本生成类任务应选用GPT2等模型。
使用方法
可直接使用管道进行掩码语言建模:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='bert-base-uncased')
>>> unmasker("Hello I'm a [MASK] model.")
PyTorch中获取文本特征的示例:
from transformers import BertTokenizer, BertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained("bert-base-uncased")
text = "输入任意文本替换此处"
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
TensorFlow版本:
from transformers import BertTokenizer, TFBertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = TFBertModel.from_pretrained("bert-base-uncased")
text = "输入任意文本替换此处"
encoded_input = tokenizer(text, return_tensors='tf')
output = model(encoded_input)
局限性与偏差
尽管训练数据相对中立,模型仍可能存在预测偏差:
>>> unmasker("The man worked as a [MASK].")
>>> unmasker("The woman worked as a [MASK].")
这种偏差会影响该模型的所有微调版本。
训练数据
BERT预训练数据包含BookCorpus(11,038本未出版书籍)和英文维基百科(排除列表、表格及标题)。
训练流程
预处理
文本经小写转换和WordPiece分词(词汇量30,000)。模型输入格式为:
[CLS] 句子A [SEP] 句子B [SEP]
50%概率下,句子A和B对应原文中的连续句子;其余情况为随机配对。需注意此处的"句子"通常是比单句更长的连续文本片段,唯一限制是组合长度不超过512个标记。
遮蔽规则:
- 15%的标记被遮蔽
- 其中80%替换为[MASK]
- 10%替换为随机标记
- 剩余10%保持原词
预训练
使用4个云TPU Pod(共16个TPU芯片)训练100万步,批量大小256。90%步数的序列长度限制为128个标记,剩余10%为512。采用Adam优化器(学习率1e-4,β₁=0.9,β₂=0.999),权重衰减0.01,前10,000步学习率预热,之后线性衰减。
评估结果
下游任务微调后的表现:
GLUE测试集结果:
任务 |
MNLI-(m/mm) |
QQP |
QNLI |
SST-2 |
CoLA |
STS-B |
MRPC |
RTE |
平均 |
得分 |
84.6/83.4 |
71.2 |
90.5 |
93.5 |
52.1 |
85.8 |
88.9 |
66.4 |
79.6 |
BibTeX引用信息
@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}
}