为何采用绝对位置编码的BERT仍忽略掩码位置间的依赖关系?
问题解答
为什么BERT有位置编码仍会忽略掩码位置间的依赖?
核心原因不在位置编码本身,而在于BERT的掩码语言模型(MLM)预训练机制:
BERT预训练时会随机将部分token替换为
[MASK],然后单独预测每个掩码位置的原token。
虽然位置编码能让模型知道每个token的位置信息,但MLM的训练目标是独立预测每个掩码token——模型在预测某一个掩码位置时,不需要考虑其他掩码位置的可能取值,所有掩码的损失是单独计算后累加的。这种任务设计从根源上让模型没有动力去学习掩码位置之间的依赖关系,哪怕位置编码已经提供了位置关联信息。
举个简单例子:句子“我[MASK]去[MASK]公园”,BERT预训练时只会分别预测第一个掩码是“想”、第二个是“逛”,不会被要求去建模“想”和“逛”之间的搭配依赖,因为两个预测任务是完全独立的。
影响token依赖关系的其他因素
除了位置编码,以下因素对token间依赖的建模影响更大:
- 预训练任务的设计逻辑:像MLM这种独立预测目标天然限制了掩码间依赖的学习;而XLNet采用的排列语言模型(PLM)是从序列的随机排列中预测token,需要考虑前后token的关联,自然能更好建模依赖关系。
- 输入的掩码方式:BERT预训练时,掩码位置被替换为
[MASK],模型看不到这些位置的真实token,就算有位置编码,也没法基于真实token信息建立掩码间的依赖。 - 注意力机制的约束:虽然Transformer的自注意力理论上能捕捉全局依赖,但如果训练任务没有引导模型去关注特定依赖(比如掩码间的关联),模型不会主动去学习这类关系。
- 损失函数的计算方式:MLM的损失是每个掩码位置交叉熵损失的总和,模型不会因为掩码间的合理搭配获得额外奖励,也不会因为不合理搭配受到惩罚,进一步弱化了对掩码间依赖的学习动力。
内容的提问来源于stack exchange,提问作者Arij Al adel
相关产品推荐
相关产品推荐

