bert是transformer的encoder堆叠而成的
bert是self-supervise learning(自监督学习)model,没有label,基于masking机制。masking有两种方式,一个是将输入的其中一个向量替换为特殊的token,如上图的蓝色方框mask;另一个是将输入向量随机替换成vocabulary中一个向量,如绿色random。如果是第一种方式,比如输入为‘台湾大学’,把‘湾’遮掩掉然后送入bert,输出的向量经过线性变换和softmax,输出包含vocabulary中所有字的概率分布,跟transformer一样,最后值最大的就是预测结果,然后将结果与已知的之前masking的输入对比。总的来说就是,label就在输入中,只不过模型自己不知道,模型猜完之后的结果,我再拿它跟mask掉的内容作对比,得出预测的是否正确。
这部分就像是填空,看起来没什么意义,但是bert最重要的任务是微调后应用于下游任务,这个过程也叫作pre-train(预训练),如下图。
上图是一个完整的model,将输入送入bert处理后,再去进