一、 本周主要内容
本周主要聚焦于多层前馈网络(BP网络)与卷积神经网络(CNN)基础。从Minsky提出的XOR线性不可分问题引入,详细推导了多层感知机(MLP)与误差反向传播(BP)算法的原理。随后,针对全连接网络参数过多的痛点,引入了深度学习与卷积神经网络(CNN),系统学习了CNN的基本组件(卷积、池化、填充、步长),并梳理了从LeNet-5、AlexNet、VGG-16到ResNet的经典图像分类网络演进史。此外,还初步了解了PyTorch深度学习平台及Fashion-MNIST数据集的使用。
二、 理论知识梳理
2.1 多层感知机(MLP)与BP算法
XOR问题与多层感知机:单层感知机无法解决异或(XOR)等线性不可分问题。通过在输入与输出层之间增加隐藏层,构成多层前馈网络,可以解决复杂的非线性分类问题。
- 定理1:三层阈值节点网络可实现任意二值逻辑函数。
- 定理2:三层S型(Sigmoid)非线性网络可一致逼近紧集上的连续函数。
BP算法(误差反向传播):
- 正向传播:输入信号从输入层经隐层传向输出层,计算网络输出与误差。
- 反向传播:将误差按原联接通路反向计算,利用梯度下降法调整各层节点的权值和阈值。
- 优缺点评述:优点是学习完全自主且能逼近任意非线性函数;缺点是非全局收敛(易陷入局部极小值)、收敛速度慢、学习率α\alphaα难以选择,且网络结构(层数、节点数)设计依赖经验。
2.2 深度学习平台与PyTorch基础
为什么要“深度”学习?传统全连接网络面临连接权过多(如1000x1000图像接入1M隐节点会产生10^12参数)、算得慢、难收敛、易过拟合的问题。深度学习通过局部连接和信息分层处理(提取更高级别特征)来解决这些问题。
- PyTorch基本概念:
- 张量(Tensor):多维数据数组,是深度学习运算的基本物理量。
- 计算图(Computational Graph):用节点(数学操作)和线(张量传输)的有向图来描述计算任务。PyTorch采用动态计算图,所见即所得。
2.3 卷积神经网络(CNN)核心概念
受人类视觉神经生理学(Hubel & Wiesel的猫脑实验)启发,CNN通过局部感受野提取特征。
- 卷积(Convolution):使用滤波器(卷积核)提取局部特征。涉及填充(Padding)和步长(Stride)的概念,以及RGB等多通道卷积。
- 池化(Pooling):使用局部统计特征(均值或最大值),用于降采样,解决特征过多的问题。
- 网络普遍规律:随着网络加深,特征图的宽(W)和高(H)逐渐衰减,而通道数(C)逐渐增加。
三、 经典网络模型演进史
本周梳理了四种具有里程碑意义的经典CNN模型:
- LeNet-5 (早期经典)
- 结构:Input -> Conv -> Pool -> Conv -> Pool -> FC -> FC -> Softmax -> Out。
- 特点:不进行Padding,采用平均池化(Average Pooling),激活函数为Sigmoid/Tanh,参数量小(约6万)。
- AlexNet (深度学习爆发)
- 改进:全面采用最大池化(Max Pooling)和ReLU激活函数(解决梯度消失并加速收敛);引入Dropout防止过拟合;使用数据增强(裁剪、翻转、色彩抖动);采用双GPU训练策略。参数量接近6000万。
- VGG-16 (走向规整)
- 特点:网络结构极其规整,全部使用3×33 \times 33×3的小卷积核和2×22 \times 22×2的最大池化层堆叠。参数量进一步增大至约1.38亿。
- ResNet (残差网络,解决退化问题)
- 痛点:普通网络加深会导致“梯度消失”和网络退化现象(深层网络效果不如浅层)。
- 创新:引入残差块(Residual Block),通过跳跃连接(Skip Connection)将浅层激活项直接传向深层,使得训练极深的神经网络成为可能。ResNet-34的计算复杂度(FLOPs)仅为VGG-19的18%。
注:本文为课程学习记录