In the previous post I explained the basic structure of an RBM. In this post I will explain the algorithm that is typically used to find the weights for an RBM. The algorithm is called the Contrastive Divergence algorithm. It works because of some limitations on the problem: that the graph of the nodes is bipartite, meaning there are two groups of nodes with no connections within the group. The hi