BERT 之下句预测(NSP)

63
0
0
2023-04-14

BERT 之下句预测(NSP)

下一句预测(Next Sentence Prediction,NSP)是 BERT(Bidirectional Encoder Representations from Transformers)预训练过程中的第二个任务,旨在帮助模型理解句子之间的关系。

工作原理

  1. 数据准备

    • 在预训练过程中,BERT 的输入是由两个句子组成的句子对。这些句子对可以是连续的(即实际出现在文本中的下一句),也可以是不连续的(即随机选择的句子)。

    • 每个句子对有50%的概率是连续的,有50%的概率是不连续的。

  2. 句子拼接

    • 两个句子之间通过一个特殊的 [SEP] 标记进行分隔。

    • 在两个句子的开头分别添加一个特殊的 [CLS] 标记,这个标记的最终隐藏状态被用来表示整个句子对的语义,并用于下一句预测任务。

  3. 预测任务

    • 模型需要预测第二个句子是否是第一个句子的实际下一句。

    • 这通过添加一个简单的分类层来实现,该层接收 [CLS] 标记的隐藏状态,并输出两个概率值,分别对应“是下一句”和“不是下一句”的预测。

  4. 损失函数

    • 对于下一句预测任务,损失函数通常是二进制交叉熵损失,它衡量模型预测的概率分布与真实标签(0或1)之间的差异。

优点

  • 句子关系理解:NSP 任务帮助模型学习句子之间的关系,这对于理解文本的连贯性和上下文非常重要。

  • 改善文本理解:通过预测句子之间的逻辑关系,BERT 能够更好地理解文本的深层含义,这在许多下游任务(如自然语言推理、问答系统等)中非常有用。

NSP 的具体做法是,BERT 输入的语句将由两个句子构成,其中,50% 的概率将语义连贯的两个连续句子作为训练文本(连续句对一般选自篇章级别的语料,以此确保前后语句的语义强相关),另外 50% 的概率将完全随机抽取两个句子作为训练文本。

连续句对:[CLS]今天天气很糟糕[SEP]下午的体育课取消了[SEP]

随机句对:[CLS]今天天气很糟糕[SEP]鱼快被烤焦啦[SEP]

其中 [SEP] 标签表示分隔符。 [CLS] 表示标签用于类别预测,结果为 1,表示输入为连续句对;结果为 0,表示输入为随机句对。

通过训练 [CLS] 编码后的输出标签,BERT 可以学会捕捉两个输入句对的文本语义,在连续句对的预测任务中,BERT 的正确率可以达到 97%-98%。