VGG和神经网络

VGG 网络详解

基本特点

  • 核心思想:通过堆叠多个 3×3 卷积层构建深度网络
  • 架构特点
    • 采用可重复的 "VGG 块" 结构
    • 每个 VGG 块:2-4 个 3×3 卷积层 + 1 个 2×2 最大池化层
    • 全连接部分:2 个 4096 神经元层 + 1 个 1000 类输出层

VGG 块详解

  • 卷积层 :3×3 卷积核,填充 = 1
    • 小卷积核的优势:
      • 减少参数数量
      • 增加非线性变换次数
      • 提高模型表达能力
  • 池化层 :2×2 最大池化,步幅 = 2
    • 作用:尺寸减半,提高计算效率

经典 VGG 架构(VGG-16)

  • 输入:224×224×3 彩色图像
  • 卷积部分
    • Block 1:2 个 64 通道卷积 → 池化 → 112×112×64
    • Block 2:2 个 128 通道卷积 → 池化 → 56×56×128
    • Block 3:3 个 256 通道卷积 → 池化 → 28×28×256
    • Block 4:3 个 512 通道卷积 → 池化 → 14×14×512
    • Block 5:3 个 512 通道卷积 → 池化 → 7×7×512
  • 全连接部分
    • 7×7×512 → 4096 → 4096 → 1000(Softmax)

VGG-19 与其他变体

  • VGG-19:16 个卷积层 + 3 个全连接层
  • 配置差异:主要在 Block 3 和 Block 4 中增加卷积层数
  • 计算特点
    • 参数量大 (约 1.38 亿)
    • 主要集中在全连接层

VGG 的贡献与局限

  • 贡献
    • 验证了深度是提升性能的关键因素
    • 标准化了 CNN 架构模式
  • 局限
    • 参数量巨大,计算成本高
    • 全连接层占用大量内存

网络发展脉络

LeNet(1995)

  • 2 个卷积层 + 2 个池化层 + 2 个全连接层
  • 为 CNN 奠定基础,但规模较小

AlexNet(2012)

  • 5 个卷积层 + 3 个全连接层
  • 关键创新:ReLU 激活、Dropout、最大池化、数据增强
  • 开启现代 CNN 时代

VGG(2014)

  • 更深的架构,使用小卷积核堆叠
  • 验证了网络深度对性能的重要性

后续发展方向

  • ResNet:引入残差连接解决梯度消失问题
  • DenseNet:密集连接,增强特征复用
  • MobileNet:深度可分离卷积,适合移动端
  • EfficientNet:复合缩放策略,效率更高

网络设计原则

卷积核选择

  • 小卷积核 (3×3) 优于大卷积核 (5×5、7×7)
  • 可通过堆叠小核实现大核的感受野
  • 减少参数数量,增加非线性变换

网络深度与宽度

  • 深度增加:提高特征抽象能力
  • 宽度增加:增加每层级的表达能力
  • 需平衡计算成本与性能需求

池化策略

  • 最大池化:保留强响应,适合分类任务
  • 平均池化:平滑特征,适合需要保留全局信息的任务
  • 步幅控制:影响特征图尺寸和计算效率

全连接层设计

VGG 证明大尺寸全连接层 (4096) 能提升性能

但参数量巨大,后续被全局池化等方法替代


1. 层

  • 作用:层是神经网络的基本信息处理单元,负责对输入数据进行一次或多次变换。
  • 常见类型
    • 全连接层:每个输入神经元都与输出神经元相连。
    • 卷积层:通过卷积核提取空间特征(如图像中的边缘、纹理)。
    • 池化层:对特征图进行下采样,保留重要信息并减少参数。
    • 归一化层:加速训练、提升稳定性(如 BatchNorm、LayerNorm)。
    • Dropout 层:随机 "关闭" 部分神经元,防止过拟合。
  • 设计考量:层的选择和顺序决定了网络的学习能力和计算效率。

2. 模型

  • 本质:由多个层按特定顺序组成的计算图。
  • 结构类型
    • 序列模型:层按顺序依次执行(如简单分类网络)。
    • 分支模型:包含并行路径(如 ResNet 的残差分支)。
    • 多输入 / 多输出模型:处理不同类型输入并产生多种输出。
  • 设计原则
    • 深度与宽度的平衡(过深过宽都会增加计算成本)。
    • 梯度流动的顺畅性(避免梯度消失或爆炸)。

3. 损失函数

  • 作用:衡量预测结果与真实标签之间的差异。
  • 常见类型
    • 分类任务:交叉熵损失(Cross Entropy Loss)。
    • 回归任务:均方误差(MSE)、平均绝对误差(MAE)。
    • 特殊任务
      • 对抗损失(GAN)。
      • 感知损失(Perceptual Loss,常用于图像风格迁移)。
  • 选择要点:损失函数应与任务目标一致,且需考虑梯度特性(如平滑性、梯度大小)。

4. 优化器

  • 作用:根据损失函数的梯度信息更新网络参数,使损失最小化。
  • 优化策略
    • 一阶方法:使用梯度(如 SGD、Adam、RMSprop)。
    • 二阶方法:使用 Hessian 矩阵(收敛快但计算量大)。
  • 超参数影响
    • 学习率:决定每次参数更新的步长。
    • 动量:模拟物理惯性,加速收敛并减少震荡。
    • 权重衰减:正则化手段,防止过拟合。

二、构建神经网络的主要工具

1. nn.Module

  • 定位:PyTorch 中所有神经网络模块的基类。
  • 核心优势
    • 自动参数管理:自动追踪可训练参数(权重、偏置)。
    • 设备迁移方便:一键将模型整体移到 CPU/GPU。
    • 状态管理:可方便切换训练 / 评估模式。
  • 设计思想:将网络封装为对象,每个模块可独立训练、测试、复用。

2. nn.functional

  • 定位:提供纯函数式的神经网络操作接口。
  • 特点
    • 无状态:不保存参数或计算状态。
    • 灵活性高:适合快速实验和自定义操作组合。
  • 适用场景
    • 激活函数(ReLU、Sigmoid 等)。
    • 池化操作。
    • 无需参数的特殊变换。
  • 权衡:需要手动管理参数和状态,不利于复杂模型的模块化。

3. 两者对比

  • nn.Module:面向对象、模块化、适合构建完整模型。
  • nn.functional:函数式、轻量灵活、适合简单运算或临时组合。
  • 选择建议
    • 构建稳定、可复用的模型 → 用 nn.Module。
    • 临时计算或实验性操作 → 用 nn.functional。
相关推荐
ShowMaker.wins6 小时前
目标检测进化史
人工智能·python·神经网络·目标检测·计算机视觉·自动驾驶·视觉检测
无风听海7 小时前
神经网络之函数真的可以表达世界的复杂性吗
人工智能·深度学习·神经网络
王彦臻9 小时前
PyTorch 神经网络工具箱核心内容
人工智能·pytorch·神经网络
love_and_hope15 小时前
Num3:Prompt工程
人工智能·pytorch·深度学习·神经网络·数据挖掘
丰年稻香16 小时前
神经网络核心机制深度解析:链式法则驱动下的梯度流动与参数优化
深度学习·神经网络·机器学习
wjt10202017 小时前
PyTorch 神经网络工具箱
人工智能·pytorch·神经网络
史锦彪17 小时前
yTorch 神经网络工具箱:核心原理与实践指南
人工智能·深度学习·神经网络
shuououo17 小时前
PyTorch 神经网络构建与训练笔记
pytorch·笔记·神经网络
jie*18 小时前
小杰机器学习(seven)——贝叶斯分类
人工智能·python·深度学习·神经网络·机器学习·分类·scikit-learn