深度学习架构演进:从CNN、RNN到GAN的原理、优缺点与结构图解

1次阅读
没有评论

共计 1736 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

传统机器学习的局限性

在深度学习兴起之前,传统的机器学习方法在处理复杂数据时面临诸多挑战:

深度学习架构演进:从 CNN、RNN 到 GAN 的原理、优缺点与结构图解

  • 图像处理:手工设计特征(如 SIFT、HOG)难以捕捉图像的层次化信息
  • 序列数据:传统时序模型(如 HMM)无法建模长距离依赖关系
  • 生成任务:基于概率图模型的方法难以生成高质量复杂数据

这些局限性推动了深度学习架构的演进。下面我们按时间顺序分析三大经典架构。


1. CNN(卷积神经网络)

核心原理

CNN 通过 局部连接 和权值共享 高效处理网格结构数据:

graph LR
    A[输入图像] --> B[卷积层 Convolution]
    B --> C[激活层 ReLU]
    C --> D[池化层 Pooling]
    D --> E[全连接层 FC]

优缺点

优点 缺点
平移不变性 难以处理时序数据
参数共享降低计算量 全连接层参数量大
层次化特征提取 需要大量标注数据

经典结构(LeNet-5)

INPUT -> [CONV -> RELU -> POOL]x2 -> FC -> OUTPUT

PyTorch 实现

import torch.nn as nn

class SimpleCNN(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 6, 5)  # 输入通道, 输出通道, 卷积核
        self.pool = nn.MaxPool2d(2, 2)
        self.fc1 = nn.Linear(16*5*5, 120)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = torch.flatten(x, 1)
        x = F.relu(self.fc1(x))
        return x

2. RNN/LSTM(循环神经网络)

核心原理

通过 循环连接 处理序列数据,LSTM 引入门控机制解决梯度消失:

graph LR
    A[输入 x_t] --> B[遗忘门 f_t]
    A --> C[输入门 i_t]
    A --> D[输出门 o_t]
    B & C --> E[细胞状态更新]
    E --> D --> F[输出 h_t]

优缺点

优点 缺点
处理变长序列 训练速度慢
记忆历史信息 并行化困难
门控机制缓解梯度消失 长期依赖仍有限

PyTorch 实现

class SimpleLSTM(nn.Module):
    def __init__(self, input_size, hidden_size):
        super().__init__()
        self.lstm = nn.LSTM(input_size, hidden_size)

    def forward(self, x):
        # x.shape: (seq_len, batch, input_size)
        output, (h_n, c_n) = self.lstm(x)
        return output[-1]  # 返回最后时间步输出

3. GAN(生成对抗网络)

核心原理

通过 生成器 G 和 判别器 D 的对抗训练:

Generator(z) -> Fake Data
                      \
                       --> Discriminator -> Real/Fake
Real Data ------------/

优缺点

优点 缺点
无需显式密度估计 训练不稳定
生成高质量样本 模式崩溃问题
可生成新样本 评估指标复杂

PyTorch 实现

# 生成器
G = nn.Sequential(nn.Linear(noise_dim, 256),
    nn.LeakyReLU(0.2),
    nn.Linear(256, 784),
    nn.Tanh()  # 输出[-1,1]
)

# 判别器
D = nn.Sequential(nn.Linear(784, 256),
    nn.LeakyReLU(0.2),
    nn.Linear(256, 1),
    nn.Sigmoid())

架构演进时间线

  1. 2012 年 CNN 爆发(AlexNet):解决图像空间特征提取
  2. 2014 年 LSTM 流行:解决 CNN 无法处理序列的问题
  3. 2016 年 GAN 兴起:弥补判别式模型无法生成的缺陷

常见问题与解决方案

  • CNN 过拟合:添加 Dropout 层、数据增强
  • RNN 梯度爆炸:梯度裁剪(gradient clipping)
  • GAN 模式崩溃:改用 Wasserstein GAN 架构

延伸思考

Transformer 如何结合这些架构的优点?

  • 自注意力机制:类似 CNN 的多层次特征提取
  • 位置编码:替代 RNN 的时序处理能力
  • 生成式预训练:继承 GAN 的创造能力

希望这篇对比能帮助初学者理解深度学习架构的演进脉络!

正文完
 0
评论(没有评论)