假设你要教电脑认出照片里的猫。最直接的想法是写规则:有尖耳朵、有胡须、有四条腿……可规则永远写不完:猫蜷成一团时看不见腿,侧脸时只露一只耳朵,而狐狸同样有尖耳朵和胡须。三岁小孩却不需要规则,看过几十只猫之后,自然就认得了。
神经网络走的正是「小孩」这条路:不靠人写规则,而是看大量例子,自己一点点调整内部成千上万个「旋钮」,直到答对为止。这一节我们从最小的零件——一个神经元——讲起,一直讲到「学习」这件事在机器里到底是怎么发生的。
一个神经元:会加权打分的小开关
先别急着联想大脑,把神经元想成一个「打分器」就够了。它只做三件事:
- 接收几个输入数字;
- 每个输入乘上一个「权重」,全部加起来,再加上一个「偏置」;
- 把总分送进一个「激活函数」,决定最终输出多少。
举个生活里的例子:你在纠结周末去不去爬山。
天气晴朗 (1) ──×(+3)──┐
朋友同去 (1) ──×(+2)──┼──► 加总 + 偏置(-2) ──► 激活函数 ──► 去 / 不去
腿还酸着 (0) ──×(-4)──┘总分 = 3×1 + 2×1 + (−4)×0 − 2 = 3,大于 0,决定「去」。如果腿还酸着(这个输入变成 1),总分就成了 3 + 2 − 4 − 2 = −1,结果变成「不去」。
这几个数字各有含义:
- 权重表示「这个因素有多重要、往哪个方向推」。+3 说明好天气很加分,−4 说明腿酸几乎是一票否决。
- 偏置像你的「默认倾向」:什么都不考虑时,你本来就更想待在家。
- 激活函数负责把总分变成输出。其中最简单也很常用的一种叫 ReLU,规则简单到离谱:负数一律变成 0,正数原样输出。
为什么非要有激活函数?因为如果每一层都只是「乘一乘、加一加」,不管叠多少层,效果都等同于一层——就像把好几块平板玻璃叠在一起,看出去仍然是平的。激活函数给网络加上了「弯折」,它才能表达复杂的、拐弯的规律。
从一个到亿万个:深度网络
一个神经元只能做很简单的判断。把许多神经元排成一层,再把很多层串起来,前一层的输出当作后一层的输入,就成了「深度神经网络」。所谓「深度」,说的就是层数多。
输入层 隐藏层 1 隐藏层 2 输出层
(像素) ──► (边缘、颜色) ──► (眼睛、耳朵等部件) ──► (猫 / 狗)在图像识别网络里,研究者观察到一种大致的分工:靠前的层对边缘、颜色这类简单图案有反应,中间的层对纹理、眼睛、耳朵这样的局部结构有反应,靠后的层才对应「猫」「狗」这样的整体概念。没有人规定它这样分工,这是训练过程中自己形成的。
网络里所有权重和偏置的总数,就是常说的「参数量」。今天的大语言模型参数从数十亿到数千亿不等,有的还更多,说白了,就是数量惊人的「旋钮」。
注意:「神经网络」只是受大脑启发起的名字,它的计算方式和真实大脑差别很大。别把它理解成「电脑里造了一个大脑」。
「学习」到底是什么:损失与梯度下降
刚搭好的网络,权重全是随机数,输出基本靠蒙。所谓「学习」,就是把这些随机旋钮拧到合适的位置。怎么拧?分三步。
第一步,算差距。 给网络看一张猫的照片,它说「70% 是狗」。我们用一个叫「损失函数」的公式算出它错得有多离谱:错得越多,损失越大。学习的目标只有一个——让损失尽量小。
第二步,找方向。 想象你被蒙着眼睛站在山坡上,目标是走到谷底(损失最低的地方)。你看不见全貌,但能用脚感受到哪边是下坡。这个「坡度」在数学上叫梯度:它告诉你每个旋钮往哪个方向拧,损失下降得最快。
第三步,迈一小步,然后重复。 沿着下坡方向走一步,再感受坡度,再走一步……这就是梯度下降。写成一句话公式是:
新权重 = 旧权重 − 学习率 × 梯度
翻译成大白话:朝着让错误变少的方向挪一小步,「学习率」决定这一步迈多大。
学习率的大小很讲究:
| 学习率 | 像什么 | 结果 |
|---|---|---|
| 太大 | 下山时大步乱跳 | 容易跳过谷底,在两侧来回晃,甚至越跳越高 |
| 太小 | 每次只挪一厘米 | 方向没错,但要走到天荒地老 |
| 合适 | 稳步下坡,快到底时放慢 | 又快又稳地接近谷底 |
实际训练时,模型不会每看一个例子就调一次,也不会看完全部数据才调一次,而是每次取一小批(几十到几百个例子),算出平均坡度再迈一步。全部数据完整过一遍叫「一轮」,通常要训练很多轮。
反向传播:把「锅」一层层分下去
问题来了:一个网络有成千上万个旋钮,最后的输出错了,该怪谁?各怪多少?这就是反向传播要回答的问题。
打个比方。餐厅里一道菜被顾客投诉太咸。店长先问最后掌勺的厨师,厨师说:我盐放得不多,但配菜师傅给的酱汁本身就咸。于是责任往前分到配菜师傅,再追到酱汁配方……每个人分到的「锅」,和他对「咸」这个结果的影响大小成正比。追完一圈,每个人都知道下次该怎么改、改多少。
反向传播就是这样:从最终的误差出发,由输出层往输入层反向逐层计算「每个权重对误差贡献了多少」,也就是每个权重的梯度。有了梯度,梯度下降才知道每个旋钮该往哪拧。
它背后的数学叫「链式法则」,直觉上像一串咬合的齿轮:
齿轮 A 转 1 圈 ──► 齿轮 B 转 2 圈
齿轮 B 每转 1 圈 ──► 齿轮 C 转 3 圈
所以:A 转 1 圈,C 转 2 × 3 = 6 圈想知道最前面某个权重变动一点点,最终误差会变多少?把沿途每一层的「传动比」乘起来就行。反向传播的聪明之处在于从后往前一次算完,中间结果反复利用,不必对每个旋钮单独试一遍。正是这个高效的办法,让训练上亿参数的网络成为可能。
一次完整的训练循环可以概括为:
前向:输入 ──► 逐层计算 ──► 给出预测
比较:预测 vs 标准答案 ──► 得到损失
反向:损失 ──► 逐层分锅 ──► 每个权重的梯度
更新:每个权重沿下坡方向挪一小步
……重复成千上万次学会 ≠ 背会:过拟合与常见误解
训练还有一个大坑,叫过拟合。就像学生把练习册答案全背了下来,原题全对,换一套新题就懵。网络如果参数很多、数据又少,也会把训练数据里的偶然细节(比如几张猫照片恰好都铺着红地毯)当成规律记住。
所以训练时通常把数据分成三份:训练集用来学;验证集用来中途检查、调整设置;测试集留到最后考一次,事先绝不能让模型见到。如果训练集上越学越好,验证集上反而开始变差,就说明它在「死记硬背」了。
最后澄清几个常见误解:
| 常见说法 | 更准确的理解 |
|---|---|
| 神经网络像人脑一样思考 | 只是借用了「神经元」这个比喻,计算方式完全不同 |
| 某条知识存在某个特定权重里 | 知识通常分散在大量权重的组合中,很难指着一个说「就是它」 |
| 训练就是把数据存进模型 | 训练是调权重去拟合规律,不是建数据库;不过反复出现的原文确实可能被记住 |
| 网络越大一定越好 | 更大的网络需要更多数据和算力,数据不够时反而更容易过拟合 |
神经元、层、损失、梯度下降、反向传播——这一整套就是今天所有大模型的地基。下一节我们会看到,大模型在这套地基之上搭了一种特别的结构,叫 Transformer。
本节要点
- 一个神经元就是「输入乘权重、加总、过激活函数」的打分器,权重代表每个因素的重要程度和方向。
- 激活函数给网络加入「弯折」,多层叠加才能表达复杂规律;深度网络会自己形成由简单到抽象的分层特征。
- 「学习」就是调权重让损失变小:梯度指出下坡方向,梯度下降每次迈一小步,学习率决定步子大小。
- 反向传播从误差出发、由后往前逐层分摊责任,高效算出每个权重该怎么调。
- 要用没见过的数据检验模型,防止过拟合,确认它学到的是规律而不是答案。
