动学学深度学习pytorch
参考地址:https://zh.d2l.ai/
文章目录
- 动学学深度学习pytorch
- 1-第07章-现代卷积神经网络
- 1. AlexNet
- 1.1 AlexNet 的核心贡献是什么?
- 1.2 AlexNet 与 LeNet 的主要区别有哪些?
- 1.3 为什么 AlexNet 需要 GPU 训练?
- 2. VGG
- 2.1 VGG 的核心设计思想是什么?
- 2.2 VGG-11 的架构如何定义?
- 2.3 为什么 VGG 计算量大于 AlexNet?
- 3. NiN(Network in Network)
- 3.1 NiN 如何解决全连接层的问题?
- 3.2 NiN 的核心模块是什么?
- 3.3 NiN 的参数量为何显著减少?
- 4. GoogLeNet(Inception)
- 4.1 Inception 块的设计动机是什么?
- 4.2 Inception 块如何降低计算复杂度?
- 4.3 GoogLeNet 的架构特点?
- 5. 批量规范化(BatchNorm)
- 5.1 批量规范化的作用是什么?
- 5.2 批量规范化的计算流程?
- 5.3 为什么批量规范化能正则化?
- 6. ResNet(残差网络)
- 6.1 残差块如何解决深层网络退化问题?
- 6.2 ResNet-18 的架构特点?
- 6.3 为什么残差连接有效?
- 7. DenseNet(稠密连接网络)
- 7.1 DenseNet 与 ResNet 的核心区别?
- 7.2 DenseNet 的关键模块?
- 7.3 为什么 DenseNet 参数更少?
1-第07章-现代卷积神经网络
1. AlexNet
1.1 AlexNet 的核心贡献是什么?
AlexNet 首次在大规模视觉竞赛中证明:学习到的特征可以超越手工设计的特征,标志着深度学习在计算机视觉领域的重大突破。
1.2 AlexNet 与 LeNet 的主要区别有哪些?
- 深度更深:8 层 vs LeNet 的 5 层
- 激活函数:使用 ReLU 而非 Sigmoid
- 参数规模:卷积通道数是 LeNet 的 10 倍,全连接层参数量达 1GB
- 正则化:使用 Dropout 和大量数据增强(翻转、裁切、变色)
1.3 为什么 AlexNet 需要 GPU 训练?
- 计算需求:大规模矩阵乘法和卷积操作(312 TFLOPS vs CPU 的 1 TFLOPS)
- 内存需求:早期 GPU 显存有限(3GB GTX580),需双 GPU 并行设计
2. VGG
2.1 VGG 的核心设计思想是什么?
通过重复使用统一的 VGG块(3×3 卷积 + ReLU + 2×2 最大池化)构建深层网络,强调“更深更窄”的卷积比“更浅更宽”更有效。
2.2 VGG-11 的架构如何定义?
conv_arch = ((1,64), (1,128), (2,256), (2,512), (2,512)) # (卷积层数, 输出通道数)
2.3 为什么 VGG 计算量大于 AlexNet?
- 更深的卷积层(8 层 vs 5 层)
- 更大的全连接层输入(25088 vs 6400)
3. NiN(Network in Network)
3.1 NiN 如何解决全连接层的问题?
用 1×1 卷积层 替代全连接层,实现逐像素的 MLP,保留空间结构的同时减少参数量。
3.2 NiN 的核心模块是什么?
NiN块:1 个 3×3 卷积 + 2 个 1×1 卷积(逐像素 MLP)
最后用 全局平均池化层 替代全连接层输出。
3.3 NiN 的参数量为何显著减少?
取消全连接层后,参数量从 AlexNet 的 1GB 降至 NiN 的 10MB(Fashion-MNIST 示例)。
4. GoogLeNet(Inception)
4.1 Inception 块的设计动机是什么?
通过 多尺度并行路径(1×1、3×3、5×5 卷积 + 3×3 池化)高效提取图像特征,解决“多大卷积核最合适”的问题。
4.2 Inception 块如何降低计算复杂度?
- 1×1 卷积降维:在 3×3 和 5×5 卷积前减少通道数(如 192→96)
- 通道合并:四条路径输出在通道维度拼接。
4.3 GoogLeNet 的架构特点?
- 9 个 Inception 块堆叠
- 全局平均池化层替代全连接层
- 参数量仅为 AlexNet 的 1/12(6M vs 60M)
5. 批量规范化(BatchNorm)
5.1 批量规范化的作用是什么?
通过规范化中间层输入(减均值除方差),加速收敛,减少对初始化和学习率的敏感性,同时具有正则化效果。
5.2 批量规范化的计算流程?
BN(x) = γ * (x - μ_B) / sqrt(σ²_B + ε) + β
- μ_B 和 σ²_B:当前批次的均值和方差
- γ 和 β:可学习的缩放和偏移参数
5.3 为什么批量规范化能正则化?
训练中引入的批次统计噪声(μ_B 和 σ²_B 的随机性)相当于隐式正则化,类似于 Dropout 的效果。
6. ResNet(残差网络)
6.1 残差块如何解决深层网络退化问题?
通过 跳跃连接(Skip Connection)使网络能够学习 残差映射 F(x) = H(x) - x,而非直接拟合 H(x),确保新增层至少不劣于原网络。
6.2 ResNet-18 的架构特点?
- 4 个残差模块(每个含 2 个残差块)
- 通道数逐模块翻倍(64→128→256→512)
- 全局平均池化层输出(512→10)
6.3 为什么残差连接有效?
- 数学保证:嵌套函数类 F ⊆ F’,新增层可退化为恒等映射
- 梯度传播:跳跃连接缓解梯度消失,支持训练 152 层网络。
7. DenseNet(稠密连接网络)
7.1 DenseNet 与 ResNet 的核心区别?
- 连接方式:ResNet 是 相加(x + F(x)),DenseNet 是 通道拼接([x, F(x)])
- 特征复用:每一层接收前面所有层的特征图作为输入。
7.2 DenseNet 的关键模块?
- 稠密块(DenseBlock):每层输出通道数为增长率(如 32),输入通道数线性增长(增长率 × 层数)。
- 过渡层(Transition Layer):1×1 卷积降维 + 2×2 平均池化降采样。
7.3 为什么 DenseNet 参数更少?
- 特征复用减少冗余参数
- 过渡层控制通道数(如 1024→512)
- 增长率(32)远小于 ResNet 的通道增量(256→512)。