BERT从零详细解读:如何做预训练 您所在的位置:网站首页 bert预训练模型的网络结构 BERT从零详细解读:如何做预训练

BERT从零详细解读:如何做预训练

2023-08-06 20:20| 来源: 网络整理| 查看: 265

MLM: mask language model NSP: 去判断两个句子之间的关系

BERT在预训练时使用的是大量的无标注的语料(比如随手可见的一些文本,它是没有标注的)。所以它在预训练任务设计的时候,一定是要考虑无监督来做,因为是没有标签的。

对于无监督的目标函数来讲,有两组目标函数比较受到重视, 第一种是 AR模型,auto regressive,自回归模型。只能考虑单侧信息,典型的就是GPT。

另一种是AE模型,auto encoding,自编码模型。从损坏的输入数据中预测重建原始数据,可以使用上下文的信息。BERT使用的就是AE。

这么理解这个概念其实比较枯燥,我不做数学公式的推导,我举个最简单的例子。

MLM

【我爱吃饭】 AR: P(我爱吃饭)=P(我)P(爱|我)P(吃|我爱)P(饭|我爱吃);

AE: AE模型是对句子做一个mask, mask也就是面具的意思,简单来说就是用面具去掩盖掉句子中某些,或者某几个单词。

mask之后:【我爱mask饭】 我们自己知道,虽然它是无监督的,mask之后,我知道它是“吃”这个字。

P(我爱吃饭|我爱mask饭)=P(mask=吃|我爱饭)

仔细体会一下mask这个模型,它打破了文本原有的信息,让它文本重建。原有文本是“我爱吃饭”,我把吃这个字打掉了,让模型不知道。然后在预训练的时候,让它去做文本重建。在做文本重建的时候,这个模型绞尽脑汁地从周围地文本中学习各种信息,来让自己预测出来的词汇,无限地接近原本的词汇。也就是说模型在学习\训练的时候,要做到让自己的mask的词汇出来,无限地接近,或者就是”吃“这个字。

仔细探究一下,mask这个模型,有没有缺点呢?当然是有的。 还讲刚才这个例子 【我爱吃饭】 mask之后:【我爱mask mask】

优化目标: P(我爱吃饭|我爱mask mask) = P(吃|我爱)P(饭|我爱);这个式子中”吃“和”饭“是相互独立的,也就是mask和mask之间是相互独立的。但是我们知道”吃“和”饭“,也就是这两个mask之间是相互有关系的,很大概率情况下,mask之间不是独立的。

BERT在预训练的时候呢,第一个任务就是MLM,就是用到了mask策略。需要注意的是mask的概率问题: 随机mask 15%的单词,也就是100个单词里面挑出15个单词来mask。这15%的单词又不是全部真正的mask,而是10%替换成其它单词,10%原封不动,80%替换成mask。没有看到一个很好地解释讲为什么这么去做。

mask代码实践:

for index in mask_indices: #80% of the time, replace with [MASK] if random.random()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有