1. 多层前馈网络与BP算法

1.1. XOR问题:线性不可分的挑战

  • 问题描述:异或(XOR)函数的四个点{(0,0)→0,(0,1)→1,(1,0)→1,(1,1)→0} 无法用一条直线分开两类。

  • 单层感知机局限:单层感知机本质是线性分类器,只能解决线性可分问题。XOR 的决策边界必须是非线性曲线,因此单层感知机无法收敛。

  • 推动发展:XOR 问题直接暴露出浅层网络的局限性,促使人们引入隐藏层,发展出多层感知机(MLP)

1.2. 多层感知机 (MLP) 结构

  • 网络组成:输入层 → 一个或多个隐藏层 → 输出层。

  • 连接方式:层与层之间全连接,神经元内部通常包含非线性激活函数(如 Sigmoid、ReLU 等)。

  • 加入隐藏层的意义:隐藏层通过非线性变换,将原始空间映射到新的特征空间,使线性不可分问题变得可分,能够逼近复杂的非线性函数。

1.3. 通用逼近定理

  • 定理指出:仅需一个包含足够多神经元的单隐藏层前馈网络,就能以任意精度逼近任意定义在紧致子集上的连续函数。

  • 虽然“三层网络”在理论上足够,但实践中深层网络往往能更高效地提取层次化特征,参数利用更有效。

1.4. BP算法(误差反向传播算法)

BP 算法是训练多层前馈网络的核心,它由正向传播反向传播两个过程交替进行。

1.4.1. 正向传播

  • 输入信号从输入层开始,逐层计算加权和并通过激活函数,最终得到预测输出。

  • 计算每层的净输入:z^{(l)} = W^{(l)} a^{(l-1)} + b^{(l)}

  • 激活输出:a^{(l)} = f(z^{(l)})f为激活函数。

  • 最终输出与标签比对得到损失(误差),如均方误差:E = \frac{1}{2}\sum (y_{pred} - y_{true})^2

1.4.2. 反向传播与梯度计算

  • 基本思想:利用链式法则将误差的梯度从输出层逐层向前传递,计算各层参数的梯度。

  • 定义误差项\delta^{(l)}为损失对第 ll 层净输入 z(l)z(l) 的偏导:\delta^{(l)} = \frac{\partial E}{\partial z^{(l)}}

  • 输出层的误差项(以平方误差 + Sigmoid 输出为例):\delta^{(L)} = (a^{(L)} - y) \odot f'(z^{(L)})

  • 隐藏层反向递推:\delta^{(l)} = (W^{(l+1)})^T \delta^{(l+1)} \odot f'(z^{(l)}),其中\odot表示逐元素相乘。

1.4.3. 权值更新核心公式

  • 有了误差项后,计算损失对权重和偏置的梯度:

    • 权重梯度: \frac{\partial E}{\partial W^{(l)}} = \delta^{(l)} (a^{(l-1)})^T

    • 偏置梯度: \frac{\partial E}{\partial b^{(l)}} = \delta^{(l)}

  • 核心增量式更新(梯度下降):

    \Delta W = -\alpha \cdot \frac{\partial E}{\partial W}

    对应原始笔记中的简化形式:
    \Delta w = \alpha \cdot \delta \cdot a
    其中:

    • \alpha:学习率,控制更新步长。

    • \delta:当前层神经元的误差项(后向传来的“责任”)。

    • a:前一层神经元的激活输出(正向传播时的输入信号)。

  • 更准确符号:对连接权重\Delta w_{ij}(从神经元ji),更新量为\Delta w_{ij} = -\alpha \cdot \delta_i \cdot a_j(注意符号习惯,取决于误差定义,部分教材采用+\alpha \cdot \delta_i \cdot a的形式,但本质相同,只需统一符号约定)。

1.5. 优点

  • 非线性拟合能力强:理论上可逼近任意复杂函数。

  • 自主学习特征:无需手工设计特征,网络通过训练自动学习输入到输出的映射。

  • 适应性强:可处理分类、回归等多种任务。

1.6. 缺点与挑战

  • 收敛速度慢:尤其使用 Sigmoid 等饱和激活函数时,梯度消失现象严重,浅层参数更新缓慢。

  • 局部最优问题:损失函数高度非凸,梯度下降容易陷入局部极小值,得不到全局最优解。

  • 网络设计困难:隐藏层数、每层神经元数、学习率等超参数缺乏系统性指导,依赖经验试错。

  • 梯度不稳定:梯度消失或梯度爆炸让深层 BP 网络难以训练(后期被 ReLU、BatchNorm、残差连接等解决)。

1.7. 常用数据集

  • MNIST:手写数字灰度图 28×28,10 类,深度学习入门必备。

  • Fashion-MNIST:服饰鞋包灰度图 28×28,10 类,复杂度略高于 MNIST,常用于算法基准测试。

2. 卷积神经网络 (CNN) 基础

2.1. 全连接网络处理图像时的问题

  • 参数爆炸:若输入224×224×3的图像,全连接第一层有1000个神经元,参数量就达224×224×3×1000≈1.5224×224×3×1000≈1.5亿,极易导致过拟合且计算量极大。

  • 丢失空间结构:全连接将图像展平为一维向量,忽略了像素间的二维邻域关系。

  • 训练缓慢:巨大参数量使前向反向计算开销极大,收敛困难。

2.2. CNN 核心思想

  • 局部连接:每个神经元只连接上一层的一个局部区域(感受野),模拟生物视觉皮层细胞。

  • 权值共享:同一特征图的所有神经元使用相同的卷积核(滤波器)参数,极大地减少参数量,同时使提取的特征具有平移等变性。

  • 层级特征提取:浅层提取边缘、纹理等低级特征,深层逐步组合成更高级的语义特征(形状、物体部件等)。

2.3. 核心概念详解

2.3.1. 卷积

  • 通过一个可学习的卷积核(滤波器)在输入特征图上滑动,计算元素乘积累加和,生成输出特征图的一个像素。

  • 每个卷积核提取一种局部特征模式,多个卷积核得到多通道特征图。

  • 输出尺寸计算(无 padding、stride=1):
    设输入尺寸W_{out} \times H_{out},卷积核大小F\times F,输出(W - F + 1) \times (H - F + 1)尺寸。

2.3.2. Padding(边界填充)

  • 在输入四周补零(或其它值),使得输出尺寸可控。

  • Same Padding:使输出尺寸与输入尺寸相同(常通过P = \frac{F - 1}{2}实现,结合stride=1)。

  • 作用:保留边缘信息,避免尺寸迅速缩小。

2.3.3. Stride(步长)

  • 卷积核移动的步幅。步长越大,输出尺寸越小,计算量越低。

  • 输出尺寸通用公式:O = \left\lfloor \frac{W - F + 2P}{S} \right\rfloor + 1

2.3.4. 多通道卷积

  • 输入为多通道(如 RGB 图像的 3 通道)时,卷积核的通道数与输入通道数一致。

  • 每个卷积核所有通道的计算结果按位置相加,得到一个单通道输出特征图;使用 KK 个这样的卷积核,输出便有 KK 个通道。

2.3.5. Pooling(池化)

  • 降采样操作,压缩特征图尺寸,减少参数量,防止过拟合,提高感受野不变性。

  • 最大池化:取窗口内最大值,保留最显著特征,反向传播时梯度只传给最大值位置。

  • 平均池化:取窗口内平均值,使特征更平滑,反向传播时梯度平均分配到窗口内各位置。

  • 常见配置:2×2 窗口,stride=2,输出尺寸减半。

2.4. 典型 CNN 结构

输入图像 → [卷积层 → 激活函数 → 池化层] × N → 全连接层 → 输出(分类)
  • 多次卷积+池化逐步提取高层语义,最后展平向量经全连接层完成分类。

  • 现代网络常在卷积后加入 Batch Normalization,并使用全局平均池化替代部分全连接层。

2.5. CNN 的反向传播

2.5.1. 卷积层误差回传

  • 计算卷积核梯度:误差图\delta^{(l)}与第l-1层的激活输出a^{(l-1)}进行卷积(有效卷积),得到损失对卷积核的梯度。

  • 向前层回传误差:将误差图\delta^{(l)}旋转180度的卷积核进行全卷积(或转置卷积),得到传递给前层的误差\delta^{(l-1)},用于继续传播。

  • 本质上仍是链式法则,只是用卷积操作高效实现。

2.5.2. 池化层误差回传

  • 最大池化:在前向传播时记录每个池化窗口内最大值的位置(通过 argmax 实现);反向传播时,将上游梯度直接填入对应的最大值位置,其余位置置零。

  • 平均池化:将上游梯度平均分配,每个位置获得\delta/池化窗口元素数。

  • 池化层没有可学习参数,仅负责传递梯度。

2.6. 经典 CNN 架构演化

2.6.1. LeNet-5 (1998)

  • 结构:输入32×32 → 卷积(6@5×5) → 平均池化(2×2) → 卷积(16@5×5) → 平均池化(2×2) → 卷积(120@5×5) → 全连接(84) → 输出(10)

  • 特点:浅层网络,参数极少,采用 Sigmoid/tanh 激活;开创了卷积+池化+全连接的基本范式,主要用于手写数字识别。

2.6.2. AlexNet (2012)

  • 重大改进

    • 使用 ReLU 激活函数,有效缓解梯度消失,加速训练。

    • Dropout 随机失活全连接层神经元,显著抑制过拟合。

    • 数据增强(随机裁剪、水平翻转等)扩充训练样本。

    • 双 GPU 并行训练,突破显存限制。

  • 让深度学习在 ImageNet 竞赛中取得压倒性优势,开启卷积神经网络时代。

2.6.3. VGG (2014)

  • 核心哲学:全部使用小卷积核(3×3),通过堆叠更多层来增加网络深度。

  • 两个 3×3 卷积堆叠的感受野等价于一个 5×5 卷积,但参数量更少且非线性更强。

  • 典型 VGG16:13个卷积层 + 3个全连接层,结构规整,但全连接层参数仍然较大。

  • 证明深度对性能至关重要。

2.6.4. ResNet (2015)

  • 残差连接:输出= \mathcal{F}(x) + x

  • 通过跳跃连接(shortcut),将输入直接加到堆叠层的输出上,网络学习的是残差映射\mathcal{F}(x) - x

  • 解决退化问题:即使深层网络不学习新东西,残差连接也可保证性能不退化(恒等映射);同时梯度可通过 shortcut 直接流入浅层,极大缓解梯度消失,使训练上百层甚至千层网络成为可能。

  • 常用瓶颈结构(1×1→3×3→1×1)减少计算量。

2.7. 网络演化规律

随着网络层数加深,经典 CNN 在设计上呈现出高度一致的规律:

  • 深度 ↑:从 LeNet(5层)到 ResNet(152层),深度大幅增加。

  • 特征图尺寸 ↓:多次池化或步长为2的卷积使空间分辨率逐渐降低。

  • 通道数 ↑:早期通道数少,后期通道数增多(如 64→128→256→512),用更多的抽象特征图补偿空间信息的减少,丰富语义表达能力。

3. 对比总结:MLP vs CNN

对比维度 多层感知机 (MLP) 卷积神经网络 (CNN)
适用数据 结构化数据、特征向量、表格数据 网格结构数据:图像、视频、语音频谱等
连接方式 全连接(每个神经元与上层所有神经元相连) 局部连接(神经元仅连接局部感受野)
参数共享 无,每个连接有独立权重 卷积核在整个空间位置共享,大幅减少参数
特征提取 需要人工特征或原始特征 自动学习层次化空间特征
平移等变性 无(依赖训练样本分布) 卷积操作天然具有平移等变性
参数量示例 输入 28×28,1000神经元 ≈ 78万参数 5×5卷积核6个 + 少量全连接,参数远小于MLP
训练效率 大数据图像上易过拟合且慢 参数效率高,训练更快,泛化更好
  • MLP 的定位:擅长处理非空间结构的数据,也常用作 CNN 的最终分类头(展平后接几个全连接层)。

  • CNN 的优势:通过局部连接 + 权值共享 + 池化,以极少的参数学到平移不变的层次化特征,是处理图像、视频等领域的基础模块。参数量的巨大缩减直接降低了过拟合风险和对数据量的需求,推动了深度学习的实用化。

Logo

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

更多推荐