Generative Adversarial Networks
Setup: Assume we have data
Idea: Introduce a latent variable z with simple prior p(z). Sample z ~ p(z) and pass to a Generator Network x = G(z).
Then x is a sample from the Generator distribution
Generator Network: Try to fool the discriminator by generating real-looking images
Discriminator Network: Try to distinguish between real and fake images
Jointly train Generator network and Discriminator Network
Train jointly in minimax game
- Discriminator wants to
for real data and for fake data - Generator wants
for fake data
Train G and D using alternating gradient updates
At start of training, generator is very bad and discriminator can easily tell apart real from fake
- so D(G(z)) close to 0
Vanishing gradients for G
Train G to maximize -log(D(G(Z)))
- Instead of minimize log(1-D(G(z)))
- G gets strong gradients at start of training
Architecture: DC-GAN
Generator is an upsampling convolutional network
Discriminator is a convolutional network
Vector Math