Machine Learning is a hot topic these days. Rightfully so. Big companies like Google, Microsoft and IBM are putting a lot of money, research and development into machine learning, and prominent persons within the tech industry and science community like Elon Musk and Stephen Hawking are warning us about the future that is to come, if we don’t set out an agenda for building AI responsibly.
Well… doomsday predictions and machines beating the best Go players in the world aside, I’m still just trying to get the grasps of the basics of machine learning! So here are 5 useful learning resources on machine learning that I have used. The list is comprised of learning resources on neural networks and genetic algorithms, both which are topics within machine learning. Some learning resources are books, while others are blog posts and YouTube videos. If you have suggestions and links to other good learning resources, feel free to post them in the comments section below.
Programming Collective Intelligence by Toby Segaran
I bought this book awhile back. The book is very pragmatic in its approach to teaching machine learning. It’s filled with good code examples in Python. I’ve gone through roughly half of the code examples, spanning a variety of machine learning approaches: neural networks, genetic algorithms, genetic programming, vector machines, clustering and more. I really like, how you start with nothing at the start of a code example, and end up with a functioning machine learning example – to the contrary of using high level machine learning SDK’s, which I will touch upon later on this list.
I do find however one issue with the book. When I’m working on code examples from the book, I find myself missing good old mathematical formulas, and thus looking towards supplementing resources at times. Every mathematical formula in the book is written in Python code and it’s just not as readable as the symbolic equivalent of the formula, if you ask me.
Nature of Code by Daniel Shiffman, Chapter 9 on Genetic algortihms
This is an online book on just about every topic regarding the programming of (seemingly) intelligent behaviour.
It’s filled to the brim with good Java Processing examples on programming intelligent behaviour. For those of you who don’t know, Processing is a framework for Java, which makes it a quick matter to program 2D graphics and art. For this list, I’m recommending one specific chapter of the book: Chapter 9: The Evolution of Code.
This chapter deals with the topic of genetic algorithms. At the end of the chapter, among other things, you will have programmed and visualized intelligent missiles that are able to avoid obstacles in their way and reach their target. Neat and dangerous!
Furthermore, the chapter suggests to the reader additional exercises on genetic algorithms not elaborated on in the book. The exercises are ambitious but doable given the knowledge obtained by working through the examples in the chapter.
YouTube videos by sentdesk on Neural Networks and TensorFlow
The YouTuber by the name sentdesk is uploading new videos at a crazy pace about machine learning and computer vision, all written in Python. Far too many for me to have gone through them all. I did however go through some of his video tutorials on how to use Googles neural network open-source software library, TensorFlow.
His videos cover the basics, like recognising the handwritten numbers from 0-9 (the so-called MNIST dataset) using a basic deep neural network, but he also ventures into more free-style applications, like using a convolutional neural network to make a self driving car AI in GTA5! His tutorials are very pragmatic and if you follow along on one of his video series while pausing once in a while, good chance is you’ll have a working example by the end of it. The downside of his videos are, that he doesn’t always describe the theory behind the neural networks he is using. The next YouTuber on the list makes up for this.
YouTube videos by Hvass Laboratories on Neural Networks and TensorFlow
Hvass Laboratories, a YouTuber with a background in academics and machine learning, have made some excellent videos on how to use TensorFlow with Python. He not only demonstrates the use of TensorFlow, from basics to more advanced use, but explains the theory behind the neural networks he is using with nice visuals and some math thrown in here and there. Also, if you are not the video type of guy, he has written detailed documentation for each of his TensorFlow videos on his GitHub account.
Blog post by David Rutten on Genetic Algorithms
David Rutten, the creator of the Grasshopper and Galapagos plugins for the 3D CAD program Rhino3D, has written a nicely visualized, easy to understand post on the general steps of how genetic algorithms work, covering the steps of fitness function, selection, coupling, coalescence and mutation. There is no code for your eyes and mind to devour, just plain text, illustrations and concepts, which is nice for a change. David Rutten is the mastermind behind Galapagos, an opmtimization plugin based on genetic algortihms for Grasshopper. It is used by architects and building engineers for making structural optimizations to building designs.