Nlp 蒙面标签参数在BertForMaskedLM中是如何工作的?

Nlp 蒙面标签参数在BertForMaskedLM中是如何工作的?,nlp,language-model,bert-language-model,mlmodel,Nlp,Language Model,Bert Language Model,Mlmodel,此代码来自huggingface transformers页面 我无法理解model中的masked\u lm\u labels=input\u id参数。 它是如何工作的?这是否意味着当传递input\u id时,它将自动屏蔽某些文本?第一个参数是屏蔽输入,masked\u lm\u labels参数是所需的输出 应屏蔽输入\u id。一般来说,这取决于你如何做掩蔽。在最初的BERT中,他们选择了15%的代币和以下代币 使用[MASK]令牌;或 使用随机令牌;或 保持原始令牌不变 这会修改

此代码来自huggingface transformers页面

我无法理解
model
中的
masked\u lm\u labels=input\u id
参数。
它是如何工作的?这是否意味着当传递
input\u id
时,它将自动屏蔽某些文本?

第一个参数是屏蔽输入,
masked\u lm\u labels
参数是所需的输出

应屏蔽
输入\u id
。一般来说,这取决于你如何做掩蔽。在最初的BERT中,他们选择了15%的代币和以下代币

  • 使用
    [MASK]
    令牌;或
  • 使用随机令牌;或
  • 保持原始令牌不变
这会修改输入,因此您需要告诉您的模型什么是原始的非屏蔽输入,即
屏蔽的lm_标签
参数。另外请注意,您不希望只计算实际选择用于屏蔽的令牌的损失。其余令牌应替换为索引
-100


有关详细信息,请参见。

第一个参数是屏蔽输入,
masked\u lm\u labels
参数是所需的输出

应屏蔽
输入\u id
。一般来说,这取决于你如何做掩蔽。在最初的BERT中,他们选择了15%的代币和以下代币

  • 使用
    [MASK]
    令牌;或
  • 使用随机令牌;或
  • 保持原始令牌不变
这会修改输入,因此您需要告诉您的模型什么是原始的非屏蔽输入,即
屏蔽的lm_标签
参数。另外请注意,您不希望只计算实际选择用于屏蔽的令牌的损失。其余令牌应替换为索引
-100

有关更多详细信息

from transformers import BertTokenizer, BertForMaskedLM
import torch

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForMaskedLM.from_pretrained('bert-base-uncased')

input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True)).unsqueeze(0) # Batch size 1
outputs = model(input_ids, masked_lm_labels=input_ids)

loss, prediction_scores = outputs[:2]