【问题标题】:Restrict Vocab for BERT Encoder-Decoder Text Generation限制 BERT 编码器-解码器文本生成的词汇
【发布时间】:2021-11-26 17:28:04
【问题描述】:

有没有办法限制 Huggingface BERT 编码器-解码器模型中解码器的词汇量?我想强制解码器在生成文本时从一个小词汇表中进行选择,而不是 BERT 的整个约 30k 词汇表。

【问题讨论】:

    标签: nlp huggingface-transformers bert-language-model seq2seq sentence-transformers


    【解决方案1】:

    generate 方法有一个 bad_words_ids 属性,您可以在其中提供不想在输出中包含的令牌 ID 的列表。

    如果您只想降低某些令牌生成的概率,您可以尝试在模型的输出层中操纵偏差参数。如果你的模型是基于 BERT 的,你会发现解码器的最后一层是BertLMPredictionHead。假设您的 seq2seq 模型在变量 model 中,您可以通过 model.decoder.cls.predictions.decoder.bias 访问偏差并减少您希望以较低概率出现的令牌 ID 的偏差。

    另请注意,如果您使用 BERT 初始化 seq2seq 模型(如the example in the Huggingface Transformer documentation),则需要对模型进行大量微调,因为交叉注意力是随机初始化的,并且解码器部分需要适应左右一代。

    【讨论】:

    • 谢谢,这很有帮助。听起来bad_words_ids 可能最适合我。是的,我正在微调 BERT!
    猜你喜欢
    • 1970-01-01
    • 2019-01-24
    • 2017-08-17
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多