GAN for Games
Thus far, in our deep learning exploration, we have trained all our networks using a technique called supervised training. This training technique works well for when you have taken the time to identify and label your data. All of our previous example exercises used supervised training, because it is the simplest form of teaching. However, supervised learning tends to be the most cumbersome and tedious method, largely because it requires some amount of data labeling or identification before training. There have been attempts to use this form of training for machine learning or deep learning in gaming and simulation, but they have proven to be unsuccessful.
This is why, for most of this book, we will look at other forms of training, starting with a form of unsupervised training called a generative adversarial network (GAN). GANs are able to train themselves using, in essence, a two-player game. This makes them an ideal next step in our learning and a perfect way to actually start generating content for games.
In this chapter, we explore GANs and their use in developing game content. Along the way, we will learn more fundamentals of deep learning techniques. In this chapter, we will cover the following content:
- Introducing GANs
- Coding a GAN in Keras
- Wasserstein GAN
- GAN for creating textures
- Generating music with a GAN
- Exercises
GANs are notoriously hard to train and build successfully. Therefore, it is recommended you take your time with this chapter and go through the exercises a couple of times if you need to. The techniques we learn to make effective GANs will provide you with a better overall understanding of training networks and the many other options available. We also still need to cover many fundamental concepts about training networks, so please work through this chapter thoroughly.