BERT(Bidirectional Encoder Representations from Transformers)是一个双向transformer编码器的言表示模型。来自论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
。由Google公司的研发,BERT的出现使得我们能够在一个大的数据集上面训练好一个比较深的神经网络,简化了NLP任务的训练,又提升了它的性能,使得自然语言处理有了质的飞跃。
基本信息
论文:Pre-training
of Deep
Bidirectional
Transformers for Language Understanding
地址:arxiv.org/abs/1810.04…
BERT全称:Bidirectional Encoder Representations from Transformers
源码:github.com/google-rese…
关键字:Pre-training(预训练)、Deep(深度)、Bidirectional(双向)
BERT特点
Pre-training
BERT的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。
在海量语料的基础上通过前期的Pre-training,让其达到一定的语言表达;后期再通过少量的样本,比如文本分类(正向、负向、中性等情感类文本分类)再进行训练,就可以达到很好的效果。
Deep
BERT-base采用12层Encoder,层数更深。它使用更强大的机器训练更大规模的数据,使BERT的结果达到了全新的高度,并且Google开源了训练好的多语言BERT模型代码,用户可以直接使用BERT作为Word2Vec的转换矩阵并高效的将其应用到自己的任务中。
Bidirectional
通过MLM(masked language model) 任务实现上下文理解。
和ELMo/GPT的区别
- GPT使用新的Transformers结构,用左侧信息去预测未来信息,单向模型的主要缺点在于不能获得足够好的词表示;
- ELMo通过从左向右(LTR)和从右向左(RTL)两个模型的输出拼接获得词的表示,双向信息融合的很浅,且由于基于RNN的架构,在应用到下游任务时,需要对架构做一些调整;
- BERT是基于Transformer,用了左右侧信息,使用的是没有标号的数据,用到一些下游任务的时候,和GPT一样只需要微调输出层就可以了。
和Transformer的区别
- 只使用了transformer的encoder,然后堆叠多层(12层)
- BERT的Transformer Encoder端输入的向量表示,多了Segment Embeddings。计算位置向量的时候是随机初始化加上带训练的,Transformer的位置编码是固定的。
BERT极大的拓展了Transformers的应用,使其可以在更大的无标签的数据集上训练,其效果比有标签、更小数据集上训练的模型效果还要好。
模型
网络层数L, 隐藏层维度H