1. GAN 基本概念
生成对抗网络(GAN)由生成器(Generator)和判别器(Discriminator)组成,通过对抗训练生成逼真数据:
- ✅ 生成器:学习从随机噪声生成数据(如图像)
- ✅ 判别器:判断数据是真实还是生成的
- 🔁 对抗过程:两者博弈达到纳什均衡
2. 实现步骤(以 PyTorch 为例)
- 数据准备:使用 MNIST 数据集作为示例
- 模型构建:
- 生成器:卷积转置层 + 激活函数
- 判别器:卷积层 + 激活函数
- 训练循环:
- 交替训练生成器和判别器
- 计算损失并反向传播
- 保存生成结果
- 可视化:
- 使用 TensorBoard 或 Matplotlib 展示生成图像
3. 示例代码片段
# 生成器定义
class Generator(nn.Module):
def __init__(self):
super(Generator, self).__init__()
self.main = nn.Sequential(
nn.ConvTranspose2d(100, 256, 4, stride=1),
nn.BatchNorm2d(256),
nn.ReLU(),
# ... 后续层
)
def forward(self, input):
return self.main(input)
4. 注意事项
- ⚠️ 避免模式崩溃(Mode Collapse):可通过 Wasserstein GAN 或梯度惩罚改进
- ⚠️ 防止梯度消失:调整判别器和生成器的损失权重
- 🔄 优化技巧:使用 Adam 优化器,添加噪声到输入数据