当 BERT 用于掩码语言建模时,它会掩码一个标记,然后尝试对其进行预测。
BERT 可以选择哪些候选代币?它是否只是预测一个整数(如回归问题)然后使用该标记?或者它是否对所有可能的单词标记进行 softmax?对于后者,不是有大量可能的代币吗?我很难想象 BERT 将其视为一个分类问题,其中 # classes = # all possible word tokens。
BERT 从哪里得到它预测的令牌?
当 BERT 用于掩码语言建模时,它会掩码一个标记,然后尝试对其进行预测。
BERT 可以选择哪些候选代币?它是否只是预测一个整数(如回归问题)然后使用该标记?或者它是否对所有可能的单词标记进行 softmax?对于后者,不是有大量可能的代币吗?我很难想象 BERT 将其视为一个分类问题,其中 # classes = # all possible word tokens。
BERT 从哪里得到它预测的令牌?
有一个标记词汇表,即 BERT 可以处理的所有可能标记的集合。您可以在此处找到 BERT 变体之一(BERT-base-uncased)使用的词汇表。
可以看到每行包含一个token,总共有30522个token。softmax 是在它们上计算的。
BERT 词汇表中的标记粒度是子词。这意味着每个token并不代表一个完整的词,而只是一个词。在将文本作为输入输入到 BERT 之前,需要根据前面提到的子词词汇表将其分割成子词。拥有一个子词词汇表而不是一个词级词汇表使得 BERT(和任何其他文本生成子词模型)只需要一个“小”词汇表就可以表示任何字符串(在训练数据)。