All the various neural network architectures we have learned about in this book have served a specific purpose—to make a prediction about some given data. Each of these neural networks has its own respective strengths for various tasks. A CNN is very effective for object recognition tasks or music genre classification, an RNN is very effective for language translation or time series prediction, and FNNs are great for regression or classification. Generative models, on the other hand, are those that model the data, p(x), that we can sample data from, which is different from discriminative models, which learn to estimate conditional distributions, such as p(•|x).
But how does this benefit us? What can we use generative models for? Well, there are a couple of reasons why it is important for us to understand how generative models work....