You may have noticed things have been quiet here recently. The reason is that I have been hard at work trying to learn new things myself. Machine Learning is to blame for my currently distracted state, but if you haven’t looked into it, perhaps I can help you catch the bug too.
Why Should You Care
Whether you have found my blog from an interest in Unity or mobile development / Swift, Machine Learning is a very relevant topic that is growing more and more in the spotlight. Unity is hard at work integrating a flexible solution that can provide intelligent agents for your games and simulations – check out more here. Likewise many mobile platforms like iOS and Android are focusing heavily on machine learning for mobile apps. Apple for example has Core ML and Vision that make it easy to work with a variety of classification problems.
What I’ve Experienced So Far
Of course, my experience so far with these is that you get somewhat canned experiences that are only great for solving “particular” problems. When trying something “different” you may quickly find that the general purpose algorithms don’t work very well for your specific problem. For example, I would like to be able to make an agent that can play a board game – something along the lines of Chess or Go, and I know that Unity’s branch of machine learning (called re-inforcement learning) is a branch which has been used successfully for this problem space. In my naive understanding, I want to jump straight to applying their agents to my goals and… well, let’s just say that even out of many thousands of passes that the end result still didnt look any better than something completely random – in other words, it was dumb.
The result of this failure is a desire to really learn and understand ALL the things. I want to know more about the math, and algorithms themselves. Most of it still looks like another language to me, but I am making progress. You might be surprised just how much quality content is out there to help you learn. Here I’ve included a few links to resources that I have found valuable and that I have either gone through, or plan to follow along with at some point in the near future.
This is my current favorite resource. There are a ton of free video series that feel like I am going through whole college courses – just not for credit. I don’t really care, I just want the knowledge.
Intro to Computer Science – Great for learning Python, which is a language frequently used for machine learning libraries. You’ll see this language used if you go into any of Unity’s machine learning code examples.
Intro to Statistics – Great for building up a background in some of the math you will need to understand what all is going on. Machine learning is very math heavy, and while you technically dont have to understand it all to use it, it would certainly help.
Intro to Artificial Intelligence – Provides a good intermediate level introduction to all three of the branches of machine learning.
Machine Learning – Another intermediate level machine learning course.
Reinforcement Learning – An advanced course specifically on reinforcement learning, which happens to be my favorite branch of the three.
If you keep looking you can find many other free courses that are also relevant. They also provide a host of paid content where you can get something called a Nanodegree in a focus such as machine learning.
One of the first courses I went through, which was very good, but went over my head because I didnt have a strong enough math background, is a Stanford University course taught by Andrew Ng. If you know the math, you may want to try it out, here.
I recently discovered that google has a host of educational content as well. Here is their Machine Learning Crash Course which is great because it includes a whole Prerequisites section linking to great materials that helped fill in a lot of gaps I needed to know about. This includes links to math topics that are covered by Khan Academy and Wikipedia, Python programming and overviews of various libraries that you will need, and the course itself is heavily focused on the use of Tensor Flow.
If you want just jump right in and start solving complex problems, I found this website to be a goldmine of information. The author starts with a very simple reinforcement learning algorithm and slowly builds up to more and more complex variants, each time with example code to help explain it all.
Along the way you will be introduced to something called Gym which is a really great resource for already created environments that you can test your algorithms against. In other words, you could have easy access to anything ranging from a simple text based game, to Atari games and robotics challenges. This saves you a TON of time in learning since you can focus purely on the solution rather than setting up a problem to begin with.
I just wanted to share why I’ve been so quiet recently, but also to share all of the amazing resources I’ve been finding that have helped me grow in my understanding of machine learning. Eventually I would like to contribute my own tutorials for machine learning, but there’s no reason you can’t be learning alongside me right now. Good luck!