1 什么是生成对抗网络?
系列进度
GAN 网络教程 · 第 1 / 21 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
GAN 的关键是生成器和判别器互相推动,学习时要同时看结构、训练和样本质量。阅读时可以按「GAN的基本构成 -> GAN的工作原理 -> 案例:MNIST数字生成 -> 生成器」建立结构,再回到正文里的代码、案例或指标做验证。
读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「GAN的基本构成」,再查「GAN的工作原理」。
在当今的深度学习领域,生成对抗网络(GAN, Generative Adversarial Network)作为一种创新性的模型框架,正受到越来越多的关注。GAN的独特之处在于它通过一个“对抗”的过程来进行训练,从而生成高质量的数据样本。此技术的广泛应用涵盖了图像生成、语音合成、视频预测等多个领域。
GAN的基本构成
生成对抗网络由两个主要组成部分构成:
GAN 的直觉来自生成器和判别器的相互推动。先理解这组关系,再看损失函数和训练技巧,很多不稳定现象会更容易解释。
-
生成器(Generator):这个模型的目标是生成“假”的数据样本,试图欺骗鉴别器。生成器接受随机噪声作为输入,经过学习后能够生成与真实样本相似的数据。
-
鉴别器(Discriminator):鉴别器的任务是区分输入的样本是真实样本(来自训练数据集)还是生成的样本(来自生成器)。鉴别器输出一个概率值,表示样本为真实样本的可能性。
该模型的训练过程涉及两个网络之间的“博弈”,生成器不断提高其生成能力以欺骗鉴别器,而鉴别器则不断提升其辨别能力以识别生成样本。
GAN的工作原理
在训练初期,生成器可能生成的样本质量很低。在此阶段,鉴别器能够轻松地区分真实和生成样本。然而,随着训练的进行,生成器的能力逐渐增强,生成的样本越来越接近真实样本。训练过程可以用以下损失函数来描述:
《什么是生成对抗网络?》可以按“场景、概念、动作、结果”来读。先把这四件事对齐,再回到正文里的参数、代码或流程。
- 生成器损失函数:
- 鉴别器损失函数:
其中,是鉴别器对样本判断为真实的概率,是生成器生成的样本。
案例:MNIST数字生成
为了更好地理解GAN的工作原理,我们可以简单实现一个生成对抗网络,以生成手写数字(MNIST数据集)为例。以下是一个使用TensorFlow和Keras实现的基本GAN:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# 定义生成器模型
def build_generator():
model = keras.Sequential()
model.add(layers.Dense(128, activation='relu', input_dim=100))
model.add(layers.Dense(784, activation='sigmoid'))
model.add(layers.Reshape((28, 28, 1))) # 形状为28x28的图像
return model
# 定义鉴别器模型
def build_discriminator():
model = keras.Sequential()
model.add(layers.Flatten(input_shape=(28, 28, 1)))
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid')) # 输出一个0到1之间的概率值
return model
# 构建和编译模型
generator = build_generator()
discriminator = build_discriminator()
discriminator.compile(optimizer='adam', loss='binary_crossentropy')
# GAN模型
discriminator.trainable = False
gan_input = layers.Input(shape=(100,))
generated_image = generator(gan_input)
gan_output = discriminator(generated_image)
gan = keras.Model(gan_input, gan_output)
gan.compile(optimizer='adam', loss='binary_crossentropy')
在这个案例中,我们定义了一个简单的生成器和鉴别器,目标是生成28x28的手写数字图像。通过不断迭代训练生成器和鉴别器,可以生成与MNIST数据集相似的数字。
复习《什么是生成对抗网络?》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。
练习《什么是生成对抗网络?》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。
小结
生成对抗网络(GAN)通过对抗博弈的方式在生成和鉴别的过程中实现了数据的生成,极大地推动了计算机视觉等领域的发展。随着深度学习技术的进步,GAN的应用场景也日趋广泛,如图像修复、图像生成、风格迁移等。
下一篇文章将探讨生成对抗网络的历史背景,帮助我们更好地理解GAN的产生和发展过程。这将为深入学习GAN的各种变体和应用奠定基础。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
什么是生成对抗网络?适合谁读?
这是 GAN 网络教程 系列第 1 / 21 篇,适合正在学习GAN 网络教程,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇GAN 网络教程要多久?
按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读