我们如何在BERT中单独对掩码代币进行预测



我引用了论文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)

最新更新