Bert模型参数量估算

Bert模型参数量估算

由于BERT模型用到的是Transformer的编码器部分,因此需要先对Transformer的编码器做参数估算

1 Transformer单独一个编码器(Encoder-block)的参数量估算(忽略偏置、Add&Norm层参数等次要部分):

H为词向量维度,A为自注意力头数目,也代表投影矩阵组数。

  1. Q、K、V自注意力层(A=12或A=16):
    H \(\times\) dim \(\times\) 3,故是H \(\times\) dim \(\times\) 3 \(\times\) A=H \(\times\) H \(\times\) 3,其中dim=H/A
  2. 一个全连接层:H \(\times\) H
  3. 前馈层:H \(\times\) 4H+4H \(\times\) H
  4. 总计:12 \(\times\) H \(\times\) H
2 BERT嵌入层参数估算

嵌入层:30K \(\times\) H(大概词表数与词向量维度,除去type id与position id)

3 参数总计(L为Encoder-block数目)

(12 \(\times\) H \(\times\) H) \(\times\) L + 30K \(\times\) H

4 实际验证

bert-base中H=768,L=12,则(12 \(\times\) H \(\times\) H) \(\times\) L + 30K \(\times\) H \(\approx\) 107M(原文给出的为110M)
bert-large中H=1024,L=24,则(12 \(\times\) H \(\times\) H) \(\times\) L + 30K \(\times\) H \(\approx\) 332M(原文给出的为340M)
主要是由于部分次要参数的省略计算以及BERT两种预训练任务还带有一些参数。

作者: python之家

出处: http://www.cnblogs.com/pythonfl/

本文版权归作者和博客园共有,转载时请标明本文出处;如对本文有疑问,欢迎邮件15256636585@qq.com联系;如发现文中内容侵犯到您的权利,请联系作者予以处理。

原文地址:https://www.cnblogs.com/pythonfl/p/15580871.html