目录

CV_14生成模型(下)


生成模型GAN

问题:希望从训练样本中采集新数据,但是样本分布往往维度高且十分复杂,难以直接实现

解决:对简单分布采样并且学习一种映射将其变换到训练样本分布

GAN 生成对抗网络

  • 生成网络:期望产生真实图片骗过判别器
  • 判别网络:期望能够准确分辨真假图片

两个网络先后训练,产生对抗,不断进步

采用minimax方法训练: $$ \min_{\theta_{g}}\max_{\theta_{d}}[E_{x\sim p_{data}}\log{D_{\theta_{d}}}(x)+E_{x\sim p(z)}\log(1-D_{\theta_{d}}(G_{\theta_{g}}(z)))] $$

  • $ p_{data}$:真实样本分布
  • $p(z)$:噪声分布
  • $\theta_{d}:$网络参数
  • $\theta_{g}$:网络参数

公式解释:

  1. $max \ \theta_{d}$:在生成水平不变的情况下,尽量提高判别网络的正确率
  2. $min \ \theta_{g}$:期望生成图片被判别为真

训练过程:

  1. 先训练判别器(梯度上升): $$ \max_{\theta_{d}}[E_{x\sim p_{data}}\log{D_{\theta_{d}}}(x)+E_{x\sim p(z)}\log(1-D_{\theta_{d}}(G_{\theta_{g}}(z)))] $$

  2. 再训练生成器(梯度下降): $$ \min_{\theta_{g}}E_{x\sim p(z)}\log(1-D_{\theta_{d}}(G_{\theta_{g}}(z))) $$ 但是上述公式梯度过小,训练过程太慢,因此实际使用如下公式进行学习: $$ \max_{\theta_{g}}E_{x\sim p(z)}\log(D_{\theta_{d}}(G_{\theta_{g}}(z))) $$

最大化似然=最小化KL散度

$$

$$

https://s3.bmp.ovh/imgs/2022/08/11/c22e8429024b25dd.png

具体算法

https://s3.bmp.ovh/imgs/2022/08/11/ea7789b69b837e39.png

总结

  • 不需要显式的密度函数定义
  • 采用游戏理论方法:利用两个玩家的博弈,来学习训练数据的分布

优点:

  • 优雅,目前最好的生成效果

缺点:

  • 很难训练,非常不稳定
  • 无法计算赝本或者隐变量的概率

领域热点:

  • 更好的损失函数,更稳定的训练方法
  • 条件GANS,将GANS应用于更多任务