bert 简介

简介

bert的大体结构就是transformer的encoder 模块。有两个块 一个就是训练 一个是fine tune。
在这里插入图片描述

训练

bert 是两个任务一块训练 - 语言模型任务和上下文的一对句子关系判断。

语言模型任务

在这里插入图片描述
在 BERT 中,Masked LM(Masked Language Model)构建了语言模型,简单来说,就是随机遮盖或替换一句话里面的任意字或词,然后让模型通过上下文预测那一个被遮盖或替换的部分,之后做 Loss 的时候也只计算被遮盖部分的 Loss,这其实是一个很容易理解的任务,实际操作如下:

  1. 随机把一句话中 15% 的 token(字或词)替换成以下内容:

    1. 这些 token 有 80% 的几率被替换成 [MASK],例如 my dog is hairy→my dog is [MASK]
    2. 有 10% 的几率被替换成任意一个其它的 token,例如 my dog is hairy→my dog is apple
    3. 有 10% 的几率原封不动,例如 my dog is hairy→my dog is hairy
  2. 之后让模型预测和还原被遮盖掉或替换掉的部分,计算损失的时候,只计算在第 1 步里被随机遮盖或替换的部分,其余部分不做损失,其余部分无论输出什么东西,都无所谓
    这样做的好处是,BERT 并不知道 [MASK] 替换的是哪一个词,而且任何一个词都有可能是被替换掉的,比如它看到的 apple 可能是被替换的词。这样强迫模型在编码当前时刻词的时候不能太依赖当前的词,而要考虑它的上下文,甚至根据上下文进行 “纠错”。比如上面的例子中,模型在编码 apple 时,根据上下文 my dog is,应该把 apple 编码成 hairy 的语义而不是 apple 的语义。

下一句判断

在这里插入图片描述
首先在embedding的时候是三个embedding 组合。这块是和tranformer encoder 略不同的地方。 是否是上下句就不多说了。

fine tune

在这里插入图片描述

Reference
1.BERT 详解
2.【NLP】Google BERT模型原理详解

猜你喜欢

转载自blog.csdn.net/kingiscoming/article/details/113734129
今日推荐