BERT参数量计算
目前,预训练模型在NLP领域占据核心地位。预训练模型的参数量是庞大的,例如BERT(base)的参数量是110M,BERT(large)的参数量是330M。为了深入认识,我决定思考一下BERT参数量是如何计算的。
首先我们知道,BERT是基于transformer结构的预训练模型。在BERT论文中提到了有关BERT的信息:
Parameters in BERT(base) | Number |
---|---|
word list | 30522 |
layer | 12 |
hidden size | 768 |
max length | 512 |
multi head attention | 12 |
inner size | 3702 |
BERT主要分为四部分:
Sum | / | 110M |
---|---|---|
input embedding | 768 ∗ ( 30522 + 512 + 2 ) 768*(30522+512+2) 768∗(30522+512+2) | 23835648 23835648 23835648 |
multi head attention | 12 ∗ 768 ∗ ( 768 ∗ 3 + 768 ) 12*768*(768*3+768) 12∗768∗(768∗3+768) | 28311552 28311552 28311552 |
feed forward network | 12 ∗ ( 768 ∗ 3072 ∗ 2 + 768 + 3072 ) 12*(768*3072*2+768+3072) 12∗(768∗3072∗2+768+3072) | 56669184 56669184 56669184 |
normalization | 768 ∗ 2 + 768 ∗ 2 ∗ 2 ∗ 12 768*2+768*2*2*12 768∗2+768∗2∗2∗12 | 38400 38400 38400 |
那这样加起来的结果就是108854784,约等于110M。
有关具体运算的细节我之后再补充,按照transformer的decoder计算即可。