The path to learning story of Restricted Boltzmann Machine is bumpy. First, we needed to learn what are Energy-Based Models, the group of machine learning models that Restricted Boltzmann Machine is a part of. Then we need to explore functionalities of vanilla Boltzmann machine, and finally, we examined an optimized version of it – Restricted Boltzmann Machine.

To sum it up here, Energy-Based Models is a set of deep learning models which utilize physics concept of energy. They determine dependencies between variables by associating a scalar value, which represents that energy to the complete system. To be more precise, this scalar value actually represents a measure of the probability that the system will be in a certain state.

The Boltzmann Machine is one type of Energy-Based Models. They consist of symmetrically connected neurons. These neurons have a binary state, i.e they can be either on or off. The decision regarding the state is made stochastically. Since all neurons are connected to each other, calculating weights for all connections is resource demanding, so this architecture needed to be optimized. That is how we come up with Restricted Boltzmann Machine, which are presented in the image above.

All that, and many more you can find in this series of articles on Rubik’s Code:

- Introduction to Restricted Boltzmann Machines
- Implementing Restricted Boltzmann Machine with .NET Core
- Implementing Restricted Boltzmann Machine with Python and TensorFlow
- Generate Music Using TensorFlow and Python

Thank you for reading!

This article is a part of Artificial Neural Networks Series, which you can check out **here**.

Read more posts from the author at **Rubik’s Code**.