神经初醒
你以为加更多层就能学更复杂的函数。可梯度在反向传播中指数衰减,深层网络无法训练——梯度消失之渊在深层网络深处张口等你,每一层衰减都给你记着账。
神经初醒
你从概率之境的出口跌出来,脚下的地面变了质地——不再是冰冷的石板,而是一种微微弹性的、像活物表皮的东西。面前悬浮着一颗灰白色的、布满分叉枝条的细胞,像一棵倒长的树。它在搏动。八百六十亿颗,此刻在你脑中搏动。
「这是你身体里的东西。你想知道它怎么思考?先把它变成你能算的东西。树突、胞体、轴突、突触——拖到右侧的数学空位上。」
「生物即计算?呵。你以为把树突拖到'输入'就懂神经元了?先把胞体映对再说。」
生物神经元 → M-P 模型映射台
拖动四个生物结构到七个数学空位(胞体需映两处)→ 错误触发排除刻痕 → M-P 模型浮现
生物神经元结构
数学模型空位
感知机殿 · 线性之傲
殿内空旷,只有一张悬浮的二维平面,上面散落着红蓝两色光点。1958年,Rosenblatt 给了你第一台会学习的机器。规则很简单——画一条线,把红蓝分开。画对了它记住,画错了它调整。平面上浮现一行字:w ← w + η(y - ŷ)x。
「感知机不在对的时候骄傲,只在错的时候低头。但只要世界是线性可分的,它迟早能低头到正确的地方。你来当它的老师。」
感知机训练台 · AND/OR 逐样本更新
选数据集 → 逐样本更新 w,b → 看分类线移动 → 收敛计数
XOR 之殇 · 线性之限
还是那张平面,还是红蓝两色光点。但这次排布变了。(0,0) 是蓝。(1,1) 是蓝。(0,1) 是红。(1,0) 是红。对角线上是同色,你不可能用一条直线把它们分开。可你不信。你按下"训练"。分类线开始移动,向左,向右,翻转,再翻转。迭代次数从 10 跳到 100,跳到 1000。它不会收敛。
「再加一层。我来自深渊——我知道层数的力量。单层不行?加一层试试。」
「1969年 Minsky 用这一个例子,让神经网络沉睡了十五年。不是它太弱,是你还不知道怎么训练多层。先看多层怎么解 XOR。」
XOR 训练台 · 单层失败 + 多层解法
单层感知机训练 XOR(永不收敛)→ 拖直线证明不可分 → 多层解法演示
激活之钥 · 非线性觉醒
联结先师把你带到一面巨大的墙前。墙上挂着五把形状各异的钥匙。没有非线性,叠一百层等于一层——线性变换的复合还是线性变换,你的多层网络会塌成一条直线。五把钥匙依次亮起:Sigmoid、Tanh、ReLU、LeakyReLU、GELU。每把钥匙下面都刻着一行小字——是它的导数。深渊的低语又响了:"选吧。每一种都有塌的方式。"
「你选的不是钥匙,是锁链。导数越大,锁链越粗,梯度流得越远。但每一把都有断裂的地方。逐一测试,看它们的代价。」
激活函数试验台 · 5 函数 × 10 层 × 梯度连乘
选激活函数 → 看函数曲线+导数曲线 → 看 10 层梯度连乘 → 梯度账本记第一笔
10 层梯度连乘预演
万能近似殿 · 无所不能的幻象
殿中央悬浮着一个函数——一条剧烈震荡的曲线,像心电图。Cybenko 1989 年证明了一件事——只要你的隐藏层用了非多项式激活函数,哪怕只有一层,你就能以任意精度近似这条曲线。你拖动滑块,把隐藏层神经元数量从 1 拉到 10、50、100——曲线被一片片拼出来,越来越贴合。"够了,什么都能近似,一层就够。"但高斯老祖指着屏幕右下角一个数字——参数量。
「万能近似只说'能',不说'需要多少',也不说'怎么训练'。万能是真的,但'能'不等于'值得',更不等于'训得动'。」
万能近似滑块 + MLP 架构搭建 + 参数量计算
拖神经元数量滑块看拟合 → 搭 MLP 算参数量 → 深度 vs 宽度对比
MLP 架构 · 784→128→10 参数量计算
深度替代宽度 · 参数量对比
前向矩阵 · 数据之流
你面前展开了一张巨大的计算图——像一张电路图,节点是运算,边是数据。前向传播就是沿着这张图从左走到右。每一步,要么乘矩阵,要么加偏置,要么过激活函数。输入 x 进来,乘以 W₁,加上 b₁,过激活函数——出来的是 a¹。一直走到输出。但真正的重点在右边——计算图的终点挂着损失函数 L。走对了,L 小。走错了,L 大。但怎么回去修正?那得倒着走。倒着走之前,你得先正着走完。
「前向传播是数据从左走到右。计算图不是装饰——它是你回去的路标。每过一个节点,你就该知道怎么倒回来。」
前向传播执行器 · 矩阵乘法 + 计算图 + 梯度账本
逐步执行 2→3→2→2 网络前向传播 → 绘制计算图 → 梯度账本启动
3 层 MLP · 2→3→2→2
梯度账本 · 待 S8 填入
初始化炼丹 · 起点之重
联结先师把你带到一座炼丹炉前。炉内悬浮着无数细小的权重值,像一群萤火虫。全设零?所有神经元学到一样的东西,永远一样。全设一?一样。随机?看你怎么随机。随机初始化的方差太大,激活值会爆炸;方差太小,激活值会消失。你得让信号在每一层保持稳定——进来的方差和出去的差不多。Glorot 说方差设成 2/(n_in+n_out)。He 说 ReLU 要另算,方差设成 2/n_in。
「起点不对,后面全白走。Glorot 让方差不膨胀,He 让 ReLU 的一半不死。这不是玄学——是线性代数。你来炼。」
初始化炼丹炉 · 4 方案 × 10 层分布直方图
选初始化方案 → 看每层激活分布直方图 → 看方差变化曲线
10 层激活分布 · 方差变化
归一化与正则 · 稳定之术
你走出炼丹房,面前是一条布满闸门的水渠。水流代表激活值,从左流到右。初始化只管起点。训练过程中,每一层的输入分布会随前一层权重变化而漂移——这叫内部协变量偏移。Ioffe 2015 年给了你一道闸门——BatchNorm。它在每一层把当前 batch 的激活值拉回均值 0、方差 1,再用 γ 和 β 放缩偏移。但 batch 太小怎么办?序列模型怎么办?于是有了 LayerNorm。还有 Dropout——训练时随机关掉一半神经元,逼剩下的自己学。
「归一化稳分布,正则防过拟合。但它们稳的是前向——反向的梯度呢?你以为加了这些就稳了。你以为对了。」
归一化水渠 · BN/LN/GN + Dropout 正则演示
切换 BN/LN/GN 看分布直方图 → 切 batch 大小看 BN 抖动 → Dropout 防过拟合
每层激活分布 · 归一化前后
Batch 大小影响 · BN 在小 batch 时抖动
Dropout 正则 · 训练/验证损失
反传深渊 · 链式之链
你站在计算图的右端——损失函数 L 挂在那里,像一个红色的果实。前向传播从左走到右,到 L 为止。现在你要倒着走回来。每倒退过一个节点,就乘以那个节点的局部导数。这叫链式法则。走到第一个权重,你就知道它该怎么改。这就是反向传播。计算图上的节点开始从右到左亮起。你注意到一件事——每过一层,梯度就小一点。到第一层时,梯度范数已经从 1.0 缩到了 0.0000003。梯度账本上的数字一格一格地填满——全部在衰减。
「你以为倒着走就能回去?每一步都在缩小。十层之后,你什么都带不回来了。」
「反传每走一层就缩一次。你以为掌握了训练的全部秘密——但你走到第一层时,手里什么都没剩。推导完链式法则,翻开梯度账本。」
反向传播推导器 · 链式法则 + 梯度账本 + 梯度消失/爆炸
选损失函数 → 逐步推导链式法则 → 梯度账本填满 10 层 → 梯度消失/爆炸对比
梯度账本 · 10 层 Sigmoid 网络梯度范数
梯度消失 vs 梯度爆炸
Boss 战 · 梯度消失之渊
计算图裂开了。不是从上面裂——是从下面。你脚下的地面塌陷,露出一个深渊。深渊里没有黑暗,有的是光——无数衰减的光,像一串越走越远的脚印,每一步比上一步暗 75%。那是梯度。你的梯度。被它吞掉的梯度。深渊凝成一个形体。它不像之前那些 Boss——它不嘲讽,不轻蔑。它只是平静地看着你:"你以为层数越多学习能力越强。但梯度在反向传播中指数衰减。你不能训练你够不到的东西。"
「三问。答对了,你过去。答错了,你的梯度永远到不了第一层。你手里的梯度账本和排除刻痕——能用上的,都用上。」
深度债累计 0 笔 · 三问全对后清零
通途之链 · 顿悟
深渊合拢后,地面上留着一道细细的绿线——残差连接的痕迹。它从网络的第一层直通最后一层,绕过了中间所有的衰减。一面墙亮了起来,上面刻着你这章的全部足迹:从生物神经元到 M-P 模型。从感知机到 XOR 的崩塌。从激活函数到万能近似。从前向矩阵到计算图。从初始化到归一化。从链式法则到梯度消失。从深渊到残差。你搭的每一个零件都对。但它们解决的是"前向稳不稳"的问题。梯度消失是"反向通不通"的问题。残差连接给了梯度一条不经过衰减的路。不是修,是绕。
「你这一章走了三段路:搭起来、训不动、绕过去。记住这个闭环——后面的每一章都是在这个闭环上加东西。下一站,卷积。你只学会了全连接——世界还有空间结构。」
训练闭环拼图 · 16 知识点 + 梯度账本三组对比
拖 16 卡片入环形流程图 → 梯度账本三组对比 → 排除刻痕终览