最近面试经常会被面试官问起,谈谈你对BERT的理解?你了解BERT吗?简单介绍一下BERT吧。虽然自己大概理解BERT的原理,但是表达的时候思路不够清晰 ,给面试官的感觉是似懂非懂,借此机会,想梳理一下应该怎么去表达,思路更清晰一些。大概的框架是:模型来源(提出背景)+名词解释+核心内容+模型效果+与之前模型的对比。
BERT来源于Google的一篇名叫“pre-train of deep bidirectional transformer for langgue understanding”的论文,BERT是“Bidirectional Encoder Representation from Transformer”的缩写,整体是一个自编码语言模型(Auto Encoder LM),并且设计了两个预训练任务来训练该模型。两个预训练的模型分别是:
1.遮罩语言模型(MASK LM),简单来说就是输入一个序列,并随机MASK掉其中一部分token,然后让模型根据所给的标签去学习这些地方应该填入的词。
2.下一个句子的预测(Next sentence predict),在双向语言模型的基础上,加上了句子级别连续性预测任务,即输入BERT两个句子(两段文本),让模型去预测这两个句子是否是上下句的关系,引入这个任务是为了更好地让模型去学习文本片段关系。
最后BERT的实验结果表明了模型的有效性,在11个NLP任务中取得了sota的结果。
与RNN,LSTM相比,BERT可以做到并发,同时还提取词语在句子中的关系,并且能在多个不同的层次提取关系特征,进而更能全面反映句子语义。相比word2vect,bert能够根据上下文的信息获取词义,从而避免歧义。同时缺点也很明显。模型太大,参数太多,少量数据训练,容易过拟合。
参考文献