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}$:网络参数
公式解释:
- $max \ \theta_{d}$:在生成水平不变的情况下,尽量提高判别网络的正确率
- $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)))] $$
-
再训练生成器(梯度下降): $$ \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散度
$$
$$
具体算法
总结
- 不需要显式的密度函数定义
- 采用游戏理论方法:利用两个玩家的博弈,来学习训练数据的分布
优点:
- 优雅,目前最好的生成效果
缺点:
- 很难训练,非常不稳定
- 无法计算赝本或者隐变量的概率
领域热点:
- 更好的损失函数,更稳定的训练方法
- 条件GANS,将GANS应用于更多任务