The classical work in a generative model that has a connection to an artificial neural network is the Boltzmann Machine  and Restricted Boltzmann Machine (RBM) . The deep version of RBM  shows many successes in pretraining the parameters of the neural networks. There are many good tutorials on RBM and source code that we can find online, my goal for this post is to point out some important aspects of RBM as my review material before posting about more complicated models such as NADE .
My favorite tutorial on RBM is by Fischer and Christian . It covers many key ideas for modeling and training RBM. My post is based on this tutorial paper.
What I understand about the RBM is that we are modeling a joint probability of visible and hidden units, . RBM removes all connections between hidden units, and result in an effective learning because all hidden units are conditional independence given visible units.
A graphical model of RBM. Blue nodes are visible units and Yellow nodes are hidden units. We want to infer hidden units from visible units.
One way to define the joint probability is to use Gibbs distribution and it defines , where Z is a normalization constant or a partition function, . It important to realize that computing the normalization constant is intractable because we have to enumerate all possible and .
The gradient of log-likelihood is . Once we take a derivative w.r.t. to the model parameter, , the gradient is:
This expression shows that the gradient is the difference between an expected energy under the model distribution and under the posterial distribution. Directly evaluating these summation is intractable.
RBM defines an energy function as We can derive the gradient w.r.t. to . First, we derive . Then, the gradient is become:
We can also show that is a sigmoid function. A similar derivation can be applied for . Due to these facts, RBM can be interpreted as a stochastic neural network where the probability of a hidden node being one is dictated by .
Training RBM is tricky because we can’t directly evaluate the expected term. One common approximation is to use Gibbs sampling to sample the most probable hidden and variable units from Then, we can approximate the second term. However, running Gibbs sampling requires many iterations in order to reach a stationary point, Hinton proposed a contrastive divergence where running Gibbs sampling only for k steps.
RBM is the classical stochastic neural network where it models a joint distribution between visible and hidden units. Training RBM is tricky and requires an approximation of the second log-likelihood term. The modern models such as NADE and VAE turn stochastic layers in a neural network to a deterministic system and thus training can be done through a standard backpropagation. This might be one of the reasons why NADE and VAE are more popular than RBM.
 Hinton, Geoffrey E., and Terrence J. Sejnowski. “Optimal perceptual inference.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. IEEE New York, 1983.
 Hinton, Geoffrey E. “Training products of experts by minimizing contrastive divergence.” Neural Computation 14.8 (2002): 1771-1800.
 Salakhutdinov, Ruslan, and Geoffrey E. Hinton. “Deep Boltzmann Machines.” AISTATS. Vol. 1. 2009.
 Uria, Benigno, et al. “Neural Autoregressive Distribution Estimation.” Journal of Machine Learning Research 17.205 (2016): 1-37.
 Fischer, Asja, and Christian Igel. “An introduction to restricted Boltzmann machines.” Progress in Pattern Recognition, Image Analysis, Computer Vision, and Applications (2012): 14-36.