2
$\begingroup$

I am learning about Restricted Boltzmann Machines and I'm so excited by the ability it gives us for unsupervised learning. The problem is that I do not know how to implement it using one of the programming languages I know without using libraries. I want to implement it manually, which means that I want to use native functionalities of a language as much as possible.

The programming languages I know are Java, C, PHP (my preferred language), JavaScript, R and Python. I am not familiar with TensorFlow or Scikit-Learn or similar stuff.

Thanks in advance

$\endgroup$
  • $\begingroup$ @DouglasDaseeco I'm trying, but it's hard not to get stressed out when you're a math student and you need to cover both the mathematical and practical sides of RBM's :( $\endgroup$ – stressed out Jul 11 '18 at 18:24
1
$\begingroup$

If you already know Java, you may wish to investigage Java-ML, Mahout, MLib, and DL4J for AI experimentation and research. Once you have visualizations to publish from your investigation, you can couch them in PHP for web publication. Also, use of RBMs has been giving way to convolution layering and other types of auto-encoding and feature extraction designs.

$\endgroup$
  • $\begingroup$ Thanks for your answer. What do you mean "I can couch them in PHP for web publication"? How does that work? Also, I'll really appreciate it if you can give me a code example of a working Boltzmann Machine. $\endgroup$ – stressed out Jul 11 '18 at 18:30
  • $\begingroup$ PHP is a well designed, robust, and efficient web development language and has libraries to embed SVG visualizations into web pages. Those features are quite useful when publishing findings in AI, which are often too complex to publish in table or paragraph form. Images clarify process flows, surfaces, and statistics more clearly than textual forms. ... By couch, I meant embed. $\endgroup$ – FauChristian Jul 11 '18 at 19:06
1
$\begingroup$

If your interest is to follow the hype and become an "expert" in machine learning so that we can automate the world the rest of the way and our grandchildren can just play golf and video games, then the fast path is to learn TensorFlow, Scikit-Learn, or Keras while making money writing PHP apps for fortune 500 companies.

You can begin by finding some RBM example code that looks like it executes and has some example data or a link to some. Then download whatever of those common frameworks they use, and then study by following the path of least resistance as if you were a machine learning.

No joke. Many will make money from big corporations that way and probably already are. Also if the reason you want to do the RBMs manually is you want to see how they work, this is the way to go. Take apart what others wrote like you would an old lawnmower to learn about internal combustion engines.

If your interest is to learn about the nature of intelligence and consciousness because you like to discover new things, then take the trendy frameworks less seriously and learn what RBMs are and why they are being superseded by other architectures. In that case, learning about probability, calculus, and searching algorighms in 2D, 3D, and higher dimensions (and reading books that most of the trendy people would think were dated) is the best direction.

If you want to see if, in your lifetime, you can create a digital brain that you can teach to fix the lawnmower and then go mow your lawn (also no joke) then learn to code in C and C++ and learn sockets, other systems level programming, and how to access the DSP in a video card because your going to need some blinding speed and parallelism.

$\endgroup$
  • $\begingroup$ Thank you for your answer. I really appreciate it. Regarding the second paragraph of your answer, where can I find some RBM example codes? I have found a few articles about using RBM's in image detection and generation, but none of them say even one word about how they've have implemented or share their codes with the reader. :( I'm a math student, so I have a strong background in probability theory and I have had a course covering ESL and Bishop's Pattern Recognition and I have a pending project about Boltzmann Machines that I need to orally present it with power point and codes soon. $\endgroup$ – stressed out Jul 11 '18 at 18:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.