【问题标题】:How is the number of parameters be calculated in BERT model?BERT模型的参数个数是怎么计算的?
【发布时间】:2022-03-15 02:11:50
【问题描述】:

Devlin & Co. 的论文“BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”计算了基本模型大小为 110M 的参数(即 L=12、H=768、A=12),其中 L = 数字层数,H = 隐藏大小,A = 自注意力操作数。据我所知,神经网络中的参数通常是层之间“权重和偏差”的计数。那么这是如何根据给定的信息计算出来的呢? 12768768*12?

【问题讨论】:

标签: neural-network nlp bert-language-model


【解决方案1】:

Transformer Encoder-Decoder Architecture BERT 模型仅包含变压器架构的编码器块。让我们看一下 BERT 的编码器块的各个元素,以可视化数字权重矩阵以及偏置向量。给定的配置 L = 12 表示将有 12 层 self attention,H = 768 表示单个 token 的嵌入维度将是 768 维,A = 12 表示一层 self attention 中将有 12 个注意力头。编码器块执行以下操作序列:

  1. 输入将是作为 S * d 维矩阵的标记序列。其中 s 是序列长度,d 是嵌入维度。生成的输入序列将是令牌嵌入、令牌类型嵌入以及位置嵌入的总和,作为每个令牌的 d 维向量。在 BERT 模型中,第一组参数是词汇嵌入。 BERT 使用具有 30522 个标记的 WordPiece[2] 嵌入。每个令牌有 768 个维度。

  2. 嵌入层标准化。一个权重矩阵和一个偏置向量。

  3. 多头自注意力。将有 h 个头,每个头将有三个矩阵,分别对应于查询矩阵、键矩阵和值矩阵。这些矩阵的第一个维度是嵌入维度,第二个维度是嵌入维度除以注意力头的数量。除此之外,还会有一个矩阵将注意力头生成的连接值转换为最终的令牌表示。

  4. 残差连接和层归一化。一个权重矩阵和一个偏置向量。

  5. 位置前馈网络将有一个隐藏层,对应于两个权重矩阵和两个偏置向量。论文中提到隐藏层的单元数将是嵌入维度的四倍。

  6. 残差连接和层归一化。一个权重矩阵和一个偏置向量。

让我们通过将正确的维度与 BERT 基础模型的权重矩阵和偏置向量相关联来计算参数的实际数量。

嵌入矩阵:

  • 词嵌入矩阵大小[词汇量,嵌入维度] = [30522, 768] = 23440896
  • 位置嵌入矩阵大小,[最大序列长度,嵌入维度] = [512, 768] = 393216
  • 令牌类型嵌入矩阵大小 [2, 768] = 1536
  • 嵌入层归一化、权重和偏差 [768] + [768] = 1536
  • 总嵌入参数 = ???????? ≈ ???

注意头:

  • 查询权重矩阵大小 [768, 64] = 49152 和偏差 [768] = 768

  • 关键权重矩阵大小 [768, 64] = 49152 和偏置 [768] = 768

  • 值权重矩阵大小 [768, 64] = 49152 和偏差 [768] = 768

  • 12 个头的一层注意力的总参数 = 12∗(3 ∗(49152+768)) = 1797120

  • heads [768, 768] = 589824 和 Bias [768] = 768, (589824+768 = 590592) 连接后投影的密集权重

  • 层归一化权重和偏差 [768], [768] = 1536

  • 位置明智的前馈网络权重矩阵和偏差 [3072, 768] = 2359296, [3072] = 3072 和 [768, 3072] = 2359296, [768] = 768, (2359296+3072+ 2359296+768 = 4722432)

  • 层归一化权重和偏差 [768], [768] = 1536

  • 一个完整注意力层的总参数(1797120 + 590592 + 1536 + 4722432 + 1536 = 7113216 ≈ 7?

  • 12 层注意力的总参数 (?? ∗ ??????? = ???????? ≈ ???)

BERT Encoder 的输出层:

  • 密集权重矩阵和偏差 [768, 768] = 589824, [768] = 768, (589824 + 768 = 590592)

????SASE中的总参数=???????? + + + + = ??????????????????≈

【讨论】:

  • 偏差不应该是 64 而不是 768?
猜你喜欢
  • 2017-04-11
  • 2018-06-16
  • 2020-07-11
  • 2017-11-20
  • 2021-08-19
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多