本节摘要:本节从 1950 年代末 Rosenblatt 的感知机讲起:一个线性模型被异或难题击倒,又靠 1980 年代 Rumelhart、Hinton、Williams 重新搬出的反向传播起死回生,再等到 GPU、大数据与 ImageNet 竞赛才真正解冻。随后拆开神经元这只最小的齿轮,看清加权求和、偏置与激活函数如何凑成一次计算,前向传播、损失函数、反向传播与梯度下降如何首尾相接成学习闭环,最后走完一遍完整训练周期,正面初遇过拟合。
1950 年代末,美国学者 Frank Rosenblatt 造出了感知机。思路直白得近乎天真:模仿生物神经元,接收一批输入信号,给每路信号配一个可调的权重,加权求和之后超过门槛就亮灯输出 1,否则输出 0。靠着一排电位器和小灯泡,这台机器真能学会区分两类简单的图案,报纸一度把它宣传成"即将学会思考的机器"。
泼冷水的来得也快。1969 年前后,有学者在专著中给出严格证明:感知机本质上是一条直线,只能切开能用一条直线分开的数据;而异或这样连小学生都能判断的逻辑关系,四组输入偏偏摆成无法一刀两断的格局。证明一出,经费退潮,研究者转行,神经网络进了第一次 AI 寒冬的冰柜,一躺就是十几年。
转机出现在 1980 年代。Rumelhart、Hinton 和 Williams 等人重新发掘并系统阐述了反向传播算法:把预测误差从输出层逐层往回传,用链式法则算清每个权重该为错误负多少责任,再据此调整。多层网络从此可以训练,隐藏层不再只是图纸上的幻想,神经网络的第二个春天来了。可惜是个短春——当年的计算机跑不动稍深的网络,可用的数据也少得可怜,势头很快又被统计学习方法压了下去。
真正的解冻要等三股暖流同时到位:互联网送来海量数据,GPU 让并行算力价格大跌,Hinton 等人拿出无监督预训练、ReLU 激活函数等一揽子工艺改良。2012 年前后,深度神经网络在 ImageNet 大规模图像识别竞赛中把错误率大幅甩开同行,几年后 AlphaGo 战胜人类围棋冠军,这门被冷落了半个世纪的旧学问,一跃站上人工智能的中心舞台。
💡 关键直觉:把这段历史想成采煤。煤层一直在那里,对应神经网络的思想;1950 年代的手工镐和单人矿灯,对应当时的算力与数据,怎么挖也挖不出产量。GPU 与大数据等于大型掘进机加上整列照明车队——矿还是那座矿,产能完全换了一个量级。技术解冻,靠的往往不是新矿脉,而是新采掘能力。
| 时期 | 关键事件 | 推力或阻力 |
|---|---|---|
| 1950 年代末 | Rosenblatt 提出感知机 | 生物神经元启发,线性可分问题可学 |
| 1969 年前后 | 异或难题被证明无解 | 单层线性模型撞上天花板,经费退潮,进入第一次 AI 寒冬 |
| 1980 年代 | Rumelhart、Hinton、Williams 搬出反向传播 | 多层网络可训练,但算力与数据两缺,再度蛰伏 |
| 2000 年代起 | 大数据、GPU、无监督预训练、ReLU 汇合 | ImageNet 竞赛引爆视觉,AlphaGo 出圈 |
| 2017 年至今 | Transformer 与预训练接棒 | 序列建模全面并行化,详见本章后两节 |
顺手拆掉一个流传很广的误解:深度学习并不是 2012 年凭空冒出的新发明。感知机和反向传播都是半个世纪前的旧零件,新的只是燃料——算力与数据。分不清这一点,容易高估算法本身的新鲜度,低估工程条件的决定作用。
最后摆正三层的套盒关系:人工智能是最大的圆,机器学习是其中一个子集,深度学习又是机器学习的子集。深度学习对机器学习的真正增量在于:传统方法依赖人工设计特征,工程师先把原始数据加工成好认的指标,模型只学最后一步判决;深度学习把"提特征"这活也交给网络自己干,层层自动抽象。回顾第 2 章讲过的特征工程,在这里被网络内部消化掉了——这正是它被历史选中的原因之一。
一只人工神经元的计算只有两拍。第一拍,加权求和:每个输入乘上自己的权重,全部加起来,再补上一个偏置。用中文写出来就是——加权和等于各输入与对应权重乘积的总和,再加偏置。权重表达"这条输入有多重要",偏置则像一道激活门槛,决定神经元多容易被点亮;两者都是网络要在训练中学出来的参数。第二拍,激活函数:把加权和压一道非线性变换,产出这只神经元的输出。
| 部件 | 角色 | 类比 |
|---|---|---|
| 输入 | 来自上一层或原始数据 | 送进车间的原料 |
| 权重 | 每条连接的可调强度,训练中学习 | 车间里各原料的配比 |
| 偏置 | 平移激活门槛的可调常数 | 决定开工线的高低 |
| 激活函数 | 引入非线性的变换 | 决定产物形态的模具 |
为什么要费这个劲引入非线性?如果只有加权求和,一百层网络叠起来仍等价于一层线性变换,连一条弯的曲线都拟合不了,更别说图像和语言。常见的激活函数有三员老将:Sigmoid 把任意实数压进 0 到 1,性格温和,常驻二分类问题的输出端;ReLU 极简,负数一律归零、正数原样放行,计算量小又不易梯度消失,是隐藏层的主力;Softmax 把一组分数整队成一个总和为 1 的概率分布,专门服务多分类的输出端。
单只神经元成不了气候,它们分层接线。输入层只负责接收原始数据,不做计算;隐藏层夹在中间,承担绝大部分特征加工,层数越深抽象越高;输出层按任务定型——二分类常配一只 Sigmoid 神经元,多分类配一组 Softmax 神经元,回归预测连续数值则可以不加非线性变换直接出数。
💡 关键直觉:深度不是噱头,是逐级提纯。浅层神经元认的是边缘、色块这类"岩屑",中层拼成纹理和部件,深层才形成"这是一只猫"的"矿脉"判断。地质队员不会直接看到金矿,他们先看岩屑与构造,一层层圈定靶区——深网做的事如出一辙。
结构搭好,先看数据怎么流。前向传播就是预测的旅程:原始输入进入输入层,每只神经元做一遍加权求和与激活,算出的输出变成下一层的输入,逐层推进,直到输出层给出预测值。整个过程没有任何学习发生,只是一台待调的机器转了一圈。
拿个能心算的小例子。假设预测房价,输入是归一化后的面积 0.8 和房龄 0.2。隐藏层某只神经元的权重分别是 0.5 和 0.3,偏置 0.1,加权和就是 0.8 乘 0.5 加上 0.2 乘 0.3 再加 0.1,得 0.56;ReLU 见是正数原样放行。输出层拿 0.56 乘 1.2 得预测 0.67,对应 67 万。真实成交价 70 万,差了 3 万——接下来就该学习机制登场了。
衡量差距需要一把尺,这就是损失函数,也叫成本函数或目标函数。损失越大,预测离真实越远;训练的目标就是把损失压小。任务不同,尺子也不同:回归问题常用均方误差,把每个样本的误差平方后取平均,误差翻倍、惩罚翻四倍,专治大偏差;分类问题常用交叉熵,衡量预测的概率分布与真实标签之间的差异——模型把概率压在错误类别上时,交叉熵会给出陡峭的惩罚,把模型往正确方向狠推。原始二分类与多分类各有一个交叉熵变体,3.3 节还会细讲选型。
知道了差多少,还得知道该怪谁。反向传播就是"问责"算法:从输出层起,把损失对每个权重和偏置的偏导数逐层往回算。链式法则是它的发动机——上层误差如何影响中层输出、中层输出又如何牵动某条连接的权重,一层层乘回去,就得到每个参数的梯度。梯度指明了"参数朝哪个方向动、损失会降"。有了梯度,梯度下降登场:让每个参数沿梯度的反方向挪一小步,公式用中文说就是——新权重等于旧权重减去学习率乘以梯度。
⚠️ 常见坑一:学习率不是越大学得越快。步子迈太大,参数在山谷两壁间来回弹跳甚至越跳越高,损失不降反升;步子太小,训练慢到怀疑人生。它是最需要优先校准的超参数。常见坑二:损失函数选错方向全错——回归任务硬套交叉熵、分类输出端忘了配 Softmax,模型再深也学不出名堂。
把闭环放进工程流程,一次完整训练大致如此。第一步,数据准备:清洗缺失与异常,把特征归一化或标准化到相近范围,加快收敛也提高稳定性;随后把数据切成三份——训练集负责更新参数,验证集在训练中定期体检、供人调整超参数,测试集只在最后考一次,估计泛化能力。第二步,随机初始化权重与偏置。为什么必须随机?如果所有权重相同,同层每只神经元收到的梯度也相同,学到的东西一模一样,等于白养一群复读机——随机化是为了打破对称性,让神经元各学各的特征。
第三步,迭代训练。一轮(一个 epoch)指全部训练样本完整过一遍网络;实际执行时按批喂入,每批做一次前向、算损失、反向、更新。每轮结束在验证集上量一次指标,观察曲线走势。第四步,收尾评估与超参数调整:学习率、隐藏层数、每层神经元数、批大小这些训练前就要人手设定的量叫超参数,它们和参数(权重、偏置)的分工必须分清——参数是机器自己学的,超参数是人给机器定的规矩。
训练全程要盯一对老毛病。欠拟合:训练集和测试集都考得差,说明模型太浅太笨,规律没吃透。过拟合:训练集分数漂亮,测试集一落千丈,说明模型把训练数据里的噪声和特有细节当成了规律,等于学生把习题册答案背得滚瓜烂熟,换套新卷子当场露馅。解法先列清单:增加训练数据、加 L1 或 L2 正则化、上 Dropout、早停、简化模型结构——每味药的用法,3.3 节逐一开方。
⚠️ 常见坑:反复用测试集调参。测试集一旦被拿来指导选择,就等于考前透题,报出的成绩必然虚高。调参只许碰验证集,测试集留到最后一次性使用,这是铁律。
齿轮已经转动,单机可以学习。可一台真正干活的机器,还得长成适合数据的形状——图像的网格、文本的序列,各自逼出了什么样的架构?下一节看三大结构如何接力登场。