为啥 GPT2Model 的某些权重没有初始化?

Posted

技术标签:

【中文标题】为啥 GPT2Model 的某些权重没有初始化?【英文标题】:Why some weights of GPT2Model are not initialized?为什么 GPT2Model 的某些权重没有初始化? 【发布时间】:2021-07-26 11:47:06 【问题描述】:

我将 GPT2 预训练模型用于研究项目,当我使用以下代码加载预训练模型时,

from transformers.models.gpt2.modeling_gpt2 import GPT2Model
gpt2 = GPT2Model.from_pretrained('gpt2')

我收到以下警告消息:

GPT2Model 的一些权重没有从 gpt2 的模型检查点初始化,而是重新初始化:['h.0.attn.masked_bias', 'h.1.attn.masked_bias', 'h.2.attn.masked_bias '、'h.3.attn.masked_bias'、'h.4.attn.masked_bias'、'h.5.attn.masked_bias'、'h.6.attn.masked_bias'、'h.7.attn.masked_bias '、'h.8.attn.masked_bias'、'h.9.attn.masked_bias'、'h.10.attn.masked_bias'、'h.11.attn.masked_bias'] 您可能应该在下游任务上训练此模型,以便能够将其用于预测和推理。

据我了解,上面的层的权重不是从预训练模型初始化的。但是我们都知道注意力层('attn')在 GPT2 中非常重要,如果我们不能从预训练模型中获得它们的实际权重,那么使用预训练模型有什么意义呢?

如果有人能向我解释这个问题并告诉我如何解决这个问题,我真的很感激。

【问题讨论】:

在这里找到答案:github.com/huggingface/transformers/issues/7574 有帮助吗? 谢谢,@A.Maman。但是这个链接并不能说服我到底发生了什么! 【参考方案1】:

添加了 masked_bias,但与原始实现相比,huggingface 社区的速度有所提高。由于原始权重已正确加载,因此不应对性能产生负面影响。查看此PR 了解更多信息。

【讨论】:

以上是关于为啥 GPT2Model 的某些权重没有初始化?的主要内容,如果未能解决你的问题,请参考以下文章

为啥要将神经网络的权重初始化为随机数? [关闭]

在语言建模中,为啥我必须在每个新的训练时期之前初始化隐藏权重? (火炬)

Python:BERT 错误 - 初始化 BertModel 时未使用模型检查点的某些权重

为啥RNN在隐藏和输出之间没有权重?

Fine-Tuning DistilBertForSequenceClassification:不是在学习,为啥loss没有变化?权重没有更新?

删除并重新初始化相关的 BERT 权重/参数