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兩種預訓練任務還帶有一些參數。