ERT模型 - BERT模型概述
1. BERT模型概述
1.1 介绍
BERT的全称为Bidirectional Encoder Representation from Transformers,是一个预训练的语言表征模型。BERT模型强调不再采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练,而是采用新的masked language model(MLM),以致能生成深度的双向语言表征。BERT在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩,全部两个衡量指标上全面超越人类,并且在11种不同NLP测试中创出SOTA表现,包括将GLUE基准推高至80.4% (绝对改进7.6%),MultiNLI准确度达到86.7% (绝对改进5.6%),成为NLP发展史上的里程碑式的模型成就。
1.2 算法原理
BERT的输入为每一个token对应的表征,并且单词字典是采用WordPiece算法来进行构建的。为了完成具体的分类任务,除了单词的token之外,作者还在输入的每一个序列开头都插入特定的分类token([CLS]),该分类token对应的最后一个Transformer层输出被用来起到聚集整个序列表征信息的作用。BERT的网络架构使用的是《Attention is all you need》中提出的多层Transformer结构。其最大的特点是抛弃了传统的RNN和CNN,通过Attention机制将任意位置的两个单词的距离转换成1,有效的解决了NLP中棘手的长期依赖问题。
1.3 [CLS]的作用
BERT在第一句前会加一个[CLS]标志,最后一层该位对应向量可以作为整句话的语义表示,从而用于下游的分类任务等。因为与文本中已有的其它词相比,这个无明显语义信息的符号会更“公平”地融合文本中各个词的语义信息,从而更好的表示整句话的语义。
1.4 BERT训练
BERT的训练包含pre-train和fine-tune两个阶段。pre-train阶段模型是在无标注的标签数据上进行训练,fine-tune阶段,BERT模型首先是被pre-train模型参数初始化,然后所有的参数会用下游的有标注的数据进行训
2. BERT预训练
2.1 MLM
MLM是指在训练的时候随即从输入语料上mask掉一些单词,然后通过的上下文预测该单词,该任务非常像我们在中学时期经常做的完形填空。在BERT的实验中,15%的WordPiece Token会被随机Mask掉。在训练模型时,一个句子会被多次喂到模型中用于参数学习,但是Google并没有在每次都mask掉这些单词,而是在确定要Mask掉的单词之后,做以下处理。
2.2 NSP
Next Sentence Prediction(NSP)的任务是判断句子B是否是句子A的下文。如果是的话输出'IsNext',否则输出'NotNext'。训练数据的生成方式是从平行语料中随机抽取的连续两句话,其中50%保留抽取的两句话,它们符合IsNext关系,另外50%的第二句话是随机从预料中提取的,它们的关系是NotNext的。
3. 输入表征
BERT的输入表征由三种Embedding求和而成:
- Token Embeddings:即传统的词向量层,每个输入样本的首字符需要设置为[CLS],可以用于之后的分类任务,若有两个不同的句子,需要用[SEP]分隔,且最后一个字符需要用[SEP]表示终止
- Segment Embeddings:为[0,1]序列,用来在NSP任务中区别两个句子,便于做句子关系判断任务
- Position Embeddings:与Transformer中的位置向量不同,BERT中的位置向量是直接训练出来的
4. BERT的微调
在海量的语料上训练完BERT之后,便可以将其应用到NLP的各个任务中了。微调(Fine-Tuning)的任务包括:基于句子对的分类任务,基于单个句子的分类任务,问答任务,命名实体识别等。
5. BERT的优缺点
优点
- BERT 相较于原来的 RNN、LSTM 可以做到并发执行,同时提取词在句子中的关系特征,并且能在多个不同层次提取关系特征,进而更全面反映句子语义。
- 相较于 word2vec,其又能根据句子上下文获取词义,从而避免歧义出现。
缺点
- 模型参数太多,而且模型太大,少量数据训练时,容易过拟合。
- BERT的NSP任务效果不明显,MLM存在和下游任务mismathch的情况。
- BERT对生成式任务和长序列建模支持不好。
6. 算法应用
BERT模型是一个强大的预训练模型,通过采用Transformer训练出一个强大的预训练模型,并可以将预训练的模型进行迁移学习。例如在基于中医医案的命名实体识别研究中,研究者提出在BiLSTM-CRF算法上加入BERT语言模型来提高中医医案命名实体识别效果。该模型采用双向Transformer编码器,生成的字向量可以充分融合字词左右的上下文信息,与传统语言模型相比,该模型可以更充分地表征字的多义性。该实验结果也可以说明,BERT模型对于文本数据字符间的关系特征提取及其性能提升有明显效果,此模型在中医医案的命名实体识别相比于其他模型优势较明显。
7. Bert经典变体学习
7.1 AliteBert
A Lite BERT(ALBERT)模型。该模型的参数量远远少于传统的 BERT 架构。ALBERT 引入2种参数精简技术,克服了扩展预训练模型面临的主要障碍。- factorized embedding parameterization(词嵌入的因式分解):对嵌入参数进行因式分解,将一个大的词汇嵌入矩阵分解为两个小矩阵,从而将隐藏层的大小与词汇嵌入的大小分离开来。这种分离便于后续隐藏层单元数量的增加,怎么说呢?就是增加隐藏层单元数量,并不显著增加词汇嵌入的参数量。- cross-layer parameter sharing(交叉层的参数共享):这一技术可以避免参数量随着网络深度的增加而增加。这两种技术都显著降低了 BERT 的参数量,同时不显著损害其性能,从而提升了参数效率。ALBERT 的配置类似于 BERT-large,但参数量仅为后者的 1/18,训练速度却是后者的 1.7 倍。这些参数精简技术还可以充当某种形式的正则化,可以使训练更加稳定,且有利于泛化。为了进一步提升 ALBERT 的性能,本文还引入了一个自监督损失函数,用于句子顺序预测(SOP,sentence-order prediction)SOP主要聚焦于句间连贯,用于解决原版 BERT中下一句预测(NSP)损失的低效问题。因为确实已有研究(Yang et al., 2019; Liu et al., 2019)表明NSP是可以去掉的。ALBERT 能够扩展为更大的版本,在参数量仍然小于 BERT-large的同时,性能可以显著提升。本文在GLUE、SQuAD 和 RACE 这3个自然语言理解基准测试上都刷新了记录:在 RACE 上的准确率为 89.4%,在 GLUE 上的得分为 89.4,在 SQuAD 2.0 上的 F1 得分为 92.2。




