把散落各课的名词收在一处。核心洞察(来自讨论):整个系统像程序一样分配置 / 编译时 / 运行时三段。
| 阶段 | 类比 | 谁定 / 何时定 | 例子 |
|---|---|---|---|
| 配置 | 编译参数 / config | 人在训练前手动设 | 超参数:d_model(512)、头数 h(8)、层数 N、学习率 |
| 编译时 | 编译进二进制的常量 | 训练学出来 → 之后冻结,存在权重文件 | 参数:embedding 表、W_Q/W_K/W_V、W_O、γ/β |
| 运行时 | 一次函数调用的临时变量 | 每次输入现算,不存模型 | token id、词向量、hidden state、Q/K/V、注意力权重、各层激活 |
⚠️ 最易混的一处:embedding 表(编译时·固定参数)≠ 从表里取出并被各层加工的词向量 / hidden state(运行时·随输入变)。
类比:表 = 固定的座位表;流动的向量 = 每次进来的人。
| 模型参数 (parameters/weights) | 超参数 (hyperparameters) | |
|---|---|---|
| 谁 | γ、β、W_Q/K/V、W_O、embedding 表… | 学习率、层数 N、头数 h、d_model… |
| 谁定 | 训练自动学(梯度下降) | 人手动设(训练前) |
| 数量 | 亿万个 | 几十个 |
| 口语"调参" | ❌ 一般不指这个 | ✅ 通常指这个(炼丹) |
参数 = 机器学的 · 超参数 = 人设的
"权重(weight)"这个词在两个完全不同的地方出现,是常见困惑源:
| 模型权重 / 参数 | 注意力权重 | |
|---|---|---|
| 英文 | weights / parameters | attention weights |
| 是什么 | W_Q/K/V、W_O、W₁/W₂、γ/β… 学出来的矩阵 | softmax 出来的"该关注每个词多少"的分配比例(和为1) |
| 变不变 | 训练后固定(编译时) | 每次输入都变(运行时) |
| 类比 | 几 GB 权重文件里的内容 | 一次计算的临时中间产物 |
同名不同物:模型权重(W)固定 · 注意力权重每次现算
注:weights ≈ parameters(日常通用);严格分:W=weights、b=bias,合称 parameters。
| 名词 | 指什么 | 阶段 |
|---|---|---|
| token | 文本切出的片段(≠单词,可能是 subword) | — |
| token id | 该片段在词表里的行号(整数) | 运行时 |
| embedding 表 (E) | 那张 [vocab × d_model] 大查找表 | 编译时 |
| 词向量 / input embedding | 查表取出的初始向量(还没被上下文加工) | 运行时·起点 |
| hidden state (隐藏状态) | 经过若干层加工后的向量(含上下文);每层输出一个 | 运行时 |
| d_model | 每个向量的维度(如 512)= 主干统一宽度 | 配置 |
| N(序列长度) | 这句话有几个 token | 运行时 |
| Q / K / V | 一个词经 W_Q/K/V 投影出的三个角色向量 | 运行时 |
| W_Q/W_K/W_V, W_O | 注意力的投影矩阵(学出来的) | 编译时 |
| γ / β | LayerNorm 的缩放/平移参数(学出来的) | 编译时 |
| parameters | 训练学的所有数(= 几 GB 权重文件) | 编译时 |
| hyperparameters | 人设的:d_model、h、N层、学习率… | 配置 |
| skip connection | 残差里把 x 原样搬到输出的"捷径" | 结构 |
token → id → 查表得词向量 → 逐层加工成 hidden state → 预测下一个词