小白bert参数计算

在这里插入图片描述

针对上图分别从每个部分进行计算。

  • BERT-Base, Uncased 12层,768个隐单元,12个Attention head,110M参数
  • BERT-Large, Uncased 24层,1024个隐单元,16个head,340M参数
  • BERT-Base, Cased 12层,768个隐单元,12个Attention head,110M参数
  • BERT-Large, Uncased 24层,1024个隐单元,16个head,340M参数。

bert base 12层 768隐藏单元 12个head 共110M

vocab_size=30522,
hidden_size=768,
max_position_embeddings=512,
token_type_embeddings=2

1 部分:

Token Embeddings:总词汇是30522每个输出维度都是768,参数量是30522*768

Position Embeddings:transformer中位置信息是通过sincos生成,但是在bert中是学出来了 (原文中说的应该是的数据量足,能学出来)最大长度是512所以这里参数量是512*768

Segment Embeddings:用1和0表示,所以参数是2*768

所以这个部分就是 (30522+512 + 2)* 768=23835648‬

2 部分(注意力部分):

multi-head因为分成12份

单个head的参数是 768 * 768/12 * 3

12个head就是 768 * 768/12 * 3 * 12

紧接着将多个head进行concat再进行变换,此时W的大小是768 * 768

所以这个部分是768 * 768/12 * 3 * 12 + 768 * 768=2359296‬

3 部分(残差和norm):

norm使用的是layer normalization,每个维度有两个参数

768 * 2 = 1536

4 部分(前向传播):

WX+bWX+b 有两层

第一层:768*3072(原文中4H长度) + 3072=2360064

第二层:3072*768+768=2362368

=4722432‬

5 部分(残差和norm):

768 * 2 = 1536

总共参数:

1的部分+(2,3,4,5部分)*12

23835648‬+(2359296‬+1536+2362368+1536)= 108,853,248 约等于109M参数

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章