我们每天都在使用各种常见的深度学习模型(Transformer、CNN、BERT、RNN、LSTM),然而绝大多数人并不了解其底层逻辑。今天YIYI按照经典模型(Transformer、CNN、BERT、RNN、LSTM)出现的先后顺序,综合比较了它们总参数量、各功能层参数量分布、scale参数增长曲线及计算效率等:
参数量计算
RNN
- 参数量计算公式: 输入权重矩阵:维度为输入维度d_in × 隐藏层维度 d_h。 隐藏层权重矩阵:维度为d_h × d_h。 偏置:维度为d_h。
- 总参数量 = d_in × d_h + d_h × d_h + d_h。
LSTM
- 参数量计算公式: LSTM有4个门(输入门、遗忘门、输出门、候选状态),每个门有自己的权重和偏置。 因此,权重矩阵和偏置的参数量需要乘以 4。
- 总参数量 = 4 × [(d_in × d_h) + (d_h × d_h) + d_h]。
CNN
- 参数量计算公式: 卷积核参数:每个卷积核的大小是k_h × k_w × c_in,输出通道数为c_out。 偏置:每个输出通道有一个偏置。
- 总参数量 = (k_h × k_w × c_in × c_out) + c_out。
Transformer
- 参数量计算公式: 嵌入层参数量: 输入词嵌入向量(d_model)乘以词汇表大小(vocab_size)。 注意力头参数量: 每个注意力头的权重(d_model × d_k)乘以注意力头数(h)。 前馈网络参数量: 2 × d_model × d_ff。
- 总参数量 ≈ 2d_model^2 + 4d_model × d_ff。
BERT
- 参数量计算公式: BERT是基于多层Transformer的架构。 总参数量 = Transformer参数量 × 层数 + 词嵌入层参数量。 例如,BERT-Base(12层,d_model=768,d_ff=3072,vocab_size=30522),参数量 ≈ 110M。
适用范围
- RNN的参数量较小,适合简单序列任务。
- LSTM在RNN的基础上增加了门控机制,参数量是RNN的4倍。
- CNN的参数量受卷积核大小、输入/输出通道数影响,通常比RNN/LSTM小得多。
- Transformer的参数量主要集中在前馈网络和多头注意力机制中。
- BERT基于多层Transformer,参数量远大于其他模型,是现代大型语言模型的基础。
后记
如果您有什么想法,欢迎给@YiyiKing留言。