← aipaipai.cloud · INDEX
01 输入 02 注意力 03 积木 04 架构 05 训练 06 现代
DOCS // INTERACTIVE SERIES 03/06

Block://
基础积木块

单头注意力太单薄。把多头注意力、前馈网络、归一化、残差四块积木拼起来,就是一个 Transformer Block。 教学性模拟--可视化均为确定性示意,用以理解原理,非真实模型输出。

BLOCK_READY UNIT: TRANSFORMER_BLOCK SLUG: transformer-block STATUS: LOCAL_ONLY

00 四块积木

一个 Block = 注意力 + 前馈 + 归一化 + 残差。每块解决一个特定问题。

① 多头注意力

让序列互相关注。多头=多个关注视角同时进行。

② 前馈 FFN

逐位置的两层 MLP。模型记忆知识主要在这。

③ 归一化 Norm

把数值拉回稳定区间,防训练发散

④ 残差 Residual

加一条旁路:x + f(x)让深网络能训

01 多头注意力 · MULTI-HEAD

把 Q/K/V 切成多份,每份独立做注意力。点下面的头看它关注什么。

句子 the cat sat on the mat

头数 HEADS(点选激活/关闭)

每个头的注意力(同一句话,关注点不同)

6 个头用 6 种颜色。一个头可能盯着「主语-谓语」,另一个盯「形容词-名词」,还有的只看相邻词。多头 = 多视角并行,最后拼回来。单头表达不了这么丰富的关系。

02 前馈网络 · FFN

注意力的输出再过一遍「升维 -> 激活 -> 降维」的两层 MLP。

x [d_model] -> 升维 4x [4·d_model] -> 激活 GELU -> 降维 [d_model]

为什么要先升到 4 倍再降回来?升维 = 投影到更高维空间,在那里更容易做「非线性切分」(靠激活函数),再降回原维度。d_ff = 4 · d_model 是经典比例。FFN 是逐位置的:每个 token 独立过同一个 MLP,不跨 token。模型的大部分参数和「知识」都堆在 FFN 里。

03 归一化 · NORM

每层的数值幅度会漂,Norm 把它拉回稳定区。两种摆法。

POST-NORM · 2017 原版

先算子层(注意力/FFN)+ 残差,归一化:Norm(x + Sublayer(x))。深层训练不稳,需要 warmup 小心调。

out = Norm( x + Sublayer(x) )
PRE-NORM · GPT/Llama 都用

先归一化进子层:x + Sublayer(Norm(x))。残差通路是「干净」的恒等映射,梯度能一路直通到底--深层也稳,所以现代大模型全用这个。

out = x + Sublayer( Norm(x) )

归一化算的是 LayerNorm(按一个 token 的所有维度求均值方差再归一)。现代 LLM 多用它的简化版 RMSNorm(只去均值不动方差,更快)--见第 6 篇。

04 残差连接 · RESIDUAL

给每层加一条「跨层旁路」,让信息能直达深处。

out = x + f(x)   // 而不是 f(x)

如果没有残差,信号每过一层都被「改造」一次,几十层下去最初的输入早被冲没了,梯度也传不回来(梯度消失)。残差把输入原样加回来,相当于让网络学「在原基础上改多少」(残差),而不是从头重建。哪怕某层 f 学到接近 0,信息照样能绕过它直达后面--深网络才训得动。Transformer 每个子层都有一条残差。

残差 = 「学增量」而非「学全量」

假设理想的输出是 H(x)。直接学 H(x) 很难;学残差 F(x) = H(x) - x,再算 x + F(x),等于让网络只需关注「还差多少」。最坏情况 F(x)≈0,输出≈输入,至少不比原来差。这种「可跳过」的结构是 ResNet 能训上百层、Transformer 能堆几十层的关键。

05 激活函数 · ACTIVATION

FFN 中间的非线性。演进路径:ReLU -> GELU -> SwiGLU。

ReLUmax(0,x) · 负数全砍 0
GELU平滑版 ReLU · GPT/BERT 用
SwiGLU带门控 · Llama/Qwen 用 · 详见第 6 篇

06 拼装一个 BLOCK

把四块积木按 pre-norm 顺序串起来。点 RUN 看数据流过。

input x "hello"
NORM MHA +RESIDUAL NORM FFN +RESIDUAL // idle
1NORM1
x1 = Norm(x)
2MHA · 多头注意力
a = MHA(x1)  // 序列内互相关注
3+ 残差
x' = x + a  // 旁路加回
4NORM2
x2 = Norm(x')
5FFN · 前馈
f = FFN(x2)  // 升维·激活·降维
6+ 残差 · 输出
out = x' + f  // 一个 Block 完成

这就是一个完整的 Transformer Block。下一篇把它堆 N 层,配上 embedding,就是完整的模型骨架。

07 概念速查

术语一句话
多头注意力Q/K/V 切多份并行做注意力,多视角
FFN逐位置两层 MLP(升 4 倍·激活·降回),存知识
d_ffFFN 中间层维度,通常 = 4·d_model
LayerNorm按 token 的各维度归一,稳定数值
pre-norm先 Norm 再进子层,残差通路干净,深层稳定
残差x+f(x),学增量、通梯度,深网络能训
BlockNorm+MHA+残差+Norm+FFN+残差,叠 N 层成模型
NEXT · 04/06

整体架构组装

一个 Block 变成 N 层模型。三种架构之争,外加一个参数量计算器。

下一篇 · 架构 ->