StyleGAN学习
预备知识:GAN
1. GAN简介
GAN模型由生成器和判别器两部分构成。
生成模型就是一种寻找分布最优参数的过程,而这些参数更新不是来自于数据样本本身,而是来自于判别模型D的一个反传梯度,此处的分布参数只是一个黑盒子一样的映射函数:输入是一个随机变量,输出是我们想要的一个数据分布。
判别模型D的训练目的就是要尽量最大化自己的判别准确率。当这个数据被判别为来自于真实数据时,标注 1,自于生成数据时,标注 0。
GAN创新性地引入了一个判别模型(常用的有支持向量机和多层神经网络)。它的优化过程就是在寻找生成模型和判别模型之间的一个纳什均衡。
2. GAN原理分析
首先我们知道真实图片集的分布,x是一个真实图片,可以想象成一个向量,这个向量集合的分布就是
P d a t a P_{data} Pdata 。我们现在有的generator生成的分布可以假设为 P G ( x ; θ ) P_G(x;\theta) PG(x;θ),这是一个由 θ \theta θ 控制的分布, θ \theta θ 是这个分布的参数。
假设我们在真实分布中取出一些数据 { x 1 , x 2 , x 3 . . . . . . . , x m } \{x^1,x^2,x^3.......,x^m\} {
x1,x2,x3.......,xm},我们想要计算一个似然 P G ( x i ; θ ) P_G(x^i;\theta) PG(xi;θ)。对于这些数据在生成模型中的似然就是 L = ∑ i = 0 n P G ( x i ; θ ) L=\sum_{i=0}^nP_G(x^i;\theta) L=∑i=0nPG(xi;θ)。我们想要最大化这个似然,等价于让generator生成真实图片的概率最大,这就变成了一个最大似然估计问题,我们找一个 θ ∗ \theta{^*} θ∗来表示这个最大化似然。
θ ∗ \theta{^*} θ∗ = arg =\arg =arg m a x θ \mathop{max}\limits_{\theta} θmax ∏ i = 1 \mathop{\prod}\limits_{i=1} i=1∏ P G ( x i ; θ ) P_G(x^i;{\theta}) PG(xi;θ)
= arg =\arg =arg m a x θ \mathop{max}\limits_{\theta} θmax log ∏ i = 1 \log\mathop{\prod}\limits_{i=1} logi=1∏ P G ( x i ; θ ) P_G(x^i;{\theta}) PG(xi;θ)
= arg =\arg =arg m a x θ \mathop{max}\limits_{\theta} θmax ∑ i = 1 m log \mathop{\sum}\limits_{i=1}^m\log i=1∑mlog P G ( x i ; θ ) P_G(x^i;{\theta}) PG(xi;θ)
≈ \approx ≈ a r g arg arg m a x θ \mathop{max}\limits_{\theta} θmax E x ∼ P d a t a E_{x{\sim}P_{data}} Ex∼Pdata log \log