动手学AI 第二部分第二节 —— 主流的卷积神经网络(上)

各位同学大家好,欢迎来到动手学AI专栏。

本篇文章是第二部分第二节——主流卷积神经网络。

那由于主流的卷积神经网络呢实在是太多了,所以我打算也是分成了上下两节给大家去介绍。

干货满满,希望大家点赞关注一下呗~~~~

那我们正式开始


在当今的人工智能领域,卷积神经网络(Convolutional Neural Networks,CNN)无疑占据着举足轻重的地位。从图像识别到目标检测,从语音处理到自然语言处理的部分任务,CNN 都展现出了卓越的性能。随着技术的不断发展,现代卷积神经网络在架构设计、训练方法和应用范围上都有了极大的突破。

那么我们本篇文章,将会给大家详细介绍几种具有代表性的现代卷积神经网络,包括它们的原理、代码示例以及优缺点分析。

一、卷积神经网络基础回顾

在深入探讨现代卷积神经网络之前,让我们先简要回顾一下卷积神经网络的基本概念。卷积神经网络的核心在于卷积层,它通过卷积核在输入数据上滑动进行卷积操作,提取数据的局部特征。这种局部感知的特性使得 CNN 能够有效减少参数数量,降低计算复杂度,同时保留数据的空间结构信息。

image.png

例如,对于一张图像,卷积核可以捕捉到图像中的边缘、纹理等基本特征。池化层则通常紧随卷积层之后,它通过对局部区域进行下采样(如最大池化、平均池化),进一步减少数据的维度,同时增强特征的鲁棒性。全连接层则用于对提取到的特征进行分类或回归等任务。

OK,那我们接下来就为大家介绍几种常见的主流卷积神经网络。

二、AlexNet:开启现代卷积神经网络的大门

(一)原理

AlexNet 是 2012 年 ImageNet 图像识别大赛的冠军模型,它的出现彻底改变了深度学习的格局。AlexNet 由 5 个卷积层和 3 个全连接层组成。

网络结构如下图所示:

image.png

其主要创新点包括:

  1. 使用 ReLU 激活函数:传统的 sigmoid 或 tanh 激活函数在训练过程中容易出现梯度消失问题,而 ReLU(Rectified Linear Unit)函数 f(x)=max(0,x)f(x)=max(0,x) 能够有效解决这一问题,加快模型的收敛速度。

  2. 数据增强:通过对训练图像进行随机裁剪、翻转等操作,增加数据的多样性,防止模型过拟合。

  3. Dropout 正则化:在全连接层中随机丢弃一部分神经元,减少神经元之间的共适应性,进一步防止过拟合。

  4. 可是使用多 GPU 训练:利用多个 GPU 并行计算,加速模型的训练过程。

(二)代码示例(使用 PyTorch)

import torch
import torch.nn as nn


class AlexNet(nn.Module):
    def __init__(self, num_classes=1000):
        super(AlexNet, self).__init__()
        self.features = nn.Sequential(
            nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
            nn.Conv2d(64, 192, kernel_size=5, padding=2),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
            nn.Conv2d(192, 384, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(384, 256, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.Conv2d(256, 256, kernel_size=3, padding=1),
            nn.ReLU(inplace=True),
            nn.MaxPool2d(kernel_size=3, stride=2),
        )
        self.classifier = nn.Sequential(
            nn.Dropout(),
            nn.Linear(256 * 6 * 6, 4096),
            nn.ReLU(inplace=True),
            nn.Dropout(),
            nn.Linear(4096, 4096),
            nn.ReLU(inplace=True),
            nn.Linear(4096, num_classes),
        )

    def forward(self, x):
        x = self.features(x)
        x = torch.flatten(x, 1)
        x = self.classifier(x)
        return x

(三)优缺点

  1. 优点
    • 强大的特征提取能力:能够学习到图像中丰富的语义特征,在图像分类任务上取得了巨大的成功,显著超越了传统方法。

    • 推动深度学习发展:为后续的卷积神经网络架构设计提供了重要的参考和启示,开启了深度学习在计算机视觉领域大规模应用的先河。

  2. 缺点
    • 计算资源需求高:由于模型结构较大,在训练和推理过程中需要大量的计算资源,对硬件要求较高。

    • 过拟合风险:尽管采用了数据增强和 Dropout 等技术,但在某些情况下仍可能出现过拟合现象,尤其是在训练数据量有限的情况下。

三、VGGNet:简洁而高效的网络架构

(一)原理

VGGNet 是 2014 年由牛津大学的视觉几何组(Visual Geometry Group)提出的。它的主要特点是采用了非常规整的网络结构,全部使用 3×33×3的小卷积核和 2×22×2 的最大池化层。通过堆叠多个这样的卷积层和池化层,VGGNet 构建了一个深度的网络。

模型结构示意图:

image.png

使用小卷积核的好处在于,多个 3×33×3的卷积核堆叠可以达到与大卷积核相同的感受野,同时减少了参数数量。例如,两个 3×33×3 的卷积核堆叠相当于一个 5×55×5 的卷积核的感受野,但参数数量从 5×5×Cin×Cout5×5×Cin​×Cout​ 减少到 2×(3×3×Cin×Cout)2×(3×3×Cin​×Cout​) CinCin​ 和 CoutCout​ 分别是输入和输出通道数)。

(二)代码示例(使用 PyTorch)

点击动手学AI 第二部分第二节 —— 主流的卷积神经网络(上)查看全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值