Bert模型参数量估算
Bert模型参数量估算
由于BERT模型用到的是Transformer的编码器部分,因此需要先对Transformer的编码器做参数估算
1 Transformer单独一个编码器(Encoder-block)的参数量估算(忽略偏置、Add&Norm层参数等次要部分):
H为词向量维度,A为自注意力头数目,也代表投影矩阵组数。
- 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 - 一个全连接层:H \(\times\) H
- 前馈层:H \(\times\) 4H+4H \(\times\) H
- 总计: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两种预训练任务还带有一些参数。
作者: pythonfl
出处: http://www.cnblogs.com/pythonfl/
本文版权归作者和博客园共有,转载时请标明出处;如有疑问,欢迎联系fangleiecust@163.com;如发现文中内容侵犯到您的权利,请联系作者予以处理。