前一篇文章我们计算过transformer模块究竟哪部分参数量更大。
对NLP模型的感性认知(一):transformer为基础的结构中究竟哪部分参数多——参数量计算_qq_42606059的博客-CSDN博客
我们沿用上一期的字母以及计算结果。bert是transformer中encoder模块的堆叠。同时输入模型的部分添加了块向量。我们设块数为s
模型的输入部分参数量为:(nd+md+sd)
encoder block我们沿用上一期的计算结果 (3d+d)*d/h*h =4
FFN部分,bert的激活函数为GELU,但是同样有两个全连接,隐藏维度为4d:那么参数量为d*4d+4d+4d*d+d=8+5d
需要注意的是,在接下来layer normalization部分有可训练的参数,但是这里考虑到数量级很小,我们略去。
N*(12+nd+md+sd+5d)。
这里我们贴上bert-base模型的相关参数。N=12,h=12,d=768,s=30522。官方的参数量为110M
我们只计算12N=84934656,sd=23440896,相加为108,375,552,也就是108M,我们可以看到,FFN,self-attention,以及输入部分的参数量没有数量级上的差距。