1 生成对抗网络基础回顾之生成对抗网络定义
系列进度
生成对抗网络高级 · 第 1 / 21 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
GAN 进阶内容要围绕稳定性、条件控制、架构变化和评估方法建立判断框架。阅读时可以按「什么是生成对抗网络? -> 生成网络 -> 判别网络 -> GAN的训练过程」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「什么是生成对抗网络?」,再查「生成网络」。
在当前的深度学习研究中,生成对抗网络(Generative Adversarial Networks, 简称 GANs)作为一种强大的生成模型,已经引起了广泛的关注和应用。GAN的基本概念和理论框架是理解其后续架构和实际应用的基础。接下来,我们将回顾生成对抗网络的定义及其基本组成部分。
什么是生成对抗网络?
生成对抗网络是一种通过“对抗”的方式训练生成模型的框架。其核心思想是通过两个神经网络——生成网络(Generator)和判别网络(Discriminator)之间的博弈,最终实现生成高质量的数据。
进阶 GAN 的很多技巧都在处理训练平衡。先看真实样本、生成样本、判别能力和训练信号,再读后面的改进方法会更有方向。
生成网络(Generator)
生成网络的目标是从潜在空间(通常是随机噪声分布)中生成真实的数据样本。其输入通常是一个随机噪声向量 ,而输出则是一个合成数据样本 。
import torch
import torch.nn as nn
class Generator(nn.Module):
def __init__(self, noise_dim):
super(Generator, self).__init__()
self.model = nn.Sequential(
nn.Linear(noise_dim, 128),
nn.ReLU(),
nn.Linear(128, 256),
nn.ReLU(),
nn.Linear(256, 1), # 1维输出,可以是图像平铺
nn.Tanh() # 输出范围在[-1, 1]之间
)
def forward(self, z):
return self.model(z)
判别网络(Discriminator)
判别网络的任务是区分输入的数据是来自真实数据分布还是生成网络输出的假数据。其输出是一个在0到1之间的值,值越接近1表示输入数据为真实数据的概率越高。判别网络接收的数据样本为 , 输出为 。
class Discriminator(nn.Module):
def __init__(self):
super(Discriminator, self).__init__()
self.model = nn.Sequential(
nn.Linear(1, 256), # 输入数据维度
nn.LeakyReLU(0.2),
nn.Linear(256, 128),
nn.LeakyReLU(0.2),
nn.Linear(128, 1),
nn.Sigmoid() # 输出概率
)
def forward(self, x):
return self.model(x)
GAN的训练过程
生成对抗网络的训练过程可以分为两个主要部分:生成器训练和判别器训练。以下是标准的 GAN 训练流程:
读完《生成对抗网络基础回顾之生成对抗网络定义》后,可以回头问三件事:它解决什么问题,哪一步最容易出错,自己能否拿一个小例子跑通。
-
判别器训练:
- 从真实数据集中采样一批样本:。
- 生成网络生成一批假样本:,其中 是随机噪声。
- 判别器通过以下损失函数进行优化:
生成器训练:
- 使用判别器的输出来更新生成器,优化目标为使判别器错误地认为假样本为真实样本,损失函数如下:
通过不断迭代判别器和生成器,系统能够在数据分布上逐渐收敛。此过程的一大优势在于,生成器和判别器的互相促进使得无监督学习变得更加高效。
复习《生成对抗网络基础回顾之生成对抗网络定义》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《生成对抗网络基础回顾之生成对抗网络定义》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
总结
到此为止,我们对生成对抗网络的定义和基本组成部分有了初步的了解。在接下来的一篇教程中,我们将更深入地探讨生成对抗网络的架构,分析其具体实现以及不同设计选择对网络性能和结果的影响。通过这些深入的学习,相信大家能更加全面地掌握 GAN 的原理与应用。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
生成对抗网络基础回顾之生成对抗网络定义适合谁读?
这是 生成对抗网络高级 系列第 1 / 21 篇,适合正在学习生成对抗网络高级,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇生成对抗网络高级教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读