BERT 之下句预测(NSP)
BERT 之下句预测(NSP)
下一句预测(Next Sentence Prediction,NSP)是 BERT(Bidirectional Encoder Representations from Transformers)预训练过程中的第二个任务,旨在帮助模型理解句子之间的关系。
工作原理
数据准备:
在预训练过程中,BERT 的输入是由两个句子组成的句子对。这些句子对可以是连续的(即实际出现在文本中的下一句),也可以是不连续的(即随机选择的句子)。
每个句子对有50%的概率是连续的,有50%的概率是不连续的。
句子拼接:
两个句子之间通过一个特殊的
[SEP]
标记进行分隔。在两个句子的开头分别添加一个特殊的
[CLS]
标记,这个标记的最终隐藏状态被用来表示整个句子对的语义,并用于下一句预测任务。
预测任务:
模型需要预测第二个句子是否是第一个句子的实际下一句。
这通过添加一个简单的分类层来实现,该层接收
[CLS]
标记的隐藏状态,并输出两个概率值,分别对应“是下一句”和“不是下一句”的预测。
损失函数:
对于下一句预测任务,损失函数通常是二进制交叉熵损失,它衡量模型预测的概率分布与真实标签(0或1)之间的差异。
优点
句子关系理解:NSP 任务帮助模型学习句子之间的关系,这对于理解文本的连贯性和上下文非常重要。
改善文本理解:通过预测句子之间的逻辑关系,BERT 能够更好地理解文本的深层含义,这在许多下游任务(如自然语言推理、问答系统等)中非常有用。
NSP 的具体做法是,BERT 输入的语句将由两个句子构成,其中,50% 的概率将语义连贯的两个连续句子作为训练文本(连续句对一般选自篇章级别的语料,以此确保前后语句的语义强相关),另外 50% 的概率将完全随机抽取两个句子作为训练文本。
连续句对:[CLS]今天天气很糟糕[SEP]下午的体育课取消了[SEP]
随机句对:[CLS]今天天气很糟糕[SEP]鱼快被烤焦啦[SEP]
其中 [SEP] 标签表示分隔符。 [CLS] 表示标签用于类别预测,结果为 1,表示输入为连续句对;结果为 0,表示输入为随机句对。
通过训练 [CLS] 编码后的输出标签,BERT 可以学会捕捉两个输入句对的文本语义,在连续句对的预测任务中,BERT 的正确率可以达到 97%-98%。