从张量、参数、前向传播、loss、反向传播到 optimizer:补上 Transformer 之前那块最小但关键的深度学习地基
| 概念 | 直觉 | 在大模型里的对应 | 常见误解 |
|---|---|---|---|
| 参数 | 网络中可被训练改变的数字 | 模型权重,规模从百万到万亿级 | 以为参数就是知识条目,而不是统计压缩后的能力结构 |
| 特征 | 输入中对任务有用的模式 | 从低层 token 形态到高层语义、代码、推理模式 | 以为特征都需要人工手写 |
| 训练 | 让参数在大量样本上逐步减少错误 | 预训练、SFT、偏好优化、微调 | 以为训练是把答案存进去 |
| 泛化 | 没见过的样本也能做对 | 模型能迁移到新问题、新语言、新任务 | 以为训练集表现好就等于真实能力强 |
神经网络不是数据库。它通过大量样本调整参数,使输入到输出之间的映射在统计上更可靠;但这种可靠性永远受数据分布、目标函数、模型容量和评测口径约束。
| 层类型 | 它做什么 | 为什么重要 |
|---|---|---|
| Linear / Dense | 输入乘权重矩阵,再加偏置 | 最基础的可学习变换,很多复杂结构都含有它 |
| Activation | 加入非线性,如 ReLU、GELU、SiLU | 没有非线性,多层线性网络仍然等价于一层线性变换;LLM 里的 FFN / SwiGLU 见 MLP / FFN |
| Normalization | 稳定中间激活的尺度 | 让深层网络更容易训练,减少数值不稳定;LLM 里的 LayerNorm / RMSNorm 见 Norm / Residual |
| Dropout / Regularization | 训练时制造约束或噪声 | 降低过拟合,提升泛化能力 |
| 任务 | 常见 loss | 优化的是什么 | 风险 |
|---|---|---|---|
| 分类 | Cross Entropy | 把正确类别概率推高 | 类别不平衡、标签噪声会让模型学偏 |
| 回归 | MSE / MAE | 让预测数值接近真实值 | 平均误差小不代表关键样本安全 |
| 语言建模 | Next Token Cross Entropy | 预测下一个 token 的概率分布 | 预测流畅文本不等于事实正确或任务完成 |
| 偏好优化 | Pairwise / DPO / RLHF 相关目标 | 让模型更偏向人类选择的回答 | 可能过度迎合、拒答漂移或奖励模型失真 |
Loss 只会奖励被写进目标函数和训练数据里的东西。业务上真正关心的可靠性、合规、用户满意度和可解释性,通常需要额外评测、护栏和产品流程来补。更完整的代理目标失真问题可继续看 目标函数 / 奖励错配 / Goodhart。
| 组件 | 作用 | 工程观察 |
|---|---|---|
| Batch | 一次用一小批样本估计梯度 | 批量越大越稳定但更吃显存,小批量噪声更大 |
| Optimizer | 决定怎样用梯度更新参数 | SGD、Adam、AdamW 会影响收敛速度和泛化 |
| Scheduler | 随训练阶段调整学习率 | warmup、cosine decay 等策略影响大模型稳定性 |
| Checkpoint | 保存某个训练时刻的参数 | 用于恢复训练、比较版本和防止长任务损失 |
如果只记一个骨架,就记住这一轮:取数据、前向预测、算 loss、反向算梯度、优化器更新参数、验证泛化,再重复很多次。
for batch in data: 取一批样本;pred = model(batch.x) 前向传播;loss = loss_fn(pred, batch.y) 计算错误;loss.backward() 反向传播得到梯度;optimizer.step() 更新参数;optimizer.zero_grad() 清空旧梯度。
| 循环环节 | 你应该问什么 | 出问题时的第一反应 | 继续下钻 |
|---|---|---|---|
| 取数据 | 输入、标签、mask、长度和分布是否符合预期? | 先看样本,不要先调模型;很多训练问题其实是数据问题 | 预训练数据 / 数据污染 |
| 前向预测 | 输出形状、数值范围、概率分布是否合理? | 检查张量 shape、dtype、mask、padding 和特殊 token | Token / Attention / Transformer |
| 计算 loss | loss 是否真的对应任务目标?平均值是否掩盖关键样本? | 对少量样本手算或打印中间结果,确认标签和目标没有错位 | 优化器 / Loss / 稳定性 |
| 反向传播 | 梯度有没有传到该更新的参数?有没有 NaN、爆炸或全零? | 看 gradient norm、冻结参数、学习率和混合精度状态 | 训练稳定性 |
| 验证泛化 | 训练 loss 下降后,验证集、切片和真实任务是否也变好? | 不要只看训练集;尽早建立验证集、坏例集和任务级 Eval | 模型评测 / Eval |
| 你看到的信号 | 可能意味着什么 | 先检查什么 | 不要立刻做什么 |
|---|---|---|---|
| 训练 loss 不下降 | 学习率不合适、标签错位、参数没更新、loss 实现有问题 | 单 batch 过拟合实验、梯度是否非零、参数是否变化、标签是否对齐 | 不要马上加大模型或换架构 |
| 训练 loss 降,验证指标不动 | 目标函数和评测任务错位,或模型只学到训练分布捷径 | 验证集切片、任务样例、数据泄漏、指标口径 | 不要只继续训更久 |
| 训练好、线上差 | 生产分布漂移、长尾场景缺失、输入上下文和训练数据不一致 | 线上样本、用户分群、坏例回流、OOD 监控 | 不要只相信离线 benchmark |
| loss 突然 NaN | 数值溢出、坏 batch、梯度爆炸、学习率过大 | 最近 checkpoint、异常 batch、gradient norm、混合精度配置 | 不要从头重训之前不保存证据 |
| 指标在少数任务上退化 | 灾难性遗忘、数据配比变化、偏好目标过强 | 分任务 eval、训练数据混合比例、版本对比 | 不要只看总分上涨 |
这一页帮你知道训练日志在讲什么;如果要继续处理学习率、batch、optimizer、warmup、NaN、梯度裁剪和 mixed precision 等细节,再进入 优化器、损失函数与训练稳定性。
| 现象 | 表现 | 常见原因 | 治理方向 |
|---|---|---|---|
| 欠拟合 | 训练集和验证集都表现差 | 模型太小、训练不足、特征不够、目标不清 | 增加容量、训练更久、改数据和任务定义 |
| 过拟合 | 训练集好,验证集差 | 记住样本噪声,不能泛化 | 正则化、数据增强、早停、更多高质量数据 |
| 分布外失败 | 常规样本好,长尾场景崩 | 训练数据没覆盖真实边界 | 坏例回流、切片评测、灰度监控 |
| 指标虚高 | Benchmark 高,业务效果差 | 数据污染、题库过拟合、评分口径不对 | 隐藏集、线上 A/B、任务级 Eval |
大模型的能力不是“把所有知识背下来”这么简单。它既会记忆,也会泛化,还会受训练分布、后训练目标和评测污染影响。理解过拟合与泛化,才能理解为什么榜单分数、真实业务效果和安全边界经常不一致。
神经网络基础最终要落到一次训练闭环:样本、前向、loss、反向、参数更新和验证结果必须能彼此对齐。
| 证据节点 | 必须记录字段 | 用来排查什么 |
|---|---|---|
| sample_batch | batch_id、sample_ids、feature_shape、label_shape、data_version | 输入、标签和数据版本是否匹配 |
| forward_loss | model_version、output_shape、loss_name、loss_value、mask_policy | 前向输出和 loss 是否真的对应任务目标 |
| backward_update | optimizer_version、learning_rate、grad_norm、updated_param_count、nan_inf_flag | 梯度是否传到该更新的参数,数值是否稳定 |
| generalization_check | train_metric、validation_metric、slice_eval_id、overfit_signal | 训练集提升是否能泛化到验证集和真实切片 |
| 神经网络底座 | Transformer 中的对应 | 继续下钻 |
|---|---|---|
| 张量和矩阵乘法 | Embedding、QKV 投影、MLP、输出头 | Token / Attention / Transformer |
| 非线性与多层表示 | Transformer Block 堆叠形成深层特征 | Transformer Block |
| Loss 与 next token prediction | 语言模型训练目标 | 训练 / 推理 / Scaling |
| 梯度和 optimizer | 预训练、SFT、LoRA、DPO 都依赖参数更新 | 微调 / 对齐 |
| 泛化和评测 | 能力边界、幻觉、Benchmark 和业务 Eval | 模型评测 / Eval |
如果说 Transformer 页解释现代大模型的结构,那么这一页解释神经网络为什么能通过数据和梯度被训练出来。先补这块,再看训练、推理、Scaling、微调和评测,会少很多悬空概念。