Reference 是 2021 Spring Hung-yi Lee 的机器学习的 GAN 部分。

Introduction

  • Network as Generator:
    • Network 的输入加上一个 random variable $z$ sampled from a certain distribution.
    • 使得相同的 $x$ 输入产生的输出 $y$ 不同,特别是对于那些需要“creativity”的任务.

Unconditional Generation

  • Unconditional Generation
    • Input: $z$, sampled from a normal distribution, low-dim vector.
    • Output: $y$, high-dim vector.
    • Generator(Network): 把简单的 distribution 放大成复杂的 distribution.
    • Discriminator: 多训练一个 Discriminator,输入一个图片,输出一个数值,越大代表输入图片越真实。

image-20220302204358282

  • 训练步骤:
    • Fix generator G, update discriminator D
    • Fix discriminator D, update generator G

Theory behind GAN

我们的目标是:

  • Normal Distribution 经过 Generator G 后产生的 Distribution $P_G$,与真实的数据集的 $P_{data}$ 越接近越好。
  • $G^{*}=\arg \min _{G} \operatorname{Div}\left(P_{G}, P_{d a t a}\right)$
  • 问题是,该怎么计算 $\operatorname{Div}\left(P_{G}, P_{d a t a}\right)$ 呢?
  • 事实上,GAN 是在这两个 Distribution 中做 sample 来解决这个问题,也就是 Discriminator 的功能。
  • $\max_D V(D,G)$ 与 $P_G$ 和 $P_{data}$ 的 JS Divergence 有关.
  • 也就是 $G^{*}=\arg \min _{G} \max _{D} V(G, D)$.

Tips for training GAN

  • JS divergence 的问题?
    • $P_G$ 和 $P_{data}$ 往往交集不大,因为二者往往是高维空间的 manifold.
    • 对于两个没有重合的分布,JS Divergence 永远是 log 2.
    • 也就是说,JS Divergence 没有考虑两个 Distribution 之间的距离…

image-20220302211540458

于是,我们换一种 Divergence…

  • Wasserstein distance
    • 两个 Distribution 之间的距离
    • 让一个 Distribution 变成另一个所花费的最小代价
  • 1-Lipschitz 限制
    • 使得 D 足够平滑,以免出现朝向 inf 发展的情况
    • 如何实现这个限制?
      • Improved WGAN
      • SNGAN

Evaluation of generation

  • Quality of Image

image-20220302215009447

可能会出现 Mode Collapse 的现象,生成的图片比较集中,这个问题主要是由于实际的数据分布峰值有多个,而训练只拟合了其中的一个.

img

也可能会出现 Mode Dropping 的现象,训练只 pick 了某个特征,训练了多次以后,生成的图片人脸都是一样的,只有色调的改变。

img

  • How to ensure diversity:

image-20220302215633902

  • Quality 看的是一张图片丢进 Image Classifier 之后的分布是否集中,而 Diversity 看的是一组图片丢进 Image Classifier 之后分布是否均匀.

Conditional Generation

image-20220302220339320

  • Discriminator 也增加输入 $x$,只有当 G 的输出与 $x$ match 的时候才输出高分.

应用:

  • Text to image
  • Image to image
  • Sound to image

Learning from unpaired data

最直观的想法:

image-20220302221524154

image-20220302221623184

但是,G 可能只会把 input 当成是一个 noise 来处理,在输入和输出之间没什么关系…

于是我们改进模型:

image-20220302221820843

Then we add the dual part:

image-20220302222132643