共计 1856 个字符,预计需要花费 5 分钟才能阅读完成。
背景介绍
深度学习在过去十年中经历了快速的发展,其中 CNN(Convolutional Neural Network)、GAN(Generative Adversarial Network)和 LSTM(Long Short-Term Memory)是三种最具代表性的架构。它们的流行时间大致如下:

- CNN:2012 年 AlexNet 的突破性表现使其成为计算机视觉领域的标配,至今仍是图像处理的首选架构。
- GAN:2014 年由 Ian Goodfellow 提出,迅速成为生成模型的主流方法,尤其在图像生成任务中表现突出。
- LSTM:1997 年由 Hochreiter 和 Schmidhuber 提出,但在 2010 年代后期随着序列建模需求的增加而广泛应用。
架构对比
1. CNN(卷积神经网络)
原理 :
CNN 的核心是卷积层,通过局部感受野(Local Receptive Fields)和权值共享(Weight Sharing)提取空间特征。其数学表达为:
(f * g)(t) = \int_{-\infty}^{\infty} f(\tau)g(t-\tau)d\tau
优点 :
– 平移不变性(Translation Invariance)
– 参数效率高(Parameter Efficiency)
– 适合处理网格状数据(如图像)
缺点 :
– 难以捕捉长距离依赖关系
– 对序列数据建模能力有限
结构图 :
[Input] -> [Conv] -> [ReLU] -> [Pool] -> [FC] -> [Output]
2. GAN(生成对抗网络)
原理 :
GAN 由生成器(Generator)和判别器(Discriminator)组成,通过对抗训练(Adversarial Training)优化目标函数:
\min_G \max_D V(D,G) = \mathbb{E}_{x\sim p_{data}}[\log D(x)] + \mathbb{E}_{z\sim p_z}[\log(1-D(G(z)))]
优点 :
– 能生成高质量样本
– 无需显式建模数据分布
缺点 :
– 训练不稳定(Training Instability)
– 模式崩溃(Mode Collapse)风险
结构图 :
[Noise] -> [Generator] -> [Fake Samples]
\
-> [Discriminator] -> [Real/Fake]
[Real Data] ---------------/
3. LSTM(长短期记忆网络)
原理 :
LSTM 通过门控机制(Gate Mechanism)解决 RNN 的梯度消失问题,核心公式:
f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)
优点 :
– 长期记忆能力(Long-term Dependencies)
– 适合时序数据建模
缺点 :
– 计算复杂度高
– 参数数量多
结构图 :
[Input] -> [Forget Gate] -> [Input Gate] -> [Cell State] -> [Output Gate] -> [Output]
演进关系
- CNN -> GAN:
- CNN 擅长特征提取但缺乏生成能力
- GAN 引入对抗训练解决生成问题
-
典型改进:DCGAN 将 CNN 作为生成器和判别器的基础组件
-
GAN -> LSTM:
- GAN 难以处理序列生成任务
- LSTM-GAN 结合时序建模能力
- 应用案例:视频生成、音乐合成
应用场景
- CNN:图像分类(ImageNet)、目标检测(YOLO)
- GAN:图像生成(StyleGAN)、数据增强
- LSTM:机器翻译(Seq2Seq)、股票预测
避坑指南
- CNN 常见问题 :
- 问题:过拟合(Overfitting)
-
解决方案:使用 Dropout 或数据增强
-
GAN 训练技巧 :
- 问题:模式崩溃
-
解决方案:Wasserstein GAN 或添加正则项
-
LSTM 优化 :
- 问题:梯度爆炸
- 解决方案:梯度裁剪(Gradient Clipping)
代码示例
# CNN 示例(PyTorch)import torch.nn as nn
class CNN(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
self.pool = nn.MaxPool2d(2, 2)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
return x
思考题
当遇到以下场景时,你会如何选择架构?
1. 需要从监控视频中检测异常行为
2. 生成虚拟人脸用于隐私保护
3. 预测下周的电力负荷需求
(提示:分别考虑时空特征、生成质量和时序依赖性)
