Diffusion Models For Machine Learning