我引用了论文BERT:语言理解的深度双向转换器的预训练,"我们简单地随机屏蔽一定百分比的输入令牌,然后预测那些屏蔽的令牌";。
它到底是什么意思???
是不是只针对掩码令牌计算损失,而忽略其他令牌的预测。如果是这样的话,做这件事的正确方法是什么,即我们将权重传递给模型以忽略来自除"strong>"之外的令牌的预测;MASK"。如果有人能提供一个关于相同的链接,这将是有帮助的。
是否仅针对掩码令牌计算损失,而忽略其余令牌的预测。
快速答案"是";
假设给定以下句子:";红苹果是我最喜欢的水果">
我可以把上面的句子伪装成:";红苹果是我的最爱">
本质上,您期望模型将[MASK]预测为";水果">
上面的每个单词都将被标记为其id(实际上比这更复杂(,包括其特殊id=103的令牌[MASK]。
我们是否将权重传递给模型以忽略来自除";MASK";。
您不必传递权重,对于BertForMaskLM,只要您提供attention\ymask数组,模型就会为您处理掩蔽,指示哪些是未掩蔽的令牌,因此不包括在损失计算中。它所做的是,它基本上返回"-100〃;作为输出,并且当您计算loss = CrossEntropyLoss(prediction, groundTruth)
时,PyTorch将忽略为"1"的元素-100〃;。您可以通过更改默认参数来调整此行为:nn.CrossEntropyLoss(ignore_index=-100)
。