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。
相关推荐
JJJJ_iii18 小时前
【机器学习11】决策树进阶、随机森林、XGBoost、模型对比
人工智能·python·神经网络·算法·决策树·随机森林·机器学习
南方的狮子先生19 小时前
【深度学习】卷积神经网络(CNN)入门:看图识物不再难!
人工智能·笔记·深度学习·神经网络·机器学习·cnn·1024程序员节
howard200520 小时前
神经网络初探
深度学习·神经网络·keras
合才科技1 天前
神经网络如何预测仓库拥堵?
人工智能·深度学习·神经网络
文火冰糖的硅基工坊1 天前
[人工智能-大模型-115]:模型层 - 用通俗易懂的语言,阐述神经网络为啥需要多层
人工智能·深度学习·神经网络
无风听海1 天前
神经网络之协方差
人工智能·深度学习·神经网络
IT古董2 天前
【第六章:项目实战之推荐/广告系统】3.精排算法-(2)精排算法模型精讲: DNN、deepFM、ESMM、PLE、MMOE算法精讲与实现- DNN 精排模型
人工智能·神经网络·dnn
IT古董2 天前
【第六章:项目实战之推荐/广告系统】3.精排算法-(2)精排算法模型精讲: DNN、deepFM、ESMM、PLE、MMOE算法精讲与实现- PLE 模型
人工智能·神经网络·dnn
极客BIM工作室2 天前
AI 图像生成技术发展时间脉络:从 GAN 到多模态大模型的知名模型概略解析
人工智能·神经网络·生成对抗网络
Brianna Home2 天前
PyTorch实战:CV模型搭建全指南
人工智能·pytorch·经验分享·python·神经网络·结对编程