[论文速通]tmd GAN!

打黑工好几个月,突然想起来自己是个没毕业的硕士研究生()

读完了也实在是没力气写博客了,让gpt生成了一个

看点老的文章也算纯纯满足好奇心了

凑活记录一下吧

# 从概率分布到对抗博弈:我的 GAN 原始论文阅读笔记

## 一、GAN 到底在学习什么?

GAN 的目标不是让生成器记住某一张真实图片,而是让生成器产生的整体分布接近真实数据分布。

真实数据服从:

$$
x \sim p_{\mathrm{data}}(x)
$$

生成器首先从一个简单的先验分布中采样噪声:

$$
z \sim p_z(z)
$$

再通过生成器得到样本:

$$
x = G(z)
$$

当随机变量 \(z\) 经过映射 \(G\) 后,生成样本 \(G(z)\) 会形成一个新的概率分布,记为:

$$
p_g(x)
$$

因此:

- \(G(z)\) 是一次生成得到的具体样本;
- \(p_g\) 是生成器反复采样后形成的整体分布;
- GAN 的最终目标是使

$$
p_g = p_{\mathrm{data}}
$$

原始 GAN 并不显式给出 \(p_g(x)\) 的概率密度,而是通过 \(z \mapsto G(z)\) 隐式定义这个分布。

---

## 二、判别器为什么可以看作伯努利概率模型?

判别器接收样本 \(x\),输出:

$$
D_\theta(x) \in [0,1]
$$

它表示样本来自真实数据的条件概率:

$$
D_\theta(x)
=
P_\theta(Y=1\mid X=x)
$$

其中:

- \(Y=1\):真实样本;
- \(Y=0\):生成样本。

因此,在给定 \(x\) 后,标签 \(Y\) 服从伯努利分布:

$$
Y\mid X=x
\sim
\operatorname{Bernoulli}(D_\theta(x))
$$

其条件概率可以写为:

$$
P_\theta(Y=y\mid X=x)
=
D_\theta(x)^y
\left(1-D_\theta(x)\right)^{1-y}
$$

判别器训练可以理解为条件极大似然估计。

对一组带标签的样本 \((x_i,y_i)\),对数似然为:

$$
\ell(\theta)
=
\sum_i
\left[
y_i\log D_\theta(x_i)
+
(1-y_i)\log(1-D_\theta(x_i))
\right]
$$

实际神经网络框架通常最小化负对数似然:

$$
\mathcal L_D=-\ell(\theta)
$$

这就是二分类交叉熵。

整个过程可以概括为:

$$
x
\xrightarrow{\text{神经网络}}
D_\theta(x)
\xrightarrow{\text{负对数似然}}
\mathcal L_D
\xrightarrow{\text{反向传播}}
\nabla_\theta\mathcal L_D
\xrightarrow{\text{优化器}}
\theta\text{ 更新}
$$

所以:

- 概率模型决定训练准则;
- 神经网络负责参数化概率;
- 反向传播负责计算梯度;
- SGD、Momentum 等优化器负责更新参数。

---

## 三、GAN 的极小极大目标

GAN 的原始目标为:

$$
\min_G\max_D V(D,G)
$$

其中:

$$
V(D,G)
=
\mathbb E_{x\sim p_{\mathrm{data}}}
[\log D(x)]
+
\mathbb E_{z\sim p_z}
[\log(1-D(G(z)))]
$$

判别器 \(D\) 希望最大化这个目标:

- 对真实样本,希望 \(D(x)\rightarrow 1\);
- 对生成样本,希望 \(D(G(z))\rightarrow 0\)。

生成器 \(G\) 希望最小化这个目标,使判别器无法识别生成样本。

原始算法采用交替训练:

1. 更新判别器 \(k\) 次;
2. 更新生成器一次。

论文实验中通常取:

$$
k=1
$$

这不是两个网络真正意义上的完全同步训练,而是交替更新。

---

## 四、固定生成器后,最优判别器是什么?

固定 \(G\) 后,生成分布 \(p_g\) 也被固定。

GAN 目标可以写成积分形式:

$$
V(D,G)
=
\int
p_{\mathrm{data}}(x)\log D(x)\,dx
+
\int
p_g(x)\log(1-D(x))\,dx
$$

对每一个固定的 \(x\),需要最大化:

$$
p_{\mathrm{data}}(x)\log D(x)
+
p_g(x)\log(1-D(x))
$$

最终可以得到最优判别器:

$$
D_G^*(x)
=
\frac{p_{\mathrm{data}}(x)}
{p_{\mathrm{data}}(x)+p_g(x)}
$$

它反映了真实数据密度与生成数据密度的相对大小。

当:

$$
p_g=p_{\mathrm{data}}
$$

有:

$$
D_G^*(x)=\frac12
$$

这不是判别器“训练失败”,而是两个分布已经完全相同,判别器无法再根据输入判断样本来源。

---

## 五、为什么要把极小极大问题重新表述?

定义:

$$
C(G)=\max_D V(D,G)
$$

意思是:对于当前的生成器 \(G\),先假设判别器已经达到最优,再研究生成器面对的目标。

因此:

$$
\min_G\max_D V(D,G)
$$

可以重新写成:

$$
\min_G C(G)
$$

把最优判别器 \(D_G^*\) 代回目标函数:

$$
C(G)
=
\mathbb E_{x\sim p_{\mathrm{data}}}
\left[
\log
\frac{p_{\mathrm{data}}(x)}
{p_{\mathrm{data}}(x)+p_g(x)}
\right]
$$

$$
+
\mathbb E_{x\sim p_g}
\left[
\log
\frac{p_g(x)}
{p_{\mathrm{data}}(x)+p_g(x)}
\right]
$$

经过这一步,公式中不再出现独立的判别器,只剩下:

$$
p_{\mathrm{data}}
\quad\text{和}\quad
p_g
$$

这使作者能够直接研究两个概率分布之间的关系。

---

## 六、KL 散度、JSD 与定理 1

KL 散度定义为:

$$
D_{\mathrm{KL}}(P\|Q)
=
\mathbb E_{x\sim P}
\left[
\log\frac{P(x)}{Q(x)}
\right]
$$

它衡量用分布 \(Q\) 描述来自分布 \(P\) 的数据时,多付出了多少信息代价。

KL 散度与信息熵、交叉熵之间的关系为:

$$
D_{\mathrm{KL}}(P\|Q)
=
H(P,Q)-H(P)
$$

但是 KL 散度通常不对称:

$$
D_{\mathrm{KL}}(P\|Q)
\neq
D_{\mathrm{KL}}(Q\|P)
$$

JSD 是 Jensen–Shannon divergence,即詹森–香农散度。

令混合分布:

$$
M=\frac{P+Q}{2}
$$

则:

$$
D_{\mathrm{JS}}(P\|Q)
=
\frac12D_{\mathrm{KL}}(P\|M)
+
\frac12D_{\mathrm{KL}}(Q\|M)
$$

JSD 是对称的:

$$
D_{\mathrm{JS}}(P\|Q)
=
D_{\mathrm{JS}}(Q\|P)
$$

GAN 的目标可以推导为:

$$
C(G)
=
-\log 4
+
2D_{\mathrm{JS}}
\left(
p_{\mathrm{data}}\|p_g
\right)
$$

由于:

$$
D_{\mathrm{JS}}
\left(
p_{\mathrm{data}}\|p_g
\right)
\geq 0
$$

所以:

$$
C(G)\geq-\log 4
$$

并且只有当:

$$
p_g=p_{\mathrm{data}}
$$

时,JSD 才等于零,目标函数取得全局最小值:

$$
C(G)=-\log 4
$$

需要注意的是,原始 GAN 训练时不会直接计算 KL 散度或 JSD。

实际训练仍然只是:

1. 从真实数据集中采样;
2. 从生成器中采样;
3. 训练判别器区分两者;
4. 根据判别器提供的梯度更新生成器。

JSD 是对最优判别器条件下 GAN 目标的理论解释,而不是代码中显式计算的损失函数。

---

## 七、命题 2:为什么要讨论凸性?

论文将:

$$
V(G,D)
$$

重新记为:

$$
U(p_g,D)
$$

也就是暂时不研究生成器网络参数,而把生成器看成它所产生的概率分布 \(p_g\)。

固定判别器 \(D\) 后:

$$
U(p_g,D)
=
\int p_{\mathrm{data}}(x)\log D(x)\,dx
+
\int p_g(x)\log(1-D(x))\,dx
$$

第一项与 \(p_g\) 无关。

令:

$$
c_D(x)=\log(1-D(x))
$$

则:

$$
U(p_g,D)
=
C_D+\int p_g(x)c_D(x)\,dx
$$

离散化后可以写成:

$$
U(p_g,D)
=
C_D+c_1p_1+c_2p_2+\cdots+c_np_n
$$

因此 \(U\) 关于 \(p_g\) 是一次函数,更严格地说,是线性或仿射泛函。

一次函数满足:

$$
f(\lambda x_1+(1-\lambda)x_2)
=
\lambda f(x_1)+(1-\lambda)f(x_2)
$$

而凸函数只要求:

$$
f(\lambda x_1+(1-\lambda)x_2)
\leq
\lambda f(x_1)+(1-\lambda)f(x_2)
$$

一次函数直接取等号,因此它既是凸函数,也是凹函数,但不是严格凸函数。

接下来定义:

$$
C(p_g)=\sup_D U(p_g,D)
$$

可以把它理解为:对每个 \(p_g\),从所有判别器对应的“一次函数”中,选取最高的一条。

很多直线的上方轮廓仍然是凸的,因此 \(C(p_g)\) 是凸函数。

证明凸性的意义在于:

> 这个理想化目标没有欺骗优化过程的局部最低点。

定理 1 已经说明它唯一的全局最低点是:

$$
p_g=p_{\mathrm{data}}
$$

所以在下列理想条件下:

- 每一步都能把判别器训练到最优;
- 可以直接优化概率分布 \(p_g\);
- 每次更新步长足够小;

不断更新 \(p_g\),就能够收敛到:

$$
p_g\rightarrow p_{\mathrm{data}}
$$

---

## 八、为什么双网络训练很难稳定?

GAN 中两个网络相互影响:

- \(G\) 更新后,判别器面对的生成分布发生变化;
- \(D\) 更新后,生成器接收到的梯度也发生变化。

因此,任何一个网络的目标都不是静态的。

这和 Actor–Critic 有相似之处:

- Actor 改变策略后,Critic 所估计的策略发生变化;
- Critic 估计不准确,又可能给 Actor 提供错误方向。

原始 GAN 的命题 2 只是把“小步更新”作为理论收敛条件,但没有给出类似 TRPO 的显式步长约束。

TRPO 使用 KL 散度限制新旧策略的变化:

$$
\mathbb E_s
\left[
D_{\mathrm{KL}}
\left(
\pi_{\mathrm{old}}(\cdot\mid s)
\|
\pi_{\mathrm{new}}(\cdot\mid s)
\right)
\right]
\leq\delta
$$

因此可以概括为:

> TRPO 把“小步更新”做成了明确的信赖域约束;原始 GAN 只是说明理想情况下需要足够小的步长。

实际 GAN 一般通过学习率、交替更新次数和优化器设置,尽量平衡生成器与判别器,但原始论文并没有彻底解决训练不稳定问题。

---

## 九、为什么论文强调不需要马尔可夫链?

这里的马尔可夫链不是强化学习中的 MDP,而是 MCMC:

$$
x_0\rightarrow x_1\rightarrow x_2\rightarrow\cdots
$$

传统能量模型会显式定义:

$$
p_\theta(x)
=
\frac{e^{-E_\theta(x)}}{Z}
$$

但归一化常数:

$$
Z=\int e^{-E_\theta(x)}dx
$$

通常很难计算,也难以直接从 \(p_\theta(x)\) 中采样。

因此需要构造马尔可夫链,让它运行足够多步,逐渐接近目标分布。

经典例子包括:

- Boltzmann Machine;
- Restricted Boltzmann Machine;
- Deep Boltzmann Machine;
- 一些早期能量模型。

这些模型常使用 Gibbs sampling、Contrastive Divergence 或 Persistent Contrastive Divergence。

GAN 则直接学习:

$$
z\sim p_z
$$

$$
x=G(z)
$$

生成样本只需要一次生成器前向传播,不需要:

- 配分函数;
- MCMC;
- burn-in;
- 长时间运行采样链。

GAN 的重要贡献不是发明了反向传播,而是构造了一个可以通过判别器提供梯度的生成学习目标。

---

## 十、反向传播在 GAN 出现前就已经存在

反向传播在 20 世纪 80 年代已经成为神经网络训练的重要方法。

早期生成模型依赖 MCMC,并不是因为不会反向传播,而是因为:

> 很多生成模型虽然能够定义概率分布,却没有容易计算、容易采样、又能够直接反向传播的训练目标。

GAN 通过判别器把生成问题转化为可微的对抗优化问题:

$$
\text{生成样本}
\rightarrow
\text{判别器评价}
\rightarrow
\text{计算损失}
\rightarrow
\text{梯度反传到生成器}
$$

现代模型依然主要依靠反向传播训练,只是损失来源不同:

| 模型 | 梯度或损失的来源 |
|---|---|
| 分类模型 | 人工标签 |
| LLM | 下一个 Token |
| VLA | 专家动作或奖励 |
| Diffusion | 噪声预测误差 |
| GAN | 判别器反馈 |
| PPO / TRPO | 策略梯度与环境奖励 |

Transformer、LLM 和 VLA 并没有取代反向传播。

它们仍然遵循:

$$
\text{可微目标}
\rightarrow
\text{反向传播}
\rightarrow
\text{梯度优化}
\rightarrow
\text{参数更新}
$$

真正不断变化的是:

> 如何设计一个能够为模型提供有效梯度的目标函数。

---

## 十一、这次阅读建立起来的整体认识

通过阅读原始 GAN 论文,可以把 GAN 的逻辑压缩成下面这条主线:

$$
z\sim p_z
\rightarrow
G(z)\sim p_g
$$

$$
p_{\mathrm{data}},p_g
\rightarrow
D_G^*
$$

$$
D_G^*
\rightarrow
C(G)
=
-\log4
+
2D_{\mathrm{JS}}
(p_{\mathrm{data}}\|p_g)
$$

$$
\min_G C(G)
\rightarrow
p_g\rightarrow p_{\mathrm{data}}
$$

从神经网络角度,则是:

$$
\text{概率模型}
\rightarrow
\text{损失函数}
\rightarrow
\text{反向传播}
\rightarrow
\text{交替优化两个网络}
$$

GAN 最值得理解的并不是“生成器和判别器互相打架”这一表面比喻,而是:

1. 生成器隐式定义生成分布 \(p_g\);
2. 判别器通过分类任务间接估计两个分布的差异;
3. 最优判别器条件下,对抗目标等价于最小化 JSD;
4. 判别器为无法直接计算概率密度的生成器提供可反向传播的梯度;
5. GAN 用可微生成网络代替了传统模型中的 MCMC 采样过程。

这也是 GAN 在生成模型发展史上的核心意义。

posted @ 2026-07-31 15:11  阿基米德的澡盆  阅读(9)  评论(0)    收藏  举报