Generative Modeling: A Review