BERT模型
发布网友
发布时间:2023-04-25 01:41
我来回答
共1个回答
热心网友
时间:2023-10-13 19:18
BERT有两部分:pre-training和fine-tuning。在pre-training阶段,会在没有标注数据且不同预训练任务上训练模型;在fine-tuning阶段,BERT会根据预训练模型的参数初始化,然后在下游任务的标注数据进行fine-tuned。
BERT是一个多层双向的transformer encoder模型。是的,BERT中的transformer只有encoder,没有decoder!!!
BERT模型中使用的是WordPiece embeddings,最后一层隐藏层的向量会作为每个token的表示。另外,有3个特殊字符如下:
还需要说明的是,BERT模型中sentence并不是语义层面的句子,可以是连续的文本。sequence指的是token 序列,可以是单个sentence也可以是合在一起的 two sentences。
相比之前的预训练模型,BERT在预训练阶段做了两个无监督任务:MLM(masked LM)和next sentence prediction(NSP)。
通过源码能看到:
我没明白为什么传统模型无法双向训练,而用masked LM可以解决双向训练的问题:
某 文章 的解释是:
masked LM的做法:
在masked LM任务中只会预测masked token,其他token不做预测。
有一些任务比如问答(QA)和自然语言推理(NLI)都是对两句话关系的理解,但是语言模型无法捕捉这种信息。为了让训练的模型能获取句子之间的关系,在预训练的时候多加了一个二值化的NSP任务。具体做法:
对这部分我的疑问是:
原文中不理解的地方: