Bert
Bert
全称
Bidirectional Encoder Representations from Transformers
Bert简介
  1. 它是一个预训练语言模型
  • (什么是预训练模型,举个例子,假设我们有大量的维基百科数据,那么我们可以用这部分巨大的数据来训练一个泛化能力很强的模型,当我们需要在特定场景使用时,例如做文本相似度计算,那么,只需要简单的修改一些输出层,再用我们自己的数据进行一个增量训练,对权重进行一个轻微的调整。
  • 预训练的好处在于在特定场景使用时不需要用大量的语料来进行训练,节约时间效率高效,bert就是这样的一个泛化能力较强的预训练模型。)
  1. 它具有广泛的通用性,绝大部分NLP任务都可以采用类似的两阶段模式直接去提升效果。
  1. 实验的效果非常好,基本刷新了很多NLP的任务的最好性能。
Bert模型架构
  • 从创新的角度来看,bert其实并没有过多的结构方面的创新点,使用多层Transform中Encoder进行堆叠
  • 与最近的语言表征模型不同,BERT基于所有层中的左、右语境进行联合调整,来预训练深层双向表征。下图为openAI GPT和ELMo模型:
openAI GPT只从左向右
ELMo实际上是分别考虑左到右、右到左再组合
  • 最早的两个bert官方版本的结构:(其中L表示的是transformer的层数,H表示输出的维度,A表示mutil-head attention的个数)
(模型的层数其实已经很大了,但是由于transformer的残差(residual)模块,层数并不会引起梯度消失等问题,但是并不代表层数越多效果越好,有论点认为低层偏向于语法特征学习,高层偏向于语义特征学习。