【问题标题】:About BertForMaskedLM关于 BertForMaskedLM
【发布时间】:2021-07-09 20:11:30
【问题描述】:

我最近阅读了有关 Bert 的内容,并希望将 BertForMaskedLM 用于 fill_mask 任务。我知道伯特架构。另外,据我所知,BertForMaskedLM 是从 Bert 构建的,顶部有一个语言建模头,但我不知道 语言建模头 在这里是什么意思。谁能给我一个简单的解释。

【问题讨论】:

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


    【解决方案1】:

    正如您正确理解的那样,BertForMaskedLM 使用了语言建模 (LM) 头。

    通常,和这种情况一样,LM head 是一个线性层,具有隐藏状态的输入维度(对于 BERT-base,它将是 768)和词汇量大小的输出维度。因此,它将 BERT 模型的隐藏状态输出映射到词汇表中的特定标记。损失是根据给定token相对于目标token获得的分数来计算的。

    【讨论】:

    • 给定的词汇量是 30.000。所以这里的线性层是像 Ax + b 这样的线性变换,x 的形状为 768 x 1,A 的形状为 30.000 x 768?这里有激活函数吗?
    • 是的,你做对了。 huggingface的源码显示线性层后没有激活函数....
    • 非常感谢。顺便说一句,您知道从 Bert 开发的任何用于任务 () 的模型:“为段落填空”。我确实知道 BERT 是两个任务上的预训练模型:MASK LM (*) 和 NSP。任务**和任务*都一样吗?或者真的有办法(任何项目,论文,..)来适应任务*(我的意思是“段落”在这里可能是一段很长的段落,有几个空白要填写)。提前致谢。
    • BERT 模型如果你只需要填写一个单词(MASKing a single token)就足够了......但是,如果你想在一个被屏蔽的位置填写多个单词,你可以看看 BART,它是针对文本填充目标进行训练的。
    猜你喜欢
    • 2022-01-13
    • 2022-01-03
    • 2020-08-11
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2012-01-19
    • 2017-01-08
    • 2018-01-18
    相关资源
    最近更新 更多