Learning to generate data by estimating gradients of the data distribution