TomBolton.io

Tom Bolton’s AI and Machine Learning Lab Notebook.

Machine LearningVideo Games

From Wikipedia

Grinding (gaming)

In video gaming, grinding is performing repetitive tasks[1][2] for gameplay advantage… Grinding may be required by some games to unlock additional features such as level progression or additional items.

For someone who’s not a professional developer, I’ve done a good deal of programming in my day: Java, C++, C#, Javascript, and for nearly two years, I was doing full-time Ruby on Rails development. In general, it’s satisfying. Especially in the case of the RoR work where I was able to design, build and launch an entire application — the data model, the controller, the views; everything — from the ground up. It’s very empowering, and that’s what I loved about it.

Machine learning and AI is similar, and yet fundamentally different. There are lots of things I love about building AI. Just like with application development, it’s empowering. But in this case, it’s empowering in a very different way. In this case, the power is in the math and the design, and not so much in the code. The power is in things like understanding how gradient descent works, how to tune regularization parameters, how to construct a NN model that will learn. It’s independent of the actual code.

But to actually build AI, it must be represented in code. Up until this point, all the AI code I’ve written has been in Octave/Matlab. Ultimately, though, I’ve come to understand that to write “real” AI, I’ll need to be doing it in a production-ready language. There are several choices. But the best for me, at this point, seems to be Python — a language I have no experience with, and which I’ll have to learn. For me, now, this feels like a grind.

Not that I mind learning a new language. I’ve learned so many in the past I’m not worried about being able to pick it up. Also, there is a certain inherent enjoyment in learning any new tool. But as I wrote, the real power here isn’t in the code itself so much as the math. It’s the math and the algorithms that I’m really enjoying. Of course I want all the code that I write to be beautiful, elegant, and most of all, powerful. For instance, even though it wasn’t required, it was really important to me when I was first learning about cost functions and gradients to write vectorized implementations rather than resort to for-loops. In fact, I was ecstatic the first time I was able to take my for-loop implementation and vectorize it and see the 720x performance improvement that I achieved. This, though, felt more like a conceptual, math-based victory rather than a coding victory.

But learn to code I must. And so my first project is to take my vectorized hand-written number classifier and essentially just port it over to Python. I’m going to do literally nothing new with the code other than get it to work in Python. However, since it works correctly in Octave, problems and bugs will be entirely down to my knowledge of Python, and thus my sole focus can be learning the Python language, syntax, and tool essentials to have a working NN.

It’s a grind, but I’m hoping to be rewarded at the end with knowledge of a toolkit that will help me designing AI systems in real-world environments.

LEAVE A RESPONSE

You Might Also Like