简述 bert
Bert 是一个预训练语言模型,它主要有两个任务。第一个任务是将数据集中的句子随机遮掩一部分,通过训练,来预测这些词是什么,加强了句子内部之间的联系;第二个任务是判断两个句子是否是连续的上下句,通过训练来识别,加强了句子外部之间的联系。
bert 的创新点在于它将双向 Transformer 用于语言模型,Transformer 的 encoder 是一次性读取整个文本序列,而不是从左到右或从右到左地按顺序读取,这个特征使得模型能够基于单词的两侧学习,相当于是一个双向的功能。
bert 相较于rnn,lstm可以并发进行,并且可以提取不同层次的信息,反应更全面的句子语义。相较于 word2vec,根据句子上下文获取词义,避免了歧义出现。缺点就是模型参数太多,而且模型太大,少量数据训练时,容易发生过拟合。
Bert怎样实现mask的
在句子中随机遮盖15%的单词,通过学习来预测这些词是什么,同时15%的词中有80%用[mask]来替换,10%用原词,剩余的10%用随机词来替换。
在判断两个句子是否连续,从数据集选择两个句子,其中一个句子是上一个句子的下一句的概率为50%,剩下的50%是由数据中随机选取的一句话
为什么选取的15%的词中有80%用[mask]来替换,10%用原词,剩余的10%用随机词来替换
不全部用mask来遮掩,是因为下游任务微调中不会出现mask,这样会导致预训练模型和下游任务不匹配。同时在预测时,因为不知道这个词是否是正确的,会使模型更加依赖