生成对抗网络(GAN)的基本原理与训练过程
字数 2312 2025-10-27 17:41:11
生成对抗网络(GAN)的基本原理与训练过程
题目描述
生成对抗网络是一种通过对抗过程来估计生成模型的深度学习框架。它同时训练两个模型:一个生成模型G来捕获数据分布,一个判别模型D来估计样本来自训练数据而非G的概率。这个问题的核心是理解G和D如何通过“对抗”进行训练,并最终使G生成足以以假乱真的数据。
解题过程循序渐进讲解
第一步:理解核心思想——博弈论中的二人零和博弈
- 核心比喻:想象一个制造假币的团伙(生成器G)和一个警察(判别器D)。G的目标是制造出尽可能逼真的假币,让D无法分辨。D的目标是提升自己的鉴别能力,能准确区分真币和G制造的假币。
- 对抗目标:G和D的目标是直接对抗的。它们在一个极小极大博弈(minimax game)中竞争。G试图最小化D做出正确判断的概率,而D试图最大化这个概率。
- 最终理想状态:经过充分的训练后,G能够生成与真实数据几乎无法区分的样本,此时D的判断会变得完全随机(即概率为1/2),因为它无法获得任何有效信息来区分真假。
第二步:解析网络结构——生成器与判别器
- 生成器(Generator, G):
- 输入:通常是一个从简单分布(如标准正态分布)中随机采样的低维噪声向量(z)。这个噪声为生成过程提供随机性。
- 输出:一个具有与真实数据相同维度的样本。例如,对于生成64x64像素的彩色图片,G的输出就是一个64x64x3的张量。
- 常见结构:通常使用转置卷积(Transposed Convolution,或称反卷积)神经网络,将低维噪声“上采样”成高维数据。
- 判别器(Discriminator, D):
- 输入:一个数据样本,这个样本可以是来自真实数据集的“真样本”,也可以是来自生成器的“假样本”。
- 输出:一个标量概率值(通常在0到1之间),表示判别器认为输入样本来自真实数据集的概率。
- 常见结构:通常是一个标准的分类神经网络,如卷积神经网络(CNN),最终通过一个Sigmoid激活函数输出概率。
第三步:深入训练过程与损失函数
训练过程是交替进行的,而不是同时训练两个网络。
-
定义损失函数:
- 原始的GAN论文提出了一个价值函数V(G, D):
V(D, G) = E_{x~p_data(x)}[log D(x)] + E_{z~p_z(z)}[log(1 - D(G(z)))] - 公式解读:
x ~ p_data(x)表示从真实数据分布中采样一个样本x。z ~ p_z(z)表示从先验噪声分布中采样一个噪声向量z。D(x)是判别器判断真实样本为真的概率。G(z)是生成器根据噪声z生成的假样本。D(G(z))是判别器判断假样本为真的概率。E表示求期望值(平均值)。
- 原始的GAN论文提出了一个价值函数V(G, D):
-
判别器D的训练(固定G):
- 目标:最大化价值函数V(D, G)。因为D希望:
- 对于真实样本x,
D(x)尽可能大,即log D(x)尽可能大。 - 对于生成样本G(z),
D(G(z))尽可能小,即log(1 - D(G(z)))尽可能大。
- 对于真实样本x,
- 实际操作:这等价于一个标准的二元分类任务。我们将一批真实样本的标签设为1,一批生成样本的标签设为0,然后通过梯度上升来更新D的参数,以最大化这个分类的准确率。损失函数通常表示为二元交叉熵损失。
- 目标:最大化价值函数V(D, G)。因为D希望:
-
生成器G的训练(固定D):
- 目标:最小化价值函数V(D, G)。因为G希望欺骗D,即希望D将假样本判为真,也就是希望
D(G(z))尽可能大。 - 公式转换:最小化V(D, G)中的第二项
E[log(1 - D(G(z)))],等价于让D(G(z))接近1,从而使log(1 - 1)接近负无穷,这在实际训练中会导致梯度消失。因此,在实际操作中,我们通常最大化E[log(D(G(z)))]。这个目标与最小化E[log(1 - D(G(z)))]在理论上最终会收敛到同一个点,但能提供更强劲的梯度信号。 - 实际操作:我们用一批噪声向量z通过G生成假样本,但这次我们将这些假样本的标签设为1(假装它们是真的),然后通过梯度上升来更新G的参数,以最大化D将这些假样本判断为真的概率。
- 目标:最小化价值函数V(D, G)。因为G希望欺骗D,即希望D将假样本判为真,也就是希望
-
训练循环:
- 重复以下步骤k次(例如k=1):
- 从噪声先验分布中采样一个批量的噪声向量 {z¹, z², ..., z^m}。
- 从真实数据分布中采样一个批量的真实样本 {x¹, x², ..., x^m}。
- 通过梯度上升更新判别器D的参数,以最大化
(1/m) * Σ [log D(xⁱ) + log(1 - D(G(zⁱ)))]。
- 重复以下步骤1次:
- 从噪声先验分布中采样另一个批量的噪声向量 {z¹, z², ..., z^m}。
- 通过梯度上升更新生成器G的参数,以最大化
(1/m) * Σ [log D(G(zⁱ))]。
- 重复以下步骤k次(例如k=1):
第四步:认识挑战与重要概念
- 模式崩溃(Mode Collapse):这是GAN训练中一个常见问题。指生成器G只学会了生成真实数据分布中的某一种或几种模式(样本),而无法覆盖全部多样性。例如,在生成人脸时,G可能只会生成同一张脸,缺乏多样性。
- 训练不稳定性:G和D需要保持一种精妙的平衡。如果D太强,G的梯度会消失,无法学习;如果G进步太快,训练也可能失控。找到合适的超参数和训练技巧(如不同的优化器、归一化技术)至关重要。
- 评估指标:如何客观评价生成样本的质量和多样性是一个开放的研究课题。常用的指标包括Inception Score (IS) 和 Fréchet Inception Distance (FID)。