第 2 章 · 地基之二(全书最重要的一章)
神经网络如何学习:训练的本质
上一章说了"学习=调参"。这一章讲透三件事:损失函数(差多远)、梯度下降(怎么调)、反向传播(错误怎么分摊)。这是理解一切深度学习(包括 Transformer)的钥匙,请务必耐心。
2.1 训练的三要素
一次完整的训练需要三样东西,缺一不可:
图 2-1 数据是教材,损失函数是考卷,优化算法是学习方法
数学上,损失函数写作 L(θ):θ 代表模型全部参数。训练就是在"参数空间"里找一个 θ,让 L 最小。这句话值得刻下来:训练 = 最小化损失函数的优化问题。你大学学过的"求极值"思想在这里复活了——只不过参数有几千亿个,没法求导解方程,只能一步一步"走"下去。
2.2 损失函数:预测和真相差多远
损失函数就是一把"误差尺子"。最直观的一种叫均方误差(MSE):把每个样本的(预测值 − 真实值)平方,再取平均。
假设模型预测明天光伏出力 850 MW,实际 800 MW:
单样本误差 = (850 − 800)² = 2500。平方的意义:① 正负误差不抵消 ② 大误差被放大惩罚——这和你做负荷预测考核"偏差率"的平方惩罚逻辑一模一样。
把所有样本的平方误差加起来取平均,就是整个模型的"平均偏差分":分数越低,模型越好。
分类任务(比如"是否违章")通常换一把尺子:交叉熵(cross-entropy)。直觉上它惩罚的是"自信地答错"——模型说有 99% 把握是违章,结果不是,这把尺子会狠狠扣分;而模棱两可的答错扣分轻。详细公式在附录 B.1,这里记住:分类用交叉熵,回归用均方误差,都是"越小越好"的尺子。
2.3 梯度下降:蒙眼下山
有了尺子(损失函数),怎么调参数?答案是梯度下降(gradient descent)——AI 世界最重要的算法,没有之一。
想象你被蒙住眼睛,站在一座大山(损失曲面)上,任务是在天黑前走到最低点(损失最小)。你脚下能感觉到的只有:
① 哪边是下坡(这一步往哪个方向走,损失会变小)——这就是"梯度"的方向;
② 迈多大的步子——这就是"学习率";
③ 走完一步,重新感觉坡度,再走下一步——这就是"迭代"。
一步一个脚印,反复走,最终就到谷底了。唯一的问题是别迈太大步(跨过谷底又上坡),也别太小步(天黑都走不到)。
图 2-2 梯度下降:每一步都朝着"损失下降最快的方向"移动一小步,反复迭代直到谷底
用数学说:参数更新公式为 θ ← θ − η·∇L(θ)。逐项翻译:
- ∇L(θ):梯度——损失函数对每个参数的偏导数组成的向量,指向"损失上升最快的方向"。所以取负号 ∇ 的方向走,就是下山方向。
- η(学习率 learning rate):步子大小。太大→在谷底附近来回震荡下不去;太小→训练慢如蜗牛。
- ←:每走一步就更新一次参数,重复上万步。
潮流计算里,你没法直接解出节点电压,就猜一组初值,反复用修正方程逼近,直到收敛。梯度下降一模一样:猜初始参数 → 算修正量(梯度)→ 更新 → 再算,直到损失收敛。你当年"迭代求解"的肌肉记忆,在这里直接复用。
2.4 反向传播:错误的责任分摊
梯度下降说要"顺着梯度调每个参数"——但一个大网络有几千亿参数,每个参数该往哪调、调多少,怎么算?这就是反向传播(backpropagation)干的事。
一条流水线:原料 → A 工序 → B 工序 → C 工序 → 成品。质检发现成品不合格(损失很大)。
责任怎么定?从后往前倒推:C 工序先检讨自己(我的输出误差多少),再判断"我的误差里,有多少是我自己的问题、有多少是上游 B 传给我的";B 再照样往上游推……
每一道工序都领到一份"责任份额",然后各自调整自己的参数。这就是反向传播:从输出端的误差出发,一层层往回,把责任(梯度)分摊给每个参数。
图 2-3 正向传播出预测,反向传播摊责任。数学上靠"链式法则"(附录 B.4)保证每一层领到的份额算得准
你不需要会算链式法则——那是附录 B.4 的事。你需要记住的:反向传播让"每层每个参数该往哪调"变得可计算,梯度下降据此更新,二者配合完成一次"学习步"。GPT 的预训练,就是把这两个机制在几千亿参数上反复跑。
2.5 训练全景:批次、轮次、学习率
实际训练时几个常见词的直觉(配合代码示例 02 看效果更佳):
- 批次(batch):一次不把全部数据塞进去,而是一次看一小批(如 32 条),算一次梯度、更一次参数。原因:快、省内存,而且小批量的"噪声"反而帮助跳出局部坑。
- 轮次(epoch):把全部数据完整过一遍 = 1 个 epoch。大模型预训练通常要跑几十万个"批次"。
- 学习率调度(scheduler):前期步子大点快速下山,接近谷底时步子变小精细微调——就像下山时大跨步,到谷底附近小碎步。
2.6 验证集:模拟考防止死记硬背
第 1 章说过防过拟合。实操上把数据切成三份:
| 数据集 | 用途 | 类比 |
|---|---|---|
| 训练集(约 70–80%) | 用来调参数(练习) | 练习册 |
| 验证集(约 10–15%) | 训练过程中定期考一考,发现"开始背题了"就停手 | 平时模拟考 |
| 测试集(约 10–15%) | 全部训练结束后,只考一次,评估真实水平 | 最终大考(考完不许再看答案改) |
电力行业习惯:把"模型在测试集上的准确率"当验收指标,就好比把"新项目上线的实际表现"当最终考核——过程再漂亮,最终泛化才算数。
2.7 从"训练小网络"到"训练大模型"
你可能想问:ChatGPT 也是这么训练的吗?答案:骨架完全一样,玩法换了。
- 小网络:输入是特征,标签是人工标注的答案;
- 大语言模型:输入是一段文本,标签是"下一个词"——文本自己就是答案,不用人标!把互联网所有文字当练习册,让模型反复猜下一个词,猜错了就反向传播调参。这就是"预训练"。
- 训练完还不算完,还要"对齐"(RLHF 等),让模型学会好好说话——第 4、5 章细讲。
所以:第 2 章的机制 + 海量数据 + 巨大参数 = 大模型的底层引擎。你在这里打的地基,第 4 章会原封不动地复现。
2.8 本章小结
- 训练三要素:数据 + 损失函数 + 优化算法;训练 = 最小化损失;
- 损失函数:分类用交叉熵、回归用均方误差,"越小越好";
- 梯度下降:蒙眼下山——沿负梯度方向、以学习率为步长、反复迭代;
- 反向传播:责任分摊——误差从输出端逐层往回传,算出每个参数该调的方向和幅度;
- 用训练集练、验证集模拟考、测试集终考,防止过拟合。
我刚学完"梯度下降和反向传播",请: 1. 用"光伏功率预测"为例,讲一个完整的训练循环(损失→梯度→更新); 2. 解释学习率太大和太小分别会发生什么; 3. 出 2 道题考我:一道考梯度方向,一道考过拟合,先别给答案。
自测题:打开配套《自测题与思考题》做第 2 章 Q2.1–Q2.5。卡壳时翻附录 A.4(导数直觉)和 B.3、B.4(推导)。