Diffusion models, as the newly emerging generative models, have outperformed GANs in a variety of application domains. Inspired by nonequilibrium statistical mechanics, diffusion models consist of two Markov chains: a forward diffusion chain and a reverse diffusion chain. By iteratively adding noise sampled from a prior distribution to the input data, the forward process gradually destroys the complex data distribution and finally converts it to a simple, known and tractable distribution. Next, the reverse process learns to recover the real data distribution from the noised distribution. Central to the success of a diffusion model is its ability to parametrize the reverse process with a neural network. New datapoints in a targeted distribution are generated by first sampling random unstructured datapoints from a prior distribution and then sequentially removing noise via the learnable reverse process.