Aleksa and Danijel: Rubik’s Cube
When it came to choosing our project, we had a bunch of ideas in the beginning, but after giving it some thought we finally opted for solving Rubik’s Cube problem. Our inspiration was a combination of 2 factors. First one was seeing the high school students from a different seminar in Petnica solve the actual, one or two nights before. The second one was hearing about the DeepCube research paper published few months earlier, in May 2018. And the idea was born. We borrowed the cube from the students and started working on the project! :)
The main idea of the project was to teach the learning algorithm how to solve the cube by itself by using the smart system of rewards (reinforcement learning) and deep neural network (CNN architecture was used). Also, we didn’t give to it specific rules, for example: first solve this side and then do this and this etc. That way of approach would belong to the first wave of AI also called symbolic/classical AI. We wanted to solve the problem using the machine learning approach. The way humans are solving the cube is by using different non-optimal heuristic algorithms, usually crafted so that we can engage our pattern recognition abilities.
Biggest challenge we had was at the beginning of the project when we discovered, after some time, how hard it actually is to solve this problem using the deep reinforcement learning approach. At the first glance the problem didn't look so difficult, again human intuition failed us. Then we revisited the paper "DeepCube" where Rubik's cube was completely solved (every state), for the first time in history! using the ML approach. Their training went for days on some crazy configuration (many Tesla GPU's) we didn't have. When we saw how many possible starting states the cube can have, and how fresh was the problem (solved completely just two months ago) we considered downsizing the problem to 2x2 cube, which didn’t turn out to be easy to solve either. Finally, we decided to go for the original project and we are glad we did it! We were lucky that somebody already open-sourced some similar project on GitHub which served as our starting point. We had a lot of problems to modify this project as the codebase was huge!
We learned how it is to work in a smaller team on a hackathon-like machine learning project. How intensive it can be but also how interesting! We learned to appreciate having a mentor, whom you can ask project-related questions, and having the environment full of talented, likely-minded individuals. We also learned how to overcome engineering obstacles that arise during the project development stage.