SICI · 蕴灵宗 · 第八章

卷积神经网络 CNN · 筑基三层

你以为加层就能提升性能。从 LeNet 到 VGG 一路往深走,越深越强——直到你训练出 56 层网络,发现它比 20 层还差。不是过拟合,是退化。深度之壁在你面前凝成实体,你的优化器够不到那个解。

深度之壁低语:「再加一层。越深越好——我赌你会信。」
序章

观象初醒

卷积运算 1D/2D · 滑窗点积 · 参数对比

你从神经初醒之境的出口走出来。联结先师跟在你身后。面前悬浮着一张灰度图——28×28 的像素网格,每个格子是一个数字。一个巨大的权重矩阵浮现,数十亿个参数密密麻麻。联结先师指向那张图:「你的眼睛不是这么看东西的。」

注意力之塔,查询键值矩阵运算
联结先师 联结先师

「你学会了全连接,每个神经元看到所有输入。但世界不是一维的——你睁眼看见的是一张图,有行有列,有上下有左右。224×224 彩色图要 150,528 个输入,每个神经元连到所有像素。这行得通。但你的眼睛不这么看。」

深度之壁 深度之壁

「全连接怎么了?参数多一点而已,算力够就行。干嘛要换法子?」

卷积滑窗演示台 · 1D/2D 滑窗点积

拖动核滑过信号 → 看每个位置的点积输出 → 全连接参数对比

第一幕 · 自信→崩塌·前奏

滑窗殿 · 三大假设

局部连接 / 权值共享 / 平移不变性 + 填充步幅

殿内三根石柱,每根刻着一个词:局部。共享。不变。联结先师指向第一根柱:「全连接的问题——每个神经元看到所有输入。但图像的特征是局部的,一只猫的耳朵不会同时出现在图像的四个角落。」

联结先师 联结先师

「三大假设不是三个技巧,是一个信念:图像的特征是局部的、可平移的、可复用的。全连接不懂这个信念,所以它需要一亿个参数。卷积懂,所以它需要九个。再用填充和步幅控制输出尺寸。」

三大假设验证台 · 参数对比 + 权值共享 + 平移不变性 + 填充步幅

数参数 → 看权值共享 → 拖猫测平移不变性 → 调填充步幅看输出公式

局部连接

权值共享

平移不变性

填充 / 步幅实验台

第一幕 · 自信→崩塌

观象台 · 感受野与池化

感受野逐层计算 / 池化层对比 / 深度账本开立

观象台中央悬浮着一张巨大的 224×224 图像。你手持一个 3×3 卷积核,信心满满——「滑过去就行了。」联结先师问:「你的核一次看几个像素?」「九个。」「这张图几个像素?」「50,176 个。」「你一滑动就能看到全图吗?」你犹豫了。你开始堆层。但堆着堆着,一个声音从深处传来——低沉,像石壁在呼吸。「再加一层。」

联结先师 联结先师

「要看得远,就得堆得深——而深度,是有代价的。感受野随深度增长,池化层下采样减少计算量。但你堆了十层才看到 21 个像素。要看完整张 224 的图,需要堆到多少层?这个问题的答案,是这章的噩梦。」

感受野计算器 + 池化实验台 + 深度账本

逐层加卷积 → 看感受野方框在原图扩大 → 切换池化类型 → 账本开立

感受野逐层计算器

池化实验台 · 最大 / 平均 / 全局

第二幕 · 挣扎→再崩塌·前奏

灵图殿 · LeNet-5

第一个端到端 CNN / 架构搭建 / 前向传播 / 特征可视化

殿中悬浮着一台古旧的法器——1998 年的 LeNet-5。石板上浮现架构图:Input(32×32)→Conv1(5×5,6)→Pool→Conv2(5×5,16)→Pool→FC(120)→FC(84)→Output(10)。深度账本翻到第一页。联结先师问:「你知道它每一层学到了什么吗?」

联结先师 联结先师

「1998 年它就能识别手写数字。但它沉睡了十四年——那时候没有足够的数据、算力、技巧。它的同类要等到 2012 年才醒来。先搭架构,跑一遍前向传播,看它每层学到的特征。」

LeNet-5 架构搭建器 + 前向传播 + 特征可视化

拖入各层组件 → 逐步前向传播 → 看各层激活特征图

第二幕 · 挣扎

破壁殿 · AlexNet

ReLU / Dropout / GPU 三大突破

2012 年 9 月。ImageNet 大赛。联结先师指着一块石碑:「2011 年冠军,传统方法,Top-5 错误率 25.8%。2012 年,AlexNet 把它砸到 15.3%。砸了十个百分点,整个领域炸了。」AlexNet:5 卷积 + 3 全连接,8 层,6000 万参数。「它做了三件以前没人做过的事。」

联结先师 联结先师

「你在 ch06 见过梯度消失——ReLU 是你的第一把刀,它就是从这间殿里磨出来的。三大突破缺一不可:ReLU 解决梯度消失让深度可训,Dropout 解决过拟合让大模型不崩,GPU 解决算力让大规模训练可行。」

AlexNet 三大突破 · ReLU vs Sigmoid + Dropout + GPU

对比两种激活的梯度/损失 → 开关 Dropout → 拖算力滑块

ReLU vs Sigmoid 训练对比

Dropout 正则演示

GPU 算力滑块

第二幕 · 挣扎→再崩塌·前奏

叠核殿 · VGGNet

小卷积核堆叠 / VGG-16 / 1×1 卷积

殿中并排放着两个卷积核:一个 11×11,一个 3×3。联结先师:「AlexNet 第一层用了 11×11 的大核。2014 年 VGG 问——一个 11×11 核的感受野,用几个 3×3 核能替代?五个。但参数 121 vs 45,少了 63%。而且五个 3×3 有五层非线性,一个 11×11 只有一层。更深,更省,更强。」

联结先师 联结先师

「VGG 告诉你一个道理:深比宽好。与其用一个又大又笨的核,不如用几个又小又深的核。从此 CNN 的设计哲学变成——往深里走。还有个 1×1 卷积,它不碰空间,只在通道维度做线性组合。」

VGG · 大核 vs 小核堆叠 + VGG-16 搭建 + 1×1 卷积降维

对比大核与小核堆叠 → 搭 VGG-16 五段卷积 → 1×1 卷积降通道

1×1 卷积降维实验台

第二幕 · 挣扎

分形殿 · GoogLeNet

Inception 模块 / 多尺度并行 / 1×1 降维

殿中悬浮着一个十字形的结构——四个分支并排展开。联结先师:「VGG 往深走。但 Google 的人问了另一个问题——我们不确定这张图该用 1×1 看、3×3 看、还是 5×5 看。那就同时看。这就是 Inception 模块。」四个分支:1×1、1×1+3×3、1×1+5×5、3×3 池化,四路输出在通道维度拼接。

联结先师 联结先师

「网络自己决定哪一路有用,你不用猜。而且每一路先用 1×1 卷积降维——不然参数爆炸。GoogLeNet 用 22 层、500 万参数,超过了 VGG 的 16 层、1.38 亿参数。效率的胜利。」

Inception 模块搭建器 + 多尺度特征 + GoogLeNet 概览

搭四分支 → 开关 1×1 降维看参数 → 看多尺度特征 → GoogLeNet 架构

第二幕 · 挣扎·广度展开

视野殿 · CV 任务全景

分类 / 检测 / 分割 + 锚框 IoU NMS + FCN U-Net

殿中三面墙,各显一幅画面。左墙:一张猫的图,标注「分类:这是什么?」中墙:一张街景图,多个物体被框住,标注「检测:哪里有什么?」右墙:一张街景图,每个像素被涂色,标注「分割:每个像素属于什么?」联结先师:「你做的都是分类。但视觉任务不止分类。」

联结先师 联结先师

「分类只回答'是什么',检测回答'在哪里',分割回答'每个像素是什么'。CNN 不只是一个分类器——它是一个视觉特征提取器,接上不同的头就能做不同的任务。检测的核心是锚框+IoU+NMS,分割的核心是 U-Net 的跳跃连接。」

CV 三大任务 · 检测锚框/NMS + 分割 FCN/U-Net

看同一张图三种输出 → 铺锚框算 IoU 执行 NMS → FCN vs U-Net 跳跃连接

目标检测 · 锚框 + IoU + NMS

语义分割 · FCN vs U-Net

第二幕 · 挣扎→再崩塌

深壁殿 · 退化之壁

参数量 FLOPs / 退化实验 / 退化≠过拟合 / 注意力轻量化预览

殿中央是一面巨大的石壁——上面刻满了层数:7、8、16、19、22,越深误差越低。你信心满满刻上「34 层」,训练——误差更低。你刻上「56 层」,训练。深度账本翻到最关键的一页——56 层的训练误差,比 34 层更高。不是验证集。是训练集。石壁上那个声音不再低语了。它在你面前凝成一面墙。「你以为越深越强。56 层比 20 层还差。不是过拟合——你的训练集误差也高。这不是泛化问题。这是退化。」

深度之壁 深度之壁

「你想用更多正则化解决退化?翻开你的账本——训练误差本身就高。正则化是治过拟合的,治不了优化困难。你的优化器够不到那个解。」

退化实验台 · 参数量FLOPs + 20vs56层 + 退化过拟合辨析

算四个网络参数量FLOPs → 训练 20/56 层看曲线 → 辨析退化与过拟合

参数量 / FLOPs 计算器

退化实验 · 20 层 vs 56 层 plain 网络

退化 vs 过拟合辨析

第三幕 · 最高潮

Boss 战 · 深度之壁

三问对决 · 账本翻阅 · 残差连接 · 排除刻痕收网

石壁在你面前凝成一个巨人。灰色的石块堆叠成一张没有表情的脸。它开口了,声音像很多层石头在摩擦。「你以为更深的网络一定更强。但 56 层比 20 层还差。不是过拟合——是退化。你的优化器够不到那个解。三问。答对了,你过去。答错了,你的网络永远停在 22 层。」三道光门浮起。

深度之壁 深度之壁

「我住在你以为'越深越强'的信念里。我输给'学残差,不学映射'——恒等映射变成零映射,SGD 终于够得到。但你记住——我只退了一步,更深的墙在后面。」

退化债累计 0 笔 · 三问全对后清零

第三幕 · 收束

顿悟 · 残差之链

CNN 发展脉络拼图 / 深度账本回看 / 排除刻痕终览

石壁合拢后,地面上留着一道金色的线——残差连接的痕迹。它从网络的第一层直通最后一层,绕过了中间所有的退化。联结先师走到你身边:「回顾一下你走过的路。」一面墙亮了起来,上面刻着你这章的全部足迹:从卷积滑窗到三大假设,从感受野到池化,从 LeNet 到 AlexNet 到 VGG 到 GoogLeNet,从分类到检测到分割,从退化到残差。

联结先师 联结先师

「你搭的每一个架构都对。LeNet 证明可行、AlexNet 证明可大、VGG 证明可深、GoogLeNet 证明可宽。但 56 层打碎了一个信念——'越深越好'。残差连接修复了它——不是通过让网络变浅,而是通过给深路一条捷径。记住,它只退了一步。下一站,循环网络——世界不只有空间,还有时间。」

CNN 发展脉络拼图 · 18 知识点 + 深度账本 + 刻痕终览

拖 18 张知识卡到时间轴正确位置 → 看七组架构账本 → 五道刻痕终览