关于BERT预训练中MLM与NSP同时执行的实现疑问
BERT预训练中MLM与NSP联合训练的实现细节
1. MLM与NSP同时训练的核心机制
BERT预训练时,MLM和NSP是在同一份输入样本上并行执行的,模型会同时输出两个任务的预测结果,最终预训练总损失是MLM损失与NSP损失的直接相加。
- 输入格式固定为
[CLS] Sentence 1 [SEP] Sentence 2 [SEP](单句样本为[CLS] Sentence [SEP]) - 模型输出分为两部分:
- 对每个输入token,输出其在词汇表上的概率分布,用于MLM任务
- 对
[CLS]位置的输出做二分类处理(0/1),用于判断Sentence 1和Sentence 2是否为连续句子(NSP任务)
2. 非连续句子样本的MLM掩码规则
不管Sentence 1和Sentence 2是否为连续句子,MLM的掩码逻辑完全不受影响:
- 随机挑选输入序列中15%的token(排除
[CLS]和[SEP])进行掩码操作 - 掩码替换规则:80%概率替换成
[MASK],10%概率替换成随机词汇,10%概率保留原token - 也就是说,Sentence 1和Sentence 2中的token都有被掩码的可能,和两句是否连续无关
3. MLM损失的计算与真值定义
MLM损失仅针对被掩码的token计算交叉熵:
- 先定位所有被掩码处理的token位置(包括替换成
[MASK]、随机词或保留原词的那15%token) - 对每个这些位置,用模型输出的词汇概率分布,和该位置的原始token ID计算交叉熵损失
- 将所有掩码位置的损失求和或取平均,得到最终的MLM损失
这里的MLM真值就是被掩码位置的原始token本身,和NSP的真值没有任何关联。
4. NSP真值为False时的MLM真值
哪怕NSP的真值是False(即Sentence 1和Sentence 2并非连续句子),MLM的真值依然只由被掩码位置的原始token决定,和两句是否连续完全无关。比如Sentence 1里的某个token被掩码了,它的MLM真值就是这个token原本的内容,不会因为NSP是False而改变。
内容的提问来源于stack exchange,提问作者raveitin
相关产品推荐
相关产品推荐

