一个深度网络就是几百层函数套娃:$f_n(\cdots f_2(f_1(x)))$。训练要回答——「把这几亿个旋钮里的某一个拧一点点,最后的损失变多少?」即求损失对每个权重的偏导。
笨办法是对每个旋钮单独试拧一次,几亿次前向计算,天文数字。反向传播的洞见是:先前向跑一遍、把每层中间结果存下来,再从损失出发、把「责任」一层层往回传。每一层只需两样东西——它自己的局部导数,加上从上层传下来的梯度——两者相乘就是该层的贡献,同时把梯度继续递给下一层。就像追责一条命令链:从顶头一级级往下问「你这环放大了多少误差」,一趟走完,人人有责、无需重来。
这就是链式法则:$L$ 是损失,$a_\ell$ 是第 $\ell$ 层激活,$w_\ell$ 是该层权重。整条乘积其实是一串雅可比矩阵相乘。关键在乘的顺序:从右往左(反向模式)——先把左端「损失对输出」的向量算出来,再依次左乘——每步只做「向量 × 矩阵」,不显式构造大矩阵。于是算全部参数的梯度,只花约等于一次前向传播的代价。
同一串乘法,仅仅换个方向,代价就从「参数量 × 前向」塌缩成「一次前向」。这是反向模式自动微分的核心——数学上叫「伴随」(adjoint)。它不是黑魔法,而是一个更古老的对偶:要一个输出对众多输入的敏感度,就反着走。正是这个 $O(n)$ 而非 $O(n^2)$ 的差别,让训练几十亿参数从「不可能」变成「一晚上的事」。
每一个被训练的神经网络都靠它——PyTorch、JAX 的 autograd 就是把任意计算图自动反向求导。同一思想在网络之外同样锋利:气象与流体的伴随法做参数反演、最优控制里的 Pontryagin 原理、可微渲染让梯度穿过图形管线、乃至用梯度反推分子结构。凡是「大量输入、一个标量目标」,反向传播就是最优解法。
读「小猫追着它的尾巴,因为它无聊」,要懂「它」指谁,你得回头扫前文、找出最相关的词、再把它的含义拉过来。注意力把这个动作数学化:每个词发出一个提问(Query),其余每个词亮出标签(Key)回答「我跟你相关吗」,相关度高的就把它的内容(Value)多分一点过来。
所以注意力是一部软字典:普通字典靠精确的键取值,注意力靠「相似度」给所有键一个连续权重再加权平均。它可微分——查得准不准可被梯度优化,于是「该看哪里」从人手设计变成网络自己学。
$Q,K,V$ 是同一批词向量的三次线性投影(提问、标签、内容)。$QK^{\top}$ 用点积量出每个 Query 与每个 Key 的相似度,得到一张分数表;除以 $\sqrt{d}$ 是防止维度一高、点积过大把 softmax 逼到饱和;softmax 把每一行分数压成一组和为 1 的权重;最后乘 $V$,就是「按相关度加权、把所有词的内容混合起来」。
它把「按内容检索记忆」这件模糊的认知动作,化简成两次矩阵乘法加一个 softmax——干净、可微、天然适合 GPU 并行。相比 RNN 必须逐词串行、信息在长链里衰减,注意力让任意两个词一步直达,多远都是常数距离。就是这个几行就能写完的算子,撑起了整个 Transformer 与大语言模型的时代。
GPT、BERT 靠它建模语言,视觉 Transformer (ViT) 把图像切块当「词」看,AlphaFold 用它捕捉氨基酸的长程配对推断蛋白质折叠,扩散模型用交叉注意力让文字指挥图像生成。「哪些元素该互相影响」,在几乎所有模态里都被同一个公式回答。
一个神经元做的事很简单:输入加权求和,再过一个非线性——输出近似一个软台阶或小鼓包。单个鼓包很笨,但把许多高矮胖瘦、位置不同的鼓包叠起来,就能拼出任意起伏的曲线,像乐高砖逼近一条山脊线,也像傅里叶用正弦波叠出方波。
万能逼近定理说的正是:只要隐藏层的神经元够多,一个网络就能把任意连续函数逼近到你想要的精度。神经网络之所以「什么都能学」,不是玄学——它本质是一台可调的函数积木机,而学习就是调每块积木的高度和位置。
Cybenko (1989)、Hornik 的定理:形如 $\sum_{i} c_i\,\sigma(w_i\!\cdot\! x+b_i)$ 的有限和($\sigma$ 是 sigmoid 之类的非线性)在紧集上的连续函数空间里稠密——即可无限逼近任何连续 $f$。但要害是:定理只保证「存在这样一组参数」,没说要多少神经元(可能指数级多),也没说梯度下降找得到它。
它把时髦的神经网络,接回了魏尔斯特拉斯逼近、傅里叶展开这条三百年的古典逼近血脉——网络不过是又一组基函数。更妙的是它划清了三件常被混为一谈的事:能不能表示(逼近定理,答案是能)、能不能学到(优化)、能不能泛化(统计)。深度学习真正的谜团不在第一件,而在于:为什么参数远多于数据的过参数网络,用简单的 SGD 竟找到了泛化良好的解。
它是把网络当「通用函数拟合器」用的许可证:只要问题能写成「输入→输出」的函数,就有理由试。同一逻辑也解释了为何深常比宽更省——某些函数用浅网络需指数级神经元,加深却只需多项式级,深度用复合换取了效率。
一张 $100\times100$ 的灰度图住在 $10000$ 维的像素空间里。但随手撒一把随机像素,你永远撒不出一张人脸——真实图像只占据这个巨大空间里薄薄的、弯曲的一层,测度几乎为零。流形假设就说:现实中的高维数据(图像、语音、文本)并非布满整个空间,而是聚集在一个维度低得多的弯曲曲面(流形)上。
打个比方:一条揉皱塞进房间的丝带,本质是一维的(沿它走只有「前后」),却嵌在三维空间里。学习,就是把这张揉皱的薄纸展平、找到它内在的坐标——摸清纸的形状,几万维的难题就退化成几十维的易题。
假设高维数据近似分布在一个低维流形 $\mathcal{M}\subset\mathbb{R}^D$ 附近,其内在维度 $\dim\mathcal{M}=d\ll D$。表示学习即为这张流形寻一组坐标(图/嵌入),把 $D$ 维观测压成 $d$ 维隐向量而信息几乎不丢。
它一举化解了维度灾难的悖论:理论上在 $10000$ 维里学习需要天文数字样本,现实里几百万张图就够——因为有效维度其实很低。它把微分几何与拓扑请进深度学习:隐空间里两点平滑插值,对应在流形上「沿着纸面行走」,于是人脸能连续地从微笑变到皱眉,而不会中途路过一堆雪花噪点。数据的形状,本身就是一种先验知识。
自编码器把数据压到低维再还原;扩散模型可理解为学会「把偏离流形的噪声一步步推回流形」,于是从纯噪声生成逼真图像;t-SNE、UMAP 把高维流形摊到二维供人眼观察;隐空间插值与图像编辑,全建立在「在流形上移动」这一几何直觉上。