有没有办法限制 Huggingface BERT 编码器-解码器模型中解码器的词汇量?我想强制解码器在生成文本时从一个小词汇表中进行选择,而不是 BERT 的整个约 30k 词汇表。
问问题
91 次
1 回答
3
该generate
方法有一个bad_words_ids
属性,您可以在其中提供不想在输出中包含的令牌 ID 列表。
如果您只想降低生成某些令牌的概率,您可以尝试在模型的输出层中操纵偏差参数。如果你的模型是基于 BERT 的,你会发现BertLMPredictionHead
解码器的最后一层。假设您的 seq2seq 模型是 variable model
,您可以通过访问偏差model.decoder.cls.predictions.decoder.bias
并减少您希望以较低概率出现的令牌 ID 的偏差。
另请注意,如果您使用 BERT 初始化 seq2seq 模型(如Huggingface Transformer 文档中的示例),您需要对模型进行大量微调,因为交叉注意力是随机初始化的,并且解码器部分需要适应 left-正确的一代。
于 2021-10-07T09:37:49.637 回答