Get introduced to machine learning and discover its key concepts.

How is that possible?!

Machine learning can seem like magic. How can a computer recognize the objects in an image? How can a car drive itself?

Those feats are baffling, not just to the layman, but to many software developers. Even after several years of writing code, many developers are not well versed with machine learning.

To most developers, machine learning feels foreign. The field is teeming with math jargon, research conventions, and frankly, bad code. Instead of tutorials, people recommend consulting lectures and research papers. For many of us, machine learning is as intimidating as it is intriguing.

This course is an introduction for developers, written in their own language. After taking this course, you’ll be comfortable with the fundamentals and will be able to write machine learning programs. You probably would not be able to build your own self-driving car just yet, but at least you’ll know how machine learning works.

About this course

Machine learning is a broad field, and one course cannot cover it all. We’ll focus on the three facets of machine learning that are most important today:

  1. Supervised learning
  2. Neural networks
  3. Deep learning

We’ll look into those terms as we go through the course, but here’s a picture and a few quick definitions to get started:

Part I: Supervised learning

Supervised learning is a specific type of machine learning. Machine learning comes in a few different flavors, but supervised learning is the most popular one these days. Part I of this course, From Zero to Image Recognition, is a hands-on supervised learning tutorial. Within a couple of chapters, we’ll write a minimal learning program. Then we’ll evolve this program step by step, progressively turning it into a machine learning system called a perceptron. Our perceptron will be a bona fide computer vision program, powerful enough to recognize handwritten characters. We’ll craft it all by ourselves, without using machine learning libraries. We’ll be able to understand every single line of its code.

Part II: Neural networks

There are many ways to implement a supervised learning system. The most popular of those is the neural network. It’s a brilliant algorithm that was loosely inspired by the connections of neurons in our own brains. Part II of this course is dedicated to neural networks. We’ll grow the program from Part I into a full-fledged neural network. We’ll have to overcome a few challenges along the way, but the payoff will be worth it: the final neural network will be way more powerful than the fledgling program we’ll start off with. Once again, we’ll write the code ourselves, line by line. Its inner workings will be open for you to play with.

Part III: Deep learning

Neural networks got a big boost in recent years when researchers came up with breakthrough techniques to design and use them. This souped-up technology is vastly more powerful than the simple neural networks of old, so much so that it got its own name: deep learning. That’s also the title of Part III of this course. We’ll rewrite our neural network using a modern machine learning library. The resulting code will be our starting point to understand what deep learning is about. Finally, as we wrap up the course, we’ll look at a few advanced deep learning techniques, paving the way for future explorations.

In truth, things are not quite as clean-cut as our picture implies. For example, neural networks can be used in other fields of machine learning, not just in supervised learning. However, the diagram just shown is a good starting point to get a sense of the topics in this course and how they fit together.