Files
Notes/机器学习/统计学习要素-ESL-v1/11 第十一章 神经网络.md
2026-05-16 17:16:51 +08:00

14 KiB
Raw Permalink Blame History

title, draft, tags
title draft tags
11 第十一章 神经网络 false
ESL

[逻辑架构图]

本笔记按照从“统计学古典模型”到“现代深度学习系统”的演进路径重组,核心逻辑链如下:

  1. 理论发源PPR 的数学解构):高维降维与局部拟合的加性博弈。
  2. 范式转移PPR vs MLP:从“局部灵活(自适应样条)”向“全局规模(固定算子+海量参数)”的系统级妥协。
  3. 几何本质(单层与多层):权重作为基底方向,网络层作为基于矩阵乘法的坐标系变换空间。
  4. 统计溯源(损失函数与正则化):从先验与似然的概率论角度重新审视神经网络。
  5. 空间先验CNN 与权重共享):统计学约束与冯·诺依曼架构下访存优化的完美契合。
  6. 终极演进(机器自学习哲学):梯度下降与反向传播驱动下的特征涌现。

[深度整理正文]

一、 理论发源:投影寻踪回归 (PPR) 的高维切片与交替优化

我们可以把投影寻踪回归 (PPR) 的过程想象成在做一场“高维切片”的手法。为了让你更直观地理解它是如何“加”和“投影”的,我们拆解一下它的核心数学动作。

1. “投影” (Projection):降维的过程 在高维空间里,原始数据 x 可能有几十个维度,直接拟合函数会产生“维数灾难”。

  • 线性投影PPR 首先寻找一个单位方向向量 $\alpha_1$。它将 n 维的输入向量 x 通过内积运算 \alpha_1^T x 变成了一个一维的标量 $z_1$。
  • 物理意义:这就像是从某个特定的角度去观察一个高维物体,把它投射到一张一维的纸带上。

2. “岭函数” (Ridge Function):非线性拟合 一旦数据被投射到了 $z_1$(一维)上,问题就简化成了简单的一元回归。在这个投影出来的轴上,我们用一种“灵活”的函数 f_1 去追踪 y 的变化趋势。

  • 为什么叫非参数? 在神经网络中,激活函数(如 ReLU是死板固定的而在 PPR 中,f_1 是由数据生成的,通常使用样条平滑 (Spline Smoothing) 或局部多项式。它能根据数据的走向弯曲、起伏。

3. “加” (Additive):逐项剥皮的过程 PPR 的“加”并不是一次性算出来的,而是一个分层逼近的过程,类似于 Boosting 的思想:第一步找到投影方向 \alpha_1 和函数 $f_1$,计算残差 $r_1 = y - f_1(\alpha_1^T x)$;第二步针对残差重新投影寻踪。一直加到第 M 项,使得模型变成 $y \approx f_1(\text{投影}_1) + f_2(\text{投影}_2)$,直到残差极小。

  • 形象化的比喻PPR 就像一个“素描大师”。第一项用粗线条画出大趋势,求残差看看哪里不像,第二项在阴影处增加细节。岭函数叠加还原了高维形状。

4. 核心算法:如何寻找最佳基底 $\alpha$ 如果只是“盲目尝试”,在高维找 \alpha 简直是大海捞针。PPR 寻找 \alpha 是基于梯度的交替优化 (Alternating Optimization),目标是最小化残差:$E = \sum_{i=1}^{N} [r_i - f(\alpha^T x_i)]^2$。

  • 固定 $\alpha$,优化 $f$:随机选 $\alpha$,得到一维坐标 $z = \alpha^T x$。利用平滑技术(如样条回归)画出最契合的曲线 $f$。
  • 固定 $f$,优化 $\alpha$:计算目标函数对 \alpha 的导数,通过梯度下降或高斯-牛顿法微调投影方向 $\alpha$,即 $\alpha_{new} = \alpha_{old} - \eta \frac{\partial E}{\partial \alpha}$。
  • 多起点/启发式搜索为了防止陷入局部最优解PPR 会随机选几个不同的初始 $\alpha$,或用相关性指标筛选起点。在“寻找方向”和“拟合曲线”间反复横跳。

{[系统专家扩充]从底层计算的角度来看PPR 的交替优化算法对现代计算机架构极其不友好。动态生成样条函数 f 意味着代码执行流中充满了条件分支Branching和内存地址非连续的查表操作Look-up Tables。这会频繁引发 CPU 流水线中的分支预测失败Branch Misprediction导致流水线冲刷Pipeline Flush。同时由于每次迭代都需要根据上一层的残差动态求解海森矩阵或进行线搜索这使得它极难被并行化无法有效利用现代 GPU 的 SIMD单指令多数据流架构。这是 PPR 被深度学习在算力时代取代的底层硬件原因。}


二、 范式转移PPR vs 神经网络 (MLP) 的工业化权衡

PPR 是一个“手工定制派”,而多层感知机 (MLP) 是一个“工业标准化派”。如果理解了上述过程就会发现PPR 的投影 \alpha^T x 就是神经网络里的权重投影 $w \cdot x$PPR 的岭函数 f 就是激活函数 $\sigma$。

1. 神经网络的“固定”策略与量变引起质变 在神经网络里,每个神经元的输出公式是 $y = \sigma(w^T x + b)$。\sigma 预先固定为 ReLU 或 Sigmoid 等。

  • 为什么要固定? 如果让每个神经元去学习复杂的样条函数,计算量会爆炸。
  • 逻辑对比PPR 用极少数的项5-10个但每项的映射极度复杂神经网络放弃了单神经元的灵活性用成千上万个最简单的“折线”ReLU堆叠。根据通用近似定理 (Universal Approximation Theorem),只要神经元足够多,就能拟合任何连续函数。

{[系统专家扩充]:固定激活函数是计算机系统层面的一次伟大妥协。以 ReLU 即 f(x)=\max(0,x) 为例在汇编级别它只需一条轻量级的比较指令或者通过符号位掩码Sign-bit Masking即可完成完全消除了复杂的浮点数多项式计算。更重要的是这使得前向传播中的 w^T x + b 可以被抽象为纯粹的稠密矩阵乘法GEMM。在 BLAS 库(如 cuBLAS的调度下数据以缓存行Cache Line为单位被整齐地送入寄存器利用 FMAFused Multiply-Add融合乘加指令在一个时钟周期内完成一次乘法和加法。这种“暴力美学”让算术吞吐量达到了极致。}

2. 神经网络如何“自己选方向”? 由于 \sigma 固化,神经网络的所有生命力都集中在权重 w 上。

  • PPR 是一项项加的,而神经网络是全连接、端到端 (End-to-End) 的。通过反向传播 (BP),所有的 w 同时微调。
  • 特征提取层级:单层结构很难模拟深层结构的“投影的投影”(如第一层找边缘,中间层找形状,深层找抽象概念)。

三、 几何本质:网络层的投影与坐标变换

权重Weights本质上定义了一组“观察视角”基底运算过程就是输入向量向基底进行投影。

1. 维度的本质与变换

  • 单神经元(寻找显著特征)n 维输入 x 投影到 1 维权重 w 上产生标量。这个标量代表输入与该特征的匹配度,投影值大则被“激活”。
  • 整层网络(坐标系变换):拥有 m 个神经元时,权重变为矩阵 $W \in \mathbb{R}^{m \times n}$。输入同时投影到矩阵的 m 行上,从 n 维原始空间投影到了 m 维的“特征提取子空间”。

2. 投影的意义与复合

  • 旋转基底BP 算法不断“扭转”基底的角度,直到能最清晰地分辨数据。
  • 偏置 (Bias):决定了在投影轴上的激活门槛(原点偏移)。
  • 层层复合投影完后接非线性激活刻度转换再次作为下层输入。这种复合投影能将高维流形Manifold拉直使其线性可分。这就解释了为什么“基函数展开”合理——神经网络正是在动态寻找那组最完美的“字典”。

{[系统专家扩充]:从内存布局上看,n \times m 的坐标系变换极大依赖于数据在内存中的排列方式Row-major 还是 Column-major。在深度学习框架如 PyTorch底层连续的投影计算往往涉及内存维度的转置与重排Reshape/Transpose。为了保证投影操作的高效系统会通过跨步Stride机制在不移动实际物理内存数据的情况下改变多维张量的逻辑视图极大降低了坐标变换的内存搬运成本。}


四、 统计溯源:概率、似然与正则化

深度学习是统计学在大规模计算下的演进。

1. 样条与分布

  • ReLU 激活函数是最简单的样条,在 b 点转折。组合成千上万个 ReLU 等价于多元自适应样条拟合。
  • 输出层即分布参数:回归输出高斯分布均值 $\mu$;分类 Softmax 输出多项分布概率。损失函数 MSE 等价于高斯最大似然估计 (MLE),交叉熵等价于多项分布 MLE。

2. 正则化背后的统计先验

  • L2 正则化 (Weight Decay) = 岭回归 (Ridge) = 高斯先验分布。
  • L1 正则化 = Lasso 回归 = 拉普拉斯先验分布。
  • Dropout = 贝叶斯模型平均 (Bayesian Model Averaging)。

{[系统专家扩充]在编译器与计算图Computation Graph优化中L2 正则化Weight Decay的地位非常特殊。它不需要像 Dropout 那样在运行时动态生成巨大的随机掩码Mask矩阵占用额外的显存带宽。Weight Decay 在优化器(如 Adam/SGD更新权重的底层 CUDA Kernel 中,仅仅表现为一条微不足道的标量乘法指令(w = w - lr * (grad + wd * w))。这种 O(1) 的内存常数级开销,在系统层面提供了极高的性价比,完美诠释了“优美的统计学假设往往能映射出高效的底层代码”。}


五、 结构进化CNN 与权重共享的极致优化

将 CNN 视为“共享隐藏层”或“共享权重”,揭示了其超越 MLP 的奥秘。

1. 权重共享与投影

  • 滑动观察全连接层需要海量独立权重CNN 使用局部卷积核(如 3x3 窗口)在全图滑动,全局使用相同权重。
  • 局部投影:图像的每个局部补丁都投影到同一个基底 w_{kernel} 上,生成特征图 (Feature Map)。

2. 统计学假设 Yann LeCun 的设计基于两个先验:平移不变性 (Translation Invariance)(猫在哪都是猫)和局部相关性(相邻像素相关性高)。这是一种强烈的正则化约束,逼迫模型学习跨位置的通用底层几何特征。

{[系统专家扩充]CNN 简直是为打破“冯·诺依曼架构访存瓶颈”而生的天才设计。在 MLP 中巨大的参数矩阵导致计算受限于内存带宽Memory Bound而在 CNN 中,一个 3x3 的卷积核体积小到可以永远驻留在寄存器或 L1 Cache 中。图像数据流式输入,在缓存中被反复重用。底层实现中,系统通常会通过 im2col 操作将局部的图像滑动块在内存中展开并复制成巨大的矩阵,从而将复杂的卷积运算直接转换为高度优化的 GEMM 矩阵乘法。这用微小的额外内存空间换取了指令级并行度ILP的狂飙。}


六、 终极演进:自动学习、反向传播与哲学转向

从传统信号处理的手工特征(如 Sobel 算子),到现代机器的“自动学习”。

1. “死基底”与“活基底”

  • 手工算子是写死的权重局限性极大。CNN 的卷积核初始是一张白纸(随机噪音)。
  • 误差反馈与微调:通过反向传播计算损失函数对每个权重的偏导数,梯度下降作为“动力源泉”微调数字。

2. 反向传播的“层级分工”与涌现

  • 协同进化:普通 MLP 作为“万能逼近器”通过链式法则解决信用分配Credit Assignment问题。输出层微调中间层收敛形状第一层被迫学习最基础的边缘。
  • 自主的本质:人类不写规则,只设计包含损失函数和结构潜力的“容器”。梯度像引力一样驱动千万次数据迭代,为了在多维参数空间的损失曲面中“生存”,内部连接强度自发演化出逻辑。无论是 Word Embedding、CNN 还是 Transformer 的注意力机制,皆是如此。

{[系统专家扩充]这种所谓的“培育”在计算机底层表现为极为残酷的显存消耗与图调度。反向传播不仅仅是数学求导它是对计算图的有向无环图DAG拓扑排序与后序遍历。为了“追责”计算梯度系统必须在正向传播时将中间层的激活值Activations作为上下文快照死死地钉在显存中Context Saving。当模型规模庞大时显存峰值会被瞬间撑爆迫使底层操作系统触发统一内存架构Unified Memory下的 PCIe 换页中断,或者让 AI 框架启用重计算Gradient Checkpointing策略——用额外的 CPU/GPU 运算周期,去换取显存空间的存活。机器的每一次“顿悟”与特征涌现,背后都是无数个晶体管满载发热与硅片间海量数据吞吐的暴力堆叠。}


[边界知识联动]

为了进一步打通你的 CS 专业知识体系,以下是本篇笔记与计算机系统其它核心组件的深层关联:

  • 硬件预取与分支预测 (Branch Prediction vs GEMM)PPR 的样条树逻辑极易造成分支预测失败惩罚;而神经网络的矩阵运算几乎无分支,让 CPU 的硬件预取器 (Hardware Prefetcher) 和 GPU 的 Warp 调度器能够以最高效率填充流水线。
  • 浮点数标准 (IEEE 754) 与梯度下溢:你在微调神经网络基底(找 $\alpha$)时,深层反向传播的梯度相乘极易变得极其微小,导致 IEEE 754 浮点数表示发生下溢 (Underflow)。这也是为什么现代系统需要混合精度训练FP16/BF16甚至特殊舍入策略的硬件级支撑。
  • 操作系统调度与上下文切换:当采用多起点的 PPR 搜索或在神经网络中进行大规模并行批处理BatchingOS 的线程调度和上下文切换开销开始凸显,这也引出了为什么现代 AI 引擎绕过 OS 内核,直接通过用户态驱动程序 (User-space Drivers) 操控 GPU 显存。