999 字
5 分钟
深度学习的基本结构:层,块,组件,网络
之前一直苦恼于抽象的概念,层,块,组件,网络之间的关系。
纵向:抽象层级
通用
CNN(ResNet)
Transformer(BERT)
M
模型
模型
模型 / Model
完整可训练对象
ResNet-50
4 stage × N ResBlock
BERT-base
12 × EncoderBlock
堆叠 ↑
B
块
块
块 / Block
可复用子图
ResBlock
Conv+BN+ReLU + 跳跃
EncoderBlock
MHA + AddNorm + FFN
组合 ↑
ℓ
层
层
层 / Layer
原子算子单元
Conv2d, BN, ReLU
单个卷积或激活
Linear, LayerNorm
单个线性变换
拥有 ↑
θ
参数
参数
参数 / Parameter
可学习张量
W, b
卷积核权重与偏置
W_Q, W_K, W_V
注意力投影矩阵
层、块、模型共享同一接口:forward(x) → y parameters() → {θ} 粒度不同,行为协议相同。
横向:同一层级内的三种拓扑
Sequential
顺序
B₁ → B₂ → … → Bₙ
VGG 各阶段、GPT 主干
Parallel
并行
x → B₁ ⊕ B₂ ⊕ B₃
Inception Module、多头注意力
Skip
跳跃
y = F(x) + x
ResBlock、Transformer AddNorm
自相似性:递推定义
M(x) = B_N ∘ B_{N−1} ∘ … ∘ B_1(x)
B_i(x) = ℓ_k ∘ … ∘ ℓ_1(x) + skip(x)
ℓ(x) = σ( W x + b ) , W, b ∈ θ
每一层都可以被当作"更小的模型";每一个模型都可以被当作"更大的块"。层次之间没有本质不同,只有粒度之分。
用一张结构图来展示这些关系。图里有三条主线,顺着读下来会比较清楚。
纵向:抽象阶梯。 从 θ(参数)到 ℓ(层)到 B(块)到 M(模型),是一条单向的”拥有/组合/堆叠”关系链。每往上一级,粒度变粗,表达能力变强,但接口不变——对外都是 forward(x) → y 这一个动作。CNN 和 Transformer 只是在每一级填了不同的名字,结构是完全同构的。
横向:同一层级内的三种拓扑。 块之间(以及层之间)的组合方式只有三种:顺序(Sequential,输出串行往下传)、并行(Parallel,同一个输入喂给多路,输出拼/加在一起)、跳跃(Skip,绕过某些变换把输入直接加回来)。VGG 纯顺序,Inception 是并行,ResNet 和 Transformer 的 AddNorm 是跳跃。现实的网络就是这三种拓扑的嵌套组合。
底部:自相似性的数学形式。 最底下三行递推式是整个体系的核心——模型是块的复合,块是层的复合加上可选的跳跃连接,层是参数的仿射变换加激活。这个递推可以在任意层级展开:可以把 ResNet 整个当作一个块嵌进更大的架构,也可以把一个 Linear 层当作退化的”零层块”。层次之间没有本质不同,只有粒度之分。
深度学习的基本结构:层,块,组件,网络
https://biscuit0613.github.io/posts/ml/basicstructure/