Deep Learning Coursework for software, systems and applications 3rd year module
- Using the CIFAR-10 dataset, create a NN model capable of generating an image of a pegasus
- An intentionally ill-defined learning problem; the generative model needs to use what it learns about birds and horses in order to produce the pegasus image
- Lecture catchup (especially lecture 4)
- Research generative architectures, produce list of papers / interesting articles etc.
- Select a generative model to use
- Build and train model
- Generate pegasus image
- Tweak and refine hyperparameters etc., keep track of results and details of improvements
- Write report
- Diagram of model, dicussions on its design (40 marks)
- Include best output (40 marks)
- Include batch of 64 images (20 marks)
- Variety of potential architectures explained in lecture 3
- GANs look promising
- Batch normalisation explained here
- Generative models are effectively the reverse of classifcation models, i.e. P(X|Y=y) instead of P(Y|X=x)
- KDE explained nicely here
- Lots of useful statisitcal definitions, may be worth coming back to when reading papers in the future
- Dicsussion of loss functions
- Generally a good idea to simply use L_2 as it is convenient, simple and computationally inexpensive
- GANs (Generative adversarial networks) use a game-theoretic approach to the generative problem, by competing two models against one another:
- Discriminator, D, which estimates the probability of a given sample coming from the real dataset or being a generated sample
- A generator, G, that learns to map noise drawn from some prior distribution (often Gaussian) to generated examples that capture p_data
- This creates a two-player minimax game, where one player is trying to minimize G and the other is trying to maximise D. When they reach a Nash equilibrium this is when the GAN model converges.
- GANs are notoriously difficult to train, they often demonstrate extreme instability
- ACAIs have a strong potential of being very useful, more detailed explanation on them can be found here
How to train a GAN video facebook AI here video
- Paper on Deep Convolutional Generative Adversarial Networks here
- Architecture guidelines:
- Replace pooling layers with strided convolutions (discriminator) and fractional-strided convolutions (generator)
- Use batch normalisation in both the generator and discriminator
- Remove fully connected hidden layers for deeper architectures
- Use ReLU activation in the generator for all layers except for the output, which uses Tanh
- Use LeakyReLU activation in the discriminator
- Paper on conditional GANs can be found here
- WGAN paper found here
- Latent space sampling paper found here