本周学习总结

本周的课程为我们铺设了深度学习最核心的底层逻辑。我们从控制理论与系统辨识的视角出发,将看似神秘的“神经网络”解构为一系列数学操作:

  1. 模型定义:通过矩阵仿射变换与非线性激活函数,构建了具有万能逼近能力的假设空间(MLP)。
  2. 目标确立:利用极大似然估计推导出了均方误差(MSE)与交叉熵损失,为系统优化提供了明确的评价指标。
  3. 动力学驱动:借助微积分链式法则推导出的 BP 算法,让模型能够在复杂的非凸损失曲面上,通过小批量随机梯度下降(SGD)实现参数的自主进化与寻优。

1. 课程概述与深度学习的系统观

本周的课程涵盖了深度学习的宏观概念体系,并从最基础的线性回归模型切入,逐步过渡到多层前馈神经网络(BP网络)及其误差反传机制。结合《动手学深度学习》的理论以及课堂上的数理推导,本阶段的核心认知可以概括为:深度学习本质上是一种基于数据驱动的、通过多层非线性复合函数来逼近目标映射的参数优化过程。

在传统的物理建模与控制中,我们习惯于通过精确的微分方程或状态空间推导系统的动态规律(白盒模型);而在深度学习范式中,由于处理的往往是极高维度且难以精确描述的系统(如图像视觉感知),整个网络框架被视为一个高度参数化的复杂函数。我们通过定义合适的假设空间(网络结构)和评价指标(损失函数),让算法通过梯度信息自主寻找最优的系统参数。

在“概述”模块中,有三个贯穿整个深度学习体系的核心概念:

  • 特征表示的进化 (Representation Learning): 摒弃了传统机器学习中耗时且依赖经验的手工特征工程,转而利用多层网络的层级结构,从底层数据中自动、端到端(End-to-End)地提取从边缘到语义的高阶特征。
  • 泛化能力 (Generalization): 深度学习的核心博弈。模型的终极目标不仅在于最小化训练集上的经验误差,更在于应对未知的独立同分布测试数据。衡量一个模型好坏的标准,在于它如何平衡“欠拟合”与“过拟合”的跷跷板。
  • 优化与搜索: 在高维非凸的损失函数曲面中,如何找到一个足够好的极小值点,是所有网络训练算法(如各类梯度下降变体)的共同使命。

2. 线性回归与感知机的数学基础

线性回归可以追溯到19世纪初,是机器学习和统计学中用于建模自变量与因变量关系最简单且最流行的工具。它构建在自变量与因变量呈线性关系、且观测噪声具有一定统计规律的假设之上。

2.1 矩阵形式与仿射变换

对于包含 ddd 个特征、nnn 个样本的高维数据集,为了避免低效的标量循环,通常采用线性代数表示法进行矢量化计算。整个数据集的预测输出可以通过矩阵-向量乘法简洁地表示(其中偏置项的求和利用了广播机制):
y^=Xw+b\hat{\mathbf{y}} = \mathbf{X} \mathbf{w} + by^=Xw+b

  • X∈Rn×d\mathbf{X} \in \mathbb{R}^{n \times d}XRn×d 为特征矩阵,其每一行代表一个数据样本,每一列代表一种特征维度。
  • w∈Rd\mathbf{w} \in \mathbb{R}^dwRd 为权重向量 (Weight),决定了各特征对预测值的影响程度。
  • bbb 为偏置项 (Bias),代表所有特征取值为0时的基准预测值,用以增强模型的表达能力。

从网络结构视角来看,这一过程对应于对输入特征进行仿射变换 (Affine Transformation),即通过加权和进行线性变换,再通过偏置项进行空间平移。

2.2 损失函数与极大似然估计的等价性

为了量化模型实际预测值 y^\hat{y}y^ 与真实标签 yyy 之间的差距,回归任务中最常用的度量方式是平方误差损失函数。在整个训练集上,模型的全局经验误差通常以均方误差 (MSE) 的形式展开:
L(w,b)=1n∑i=1nl(i)(w,b)=1n∑i=1n12(w⊤x(i)+b−y(i))2L(\mathbf{w}, b) = \frac{1}{n} \sum_{i=1}^n l^{(i)}(\mathbf{w}, b) = \frac{1}{n} \sum_{i=1}^n \frac{1}{2}\left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right)^2L(w,b)=n1i=1nl(i)(w,b)=n1i=1n21(wx(i)+by(i))2
注:常数 12\frac{1}{2}21 的引入纯粹是为了形式上的简洁,使其在对参数求导后常数系数恰好为 1。

概率论视角下的本质推导
均方误差损失函数在线性回归中的普适性具有深刻的统计学根源。若假设实际系统观测中包含的随机噪声 ϵ\epsilonϵ 服从均值为 0、方差为 σ2\sigma^2σ2 的正态分布(高斯分布) ϵ∼N(0,σ2)\epsilon \sim \mathcal{N}(0, \sigma^2)ϵN(0,σ2),即:
y=w⊤x+b+ϵy = \mathbf{w}^\top \mathbf{x} + b + \epsilony=wx+b+ϵ
则在给定特征 x\mathbf{x}x 的条件下,观测到特定标签 yyy 的条件概率(似然)可以写为:
P(y∣x)=12πσ2exp⁡(−12σ2(y−w⊤x−b)2)P(y \mid \mathbf{x}) = \frac{1}{\sqrt{2 \pi \sigma^2}} \exp\left(-\frac{1}{2 \sigma^2} (y - \mathbf{w}^\top \mathbf{x} - b)^2\right)P(yx)=2πσ2 1exp(2σ21(ywxb)2)
根据极大似然估计法(MLE),最优参数应当最大化整个训练数据集的联合似然 P(y∣X)=∏i=1np(y(i)∣x(i))P(\mathbf y \mid \mathbf X) = \prod_{i=1}^{n} p(y^{(i)}|\mathbf{x}^{(i)})P(yX)=i=1np(y(i)x(i))。为简化计算,通过最小化负对数似然 (Negative Log-Likelihood),可得:
−log⁡P(y∣X)=∑i=1n12log⁡(2πσ2)+12σ2(y(i)−w⊤x(i)−b)2-\log P(\mathbf y \mid \mathbf X) = \sum_{i=1}^n \frac{1}{2} \log(2 \pi \sigma^2) + \frac{1}{2 \sigma^2} \left(y^{(i)} - \mathbf{w}^\top \mathbf{x}^{(i)} - b\right)^2logP(yX)=i=1n21log(2πσ2)+2σ21(y(i)wx(i)b)2
在假设噪声标准差 σ\sigmaσ 为固定常数的前提下,上式第一项与参数优化无关,而第二项除了常数系数外与均方误差公式完全一致。由此证明:在高斯噪声的假设下,最小化均方误差损失函数在数学上等价于对线性模型进行极大似然估计

2.3 解析解与小批量随机梯度下降

由于线性回归的经验损失函数关于参数是一个严格的凸函数,在损失平面上只有一个临界点,即全局极小值点。通过将偏置 bbb 合并到权重 w\mathbf{w}w 中(相应地在 X\mathbf{X}X 中附加一列常数1),令损失关于 w\mathbf{w}w 的导数为 0,可以直接解出其解析解 (Analytical Solution)
w∗=(X⊤X)−1X⊤y\mathbf{w}^* = (\mathbf X^\top \mathbf X)^{-1}\mathbf X^\top \mathbf{y}w=(XX)1Xy
尽管解析解在数学上非常直观,但由于复杂的非线性模型往往不存在解析解,且矩阵求逆 (X⊤X)−1(\mathbf X^\top \mathbf X)^{-1}(XX)1 的计算复杂度高达 O(d3)\mathcal{O}(d^3)O(d3),当特征维度 ddd 极高时将引发计算灾难,因此无法广泛应用于深度学习。

为了解决难以优化或计算成本过高的通用参数寻找问题,引入了小批量随机梯度下降 (Minibatch SGD)。该算法在每一步迭代中,首先从训练集中随机抽取包含固定数量样本的小批量 B\mathcal{B}B。随后,计算该小批量的平均损失关于模型参数的梯度(偏导数),并将其乘以预先设定的正数(学习率 η\etaη),最终从当前参数中减去以实现参数更新:
w←w−η∣B∣∑i∈Bx(i)(w⊤x(i)+b−y(i)) \mathbf{w} \leftarrow \mathbf{w} - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \mathbf{x}^{(i)} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right) wwBηiBx(i)(wx(i)+by(i))

b←b−η∣B∣∑i∈B(w⊤x(i)+b−y(i)) b \leftarrow b - \frac{\eta}{|\mathcal{B}|} \sum_{i \in \mathcal{B}} \left(\mathbf{w}^\top \mathbf{x}^{(i)} + b - y^{(i)}\right) bbBηiB(wx(i)+by(i))
其中,批量大小 (Batch size) ∣B∣|\mathcal{B}|B 和学习率 (Learning rate) η\etaη 属于无法通过模型训练自身更新、需要手动预设调整的超参数 (Hyperparameter)

2.4 从线性回归到生物学神经元模型的剥离

若将线性回归模型视为一个神经网络,其重点在于发生计算的节点。它仅包含输入层和只有一个计算神经元的输出层(在计算层数时不考虑输入层,因此属于单层神经网络),且每个输入都与输出相连,构成了最基础的全连接层 (Fully-connected layer) 或稠密层。

这一数学结构借鉴了早期控制学家、神经生物学家沃伦·麦库洛奇和沃尔特·皮茨开发的人工神经元模型(M-P 模型)。生物神经网络中的树突接收其他神经元的输入信号 xix_ixi,通过突触权重 wiw_iwi 进行加权激活或抑制,最终在细胞核中汇聚为加权和 y=∑wixi+by = \sum w_i x_i + by=wixi+b。两者的核心演进在于:真实的生物神经元或更高级的人工感知机,在累加信号后必须通过非线性激活函数 σ(y)\sigma(y)σ(y)(如阶跃函数、Sigmoid等)进行处理,然后再通过轴突发送出去。

现代深度学习已经逐步剥离了对真实生物神经系统的强行仿生,其创新主要来源于数学、统计学和计算机科学。因为如果没有非线性激活函数的引入,多层全连接神经网络的叠加在数学上依然只是矩阵的相乘,本质上仍等价于单一的全连接线性层,无法逼近复杂的非线性边界。

3. 多层前馈网络(MLP)与多分类拓扑结构

在前一节中,我们探讨了单层网络(线性回归与感知机)如何解决回归与简单的二分类问题。然而,在实际的系统辨识与模式分类任务中,我们往往面临着多个互斥类别以及高度非线性的决策边界,这驱使我们将网络结构向更深层次拓展。

3.1 从单输出到多分类:Softmax 机制

当系统面对多分类问题(例如对输入图像进行十元分类识别)时,网络不能再仅输出一个单一的标量。我们为每个目标类别分配一个输出节点,并通过仿射变换得到未归一化的预测值(Logits)。
为了使得输出具有严密的概率论意义(即所有类别的预测概率之和为1,且每个概率在0到1之间),在输出层引入了Softmax 函数
y^j=exp⁡(oj)∑k=1Kexp⁡(ok)\hat{y}_j = \frac{\exp(o_j)}{\sum_{k=1}^K \exp(o_k)}y^j=k=1Kexp(ok)exp(oj)
配合Softmax输出,多分类任务通常采用交叉熵损失 (Cross-Entropy Loss)来度量真实标签分布与预测概率分布的差异。从信息论的视角来看,这等价于最小化两者之间的 KL散度。

3.2 线性分类的局限与隐藏层的引入

单层感知机在数学本质上只能划分出线性的决策超平面。经典的“XOR(异或)问题”便揭示了单层网络无法解决线性不可分问题的致命局限。为了打破这一局限,我们通过在输入层和输出层之间堆叠一层或多层“隐藏层(Hidden Layers)”,构建了多层感知机 (Multilayer Perceptron, MLP),即最经典的多层前馈神经网络
在这个拓扑结构中,上一层的输出作为下一层的输入,信号自输入端单向、前馈地流向输出端,不包含反馈环路,网络整体构成了一个有向无环图。

3.3 非线性激活函数:打破矩阵乘法的退化

在多层网络中,必须在每个隐藏层的线性仿射变换之后接入一个非线性激活函数 (Activation Function)
H=σ(XW(1)+b(1)) \mathbf{H} = \sigma(\mathbf{X} \mathbf{W}^{(1)} + \mathbf{b}^{(1)}) H=σ(XW(1)+b(1))

O=HW(2)+b(2) \mathbf{O} = \mathbf{H} \mathbf{W}^{(2)} + \mathbf{b}^{(2)} O=HW(2)+b(2)
这一步极其关键。如果缺少非线性激活函数 σ(⋅)\sigma(\cdot)σ(),无论网络内部堆叠多少隐藏层,多层仿射变换的连续级联在数学上都可以被合并为一个等效的单层仿射变换(即 X(W(1)W(2))+b∗\mathbf{X}(\mathbf{W}^{(1)}\mathbf{W}^{(2)}) + \mathbf{b}^*X(W(1)W(2))+b)。此时,深层网络的表达能力将退化回单层线性模型。
随着理论的演进,激活函数经历了从初期的 Sigmoid、Tanh 到现代广泛采用的 ReLU (Rectified Linear Unit)。ReLU (f(x)=max⁡(0,x)f(x) = \max(0, x)f(x)=max(0,x)) 由于其在正半轴导数恒为 1 的特性,不仅计算高效,更极大地缓解了深层网络训练中容易出现的“梯度消失”问题。

3.4 网络的万能逼近定理

从控制理论与非线性系统建模的角度看,多层前馈网络提供了一种高度灵活的函数逼近器。根据万能逼近定理(Hornik 等人提出),只要赋予隐藏层足够数量的神经元,一个带有非线性激活函数的单隐层前馈网络就能够以任意精度逼近任何定义在有界闭集上的连续函数。这构成了深度学习能够胜任复杂视觉、状态观测及高级控制任务的数学底座。

4. BP 网络的核心:误差反传算法

在构建了多层前馈网络(MLP)的拓扑结构后,随之而来的工程难题是:如何高效地计算深层网络中成千上万甚至上亿个参数的梯度?这一问题的完美解法,便是由 Rumelhart、Hinton等人在 1986 年系统性提出的误差反向传播算法 (Backpropagation)

从自动化与控制理论的视角来看,BP 算法本质上是对复杂非线性系统进行参数敏感性分析 (Sensitivity Analysis) 的高效数值求解方案。

4.1 前向传播与计算图

在进行梯度计算之前,网络必须先完成一次前向传播。输入数据 x\mathbf{x}x 在网络中沿着由权重矩阵 W(l)\mathbf{W}^{(l)}W(l) 和非线性激活函数 σ\sigmaσ 构成的路径,逐层向前流动,直至输出层产生预测值 y^\hat{\mathbf{y}}y^,并与真实标签 y\mathbf{y}y 一起计算出最终的标量损失 JJJ

现代深度学习框架(如 PyTorch)在底层将这一前向过程抽象为计算图 (Computational Graph)。这是一个有向无环图(DAG),图中的节点代表变量(张量)或操作算子(如矩阵乘法、加法、激活函数),有向边则代表数据的依赖流向。计算图的存在,使得“自动求导 (Autograd)”机制能够摆脱手工推导,被工程化为底层程序的标准操作。

4.2 链式求导法则

BP 算法的数学灵魂是微积分中的多元复合函数链式求导法则
假设我们要求最终损失 JJJ 对深层网络中某一个隐藏层权重 W(l)\mathbf{W}^{(l)}W(l) 的偏导数 ∂J∂W(l)\frac{\partial J}{\partial \mathbf{W}^{(l)}}W(l)J,直接求解是极其困难且缺乏复用性的。BP 算法通过定义一个中间变量——误差项(或称为局部梯度) δ(l)=∂J∂z(l)\mathbf{\delta}^{(l)} = \frac{\partial J}{\partial \mathbf{z}^{(l)}}δ(l)=z(l)J(其中 z(l)\mathbf{z}^{(l)}z(l) 是第 lll 层激活函数之前的净输入),将复杂的求导拆解为两步且可以循环迭代的矩阵运算:

  1. 误差的逐层反传:第 lll 层的误差 δ(l)\mathbf{\delta}^{(l)}δ(l) 可以由第 l+1l+1l+1 层的误差 δ(l+1)\mathbf{\delta}^{(l+1)}δ(l+1) 线性推导而来:
    δ(l)=(W(l+1))⊤δ(l+1)⊙σ′(z(l))\mathbf{\delta}^{(l)} = (\mathbf{W}^{(l+1)})^\top \mathbf{\delta}^{(l+1)} \odot \sigma'(\mathbf{z}^{(l)})δ(l)=(W(l+1))δ(l+1)σ(z(l))
    (注:⊙\odot 表示哈达玛乘积/按元素相乘,σ′\sigma'σ 为该层激活函数的导数)
  2. 权重的梯度计算:一旦获得了该层的误差项 δ(l)\mathbf{\delta}^{(l)}δ(l),其对应的权重矩阵梯度便可直接由该层输入 a(l−1)\mathbf{a}^{(l-1)}a(l1) 与误差项的外积求得:
    ∂J∂W(l)=δ(l)(a(l−1))⊤\frac{\partial J}{\partial \mathbf{W}^{(l)}} = \mathbf{\delta}^{(l)} (\mathbf{a}^{(l-1)})^\topW(l)J=δ(l)(a(l1))

4.3 梯度的反向流动与动力学隐患

在 BP 网络中,信息流分为两个截然相反的方向:前向传播计算网络“状态”(激活值),反向传播计算网络“动力”(梯度)。
然而,链式法则在深层网络中也埋下了动力学隐患。观察误差反传公式 δ(l)=(W(l+1))⊤δ(l+1)⊙σ′(z(l))\mathbf{\delta}^{(l)} = (\mathbf{W}^{(l+1)})^\top \mathbf{\delta}^{(l+1)} \odot \sigma'(\mathbf{z}^{(l)})δ(l)=(W(l+1))δ(l+1)σ(z(l)) 可以发现,每反传一层,误差都需要乘以当前层的权重矩阵和激活函数导数。

  • 如果激活函数的导数最大值小于 1(例如传统 Sigmoid 的导数最大仅为 0.25),或者初始化的权重过小,经过多层连乘后,底层的误差梯度会呈指数级衰减,这就是经典的梯度消失 (Gradient Vanishing) 现象。
  • 反之,如果连乘项始终大于 1,则会引发梯度爆炸 (Gradient Exploding),导致参数更新彻底失控。

这就解释了为什么前一节中提到的 ReLU 激活函数(正半轴导数恒为 1)在现代深度学习中占据了绝对的主导地位,它在很大程度上维持了反向传播过程中梯度流动的健康与稳定。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐