BERT要点理解

  • 包含两个步骤:pre-training以及fine-tuning

  • 预训练阶段,使用无标签数据在不同的预训练任务上训练

  • 微调阶段,首先使用预训练的参数进行初始化,然后根据下游任务的标签数据进行微调,不同的下游任务有不同的微调模型,BERT的一个显著的特点就是在不同的任务之间有统一的架构,并且架构之间的差异非常小

  • 模型架构:多层的双向transformer encoder;BERT BASE的参数为(L=12,L=768,A=12),L表示transformer blocks的层数,H表示隐藏层大小,A表示自注意力头的数目;BERT LARGE的参数为(L=24,H=1024,A=16)

  • 输入输出表示:以一个token sequence来表示一个或两个sentence(堆叠一起),而sentence指的是任意范围的连续文本,而不限定于连续的有语义的句子;使用WordPiece embeddings,有两个特殊的token:[CLS]、[SEP];对每个输入token,其输入表示由token embedding、segment embedding以及position embedding相加得到

  • 预训练BERT:使用两个无监督任务来训练,分别是Masked LM (MLM) 以及Next Sentence Prediction (NSP)

  • MLM:随机遮罩15%的tokens,并只预测这些tokens,虽然这使我们能够获得双向预训练模型,但缺点是我们在预训练和微调之间创建了不匹配,因为在微调过程中不会出现[MASK]标记。缓解的方法是:对于被随机选中,需要进行遮罩的tokens,有80%的概率会被替换成[MASK],有10%的概率会被替换成随机的token,10%的概率不改变

  • NSP:为了理解两个句子之间的关系,为下游任务如问答、自然语言推理等提供帮助。每个训练样本由A和B两个句子组成,50%的情况下B是A的下个句子,50%情况下不是。

  • 预训练的数据集包括BooksCorpus和英文的Wikipedia

  • 微调BERT:对于每个任务,我们只需将特定于任务的输入和输出插入到BERT中,并端到端微调所有参数。在输出时,token representation被输送到输出层用于令牌级任务,例如序列标记或问答,而[CLS] representation被输送到输出层用于分类,例如蕴涵(entailment)或情感分析。

你可能感兴趣的:(bert,深度学习,自然语言处理)