GAN

GAN

文章标题:Generative Adversarial Networks 作者:Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair,

Aaron Courville, Yoshua Bengio

发表时间:(NIPS 2014)

官方代码

——Learnable cost function损失函数时从数据学习得到的

——Mini-Max game based on Nash Equilibrium 博弈论

——Hard to training -no guarantee to equilibrium


GAN

GAN理论

噪音 z 一维标量 (均匀分布采样得来),数据 x 也是 一维标量(图中黑点,高斯分布)。

G对噪声z的映射

D对噪声z的映射到数据空间的判断线

(a):G 把 均匀分布采样得到的噪声 z 映射到 绿色高斯分布

(b):D 尽可能地去学习如何判断

真实数据均值更靠左,将左侧的数据判断为真 1, 将右侧数据判断为假 0

(c):G 尽可能地去糊弄 D,把高斯分布的均值中心往左挪动

(d):G 把 来自均匀分布的噪声,映射成和真实 data x 相似的高斯分布。D 对来自真实采样的数据 or G 生成的数据无法判断来源,概率都是 0.5

Step1:Fix generator G , and update discriminator D.

​ 训练D:D learns to assign high scores to real objects and low scores to generated objects.(提高判断力,分辨真假,生成数据为假)

Step2:Fix discriminator D, and update generator G .

​ 训练G:G learns to“fool”the discriminator.(提高造假能力,改进生成数据,使其接近真实数据)

GAN_Alogorithm流程

k 不能太小 –> 保证 判别器 D 有足够的更新

k 不能太大 –> D 过于完美,$D(G(z^{x(i)}) = 0$,对值为 0 求导,G 梯度更新有困难

k 的设计目标:使得 D 和 G 的更新进度差不多

全局最优解证明


GAN

$P_{data}$:${x_i}_{i=1}^N$

$P_g(x;\theta_g)$:generator,$G(z;\theta_g)$

$y|x$:discriminater,$P(y=1|x)=D(x)$,$P(y=0|x)=1-D(x)$

$$ \begin{equation} ​ V(D,G) = \mathbb{E}_{x\sim P_{data}}[\log D(x)] + \mathbb{E}_{x\sim P_{z}}[\log (1-D(G(z)))] \end{equation} $$$$ \begin{equation} ​ \theta_g = \arg\max_{\theta_g} \sum_{i=1}^N \log P_g(x_i) \end{equation} $$$$ \arg\min_{\theta_g} \text{KL}(P_{data}\|P_g) $$$$ \begin{equation} ​ \begin{split} ​ \max_D V(D,G) = & \int P_{\text{data}} \log D dx + \int P_g \log(1-D) dx \\ ​ =& \int (P_{\text{data}} \log D + P_g \log(1-D)) dx ​ \end{split} \end{equation} $$$$ \begin{equation} ​ \begin{split} ​ \frac{\partial \max_D V(D,G)}{\partial D} = & \frac{\partial}{\partial D} \int \left[ P_{\text{data}} \log D + P_g \log(1-D) \right]dx \\ ​ = & \int \frac{\partial}{\partial D} \left[ P_{\text{data}} \log D + P_g \log(1-D) \right]dx \\ = & \int P_{\text{data} }\cdot \frac{1}{D} + P_g \frac{-1}{1-D} dx \\ ​ = & 0 \\ ​ \end{split} \end{equation} $$$$ \begin{equation} ​ D_G^\ast = \frac{P_{\text{data}}}{P_{\text{data}} + P_{g}} \end{equation} $$$$ \begin{equation} ​ \begin{split} ​ \min_G \max_D V(D,G) = & \min_G V(D_G^\ast,G) \\ ​ = & \min_G \mathbb{E}_{x\sim P_{\text{data}}} \left[ \log \frac{P_{\text{data}}}{P_{\text{data}} + P_{g}}\right] + \mathbb{E}_{x\sim P_{g}} \left[ \log \frac{P_g}{P_{\text{data}} + P_{g}}\right] \\ = & \min_G \mathbb{E}_{x\sim P_{\text{data}}} \left[ \log \frac{P_{\text{data}}}{\frac{P_{\text{data}} + P_{g}}{2}} \cdot \frac{1}{2}\right] + \mathbb{E}_{x\sim P_{g}} \left[ \log \frac{P_g}{\frac{P_{\text{data}} + P_{g}}{2}} \cdot \frac{1}{2}\right] \\ ​ = & \min_G \text{KL}\left[ P_{\text{data}} \| \frac{P_{\text{data}} + P_{g}}{2} \right] + log\frac{1}{2} +\text{KL}\left[ P_{g} \| \frac{P_{\text{data}} + P_{g}}{2} \right]+ log\frac{1}{2} \\ = & \min_G (-log 4+2\cdot JS(P_{data}||P_g))\\ ​ \geq & - \log 4 ​ \end{split} \end{equation} $$

当且仅当$P_{\text{data}} = P_{g} = \frac{P_{\text{data}} + P_{g}}{2}$时,等号成立。此时,$P^\ast_g = P_d,P^\ast_d = \frac{1}{2}$。

KL散度:

$$ KL(P||Q)=\sum P(x) log\frac{P(x)}{Q(x)} or \int P(x) log\frac{P(x)}{Q(x)} dx $$

JS散度:

$$ JS(P_1 || P_2)=\frac{1}{2}KL(P_1||\frac{P_1+P_2}{2})+\frac{1}{2}KL(P_2||\frac{P_1+P_2}{2}) $$

拓展阅读

趣味demo

交互式可视化GAN Lab:https://poloclub.github.io/ganlab

交互式可视化GAN Lab视频讲解:https://www.bilibili.com/video/BV1R44y1377T

照片转动漫AnimeGAN:https://github.com/TachibanaYoshino/AnimeGAN

英伟达GauGAN2神笔马良:http://gaugan.org/gaugan2/

不存在的人脸:https://thispersondoesnotexist.com/

不存在的花瓶:https://thisvesseldoesnotexist.com

不存在的梗图:https://imgflip.com/ai-meme

黑白老照片上色:https://deepai.org/machine-learning-model/colorizer

黑白老照片上色:https://github.com/jantic/DeOldify

黑白老照片上色:https://www.myheritage.com/incolor

OpenAI DALLE-2:https://openai.com/dall-e-2

B站:GAN论文逐段精读【论文精读】

B站:李宏毅生成对抗网络公开课

B站:【机器学习】白板推导系列(三十一) ~ 生成对抗网络(GAN)

白板推导系列笔记

GAN动物园

OpenMMLab开源图像生成算法库MMGeneration

各种GAN的Keras实现

An Annotated Proof of Generative Adversarial Networks with Implementation Notes

Understanding Generative Adversarial Networks

0%