引入

输入的时候附带一个 simple distribution,这样输出的时候也会是一个 distribution。

Screen Shot 2022-05-16 at 7.36.48 AM.png

为什么要这么做?

Video Prediction

这样直接输入会导致出现一些诡异现象,例如图中的小精灵会消失,会分裂。

Screen Shot 2022-05-16 at 7.39.14 AM.png

由于 trainning data 里有向左向右的数据,所以会出现分裂的现象。

它的输出实际上要满足所有输入数据的分布,所以这时候就会折中,选取“分裂”这种方案。

Screen Shot 2022-05-16 at 7.48.36 AM.png

为其增加 simple distribution,使其能够更倾向于选择某个输入的数据。

Screen Shot 2022-05-16 at 7.49.44 AM.png

什么时候用?

当需要“创造力”的时候。

需要找一个 func,对于同样的输入,有多种不同的输出。

例如绘画、聊天机器人。

Anime Face Generation

我们需要一个 Discriminator,用来鉴别输出的东西到底可不可用。

Screen Shot 2022-05-16 at 8.10.39 AM.png

Discriminator 来迫使 generator 调整参数。

Screen Shot 2022-05-16 at 8.15.37 AM.png

步骤

  1. 保持 generator 不变,更新 discriminator。

    discriminator 对比 sample 和 generate 出来的图片的差异,更新其参数。

Screen Shot 2022-05-16 at 8.25.26 AM.png

  1. 保持 discriminator 不变,更新 generator。

    正如上文所说 discriminator 会将 sample 标记为 1,则越接近 sample 的输入,其输出值就会越接近 1,因此,generator 通过不断的更新其参数,使输出的图片能够在 generator 那里“获得高分”。

    这两个是拼在一起的,其中中间有一层输出是一个完整的图片。然后只调前面几层的参数。

Screen Shot 2022-05-16 at 8.35.46 AM.png

  1. 循环 1 和 2

Screen Shot 2022-05-16 at 2.20.49 PM.png

理论

不断缩小 $P_G$ 和 $P_{data}$ 这两个 distribution 的距离(Divergence)。

loss 就是这个距离。

Screen Shot 2022-05-17 at 1.28.40 PM.png