Getting started with Deep Learning


(cover image credits: NVIDIA)

Definitions: AI, ML, DL & co.

Let’s start with some (very brief) definitions just to set the scene

AI (Artificial Intelligence): The Science and Engineering of making intelligent machines (John McCarthy)

AGI (Artificial General Intelligence): AI that can do anything a human can, and more

ANI (Artificial Narrow Intelligence): AI Specialized to accomplish a specific (usually narrow in scope) task

ML (Machine Learning): a subset of ANI, focused on algorithms that builds mathematical models based on “training data” in order to make predictions.

DL (Deep Learning): a subset of ML that uses multi-layered Artificial Neural Networks. Compared to the early work on neural networks (from the 50s and 70s), Deep Learning is characterized by much bigger (deeper) neural networks and by new network topologies if compared to the early days of ANN work

Best online courses to get started

There are A LOT of courses and videos out there and there is of course no one way to get started. So this is my personal recommendation based on the material I enjoyed the most (but of course I have not checked out every single course out there!)

My personal favorites are two courses from deeplearning.ai and fast.ai

My recommendation is to start from the Deep Learning Specialization at deeplearning.ai.

The courses are available on Coursera and they are all free to audit which means you can watch all videos for free although you might not be able to submit any of the assignments (and in some cases see them) unless you subscribe to the course. Assignments are a great way to learn, but if you can’t afford paying for the course I think it’s still worth doing the free part. There are then additional courses on the site and more are coming up at time of writing. My suggestion is to come back to them later on if interested in the topic they cover

What I recommend after the deeplearning.ai specialization is to take a look at fast.ai courses, in particular “Practical Deep learning for coders”. Is a very different teaching style (top down) and it’s very hands on in terms of programming and application, but I personally found it very interesting and complementary to the other one! They also have a very active community/ forum in case you are planning to engage with other people on deep learning. (note: at time of writing, a new course is about to be published, which will probably replace the one mentioned above. I will update this as soon as the course is out)

Most courses (included the two above) assume at least some basic knowledge of programming, in particular of Python programming language. If you are not familiar with Python, I suggest you learn the basics before starting with the courses. You will not need to be an expert Python developer, but a basic familiarity with the language will help.

If you want a very short, no BS, intro to python I can recommend the Kaggle micro-course on Python.

As an aside, Kaggle website includes several other interesting micro-courses on data science and machine learning which are also worth checking out if you want a very quick intro to the main ML/DS concepts

Tools and Libraries

Most introductory courses and material these days use Python as programming language and interactive Python (a.k.a iPython) notebooks as programming environment.

One of the easiest to use (and free!) interactive Python notebooks environment with support for execution on GPUs is Google Colab (note: if you don’t know what “execution on GPU” means don’t worry, both introductory courses above will explain it ). Alternatively you can also check out Kaggle notebooks. The interface is slightly different but feature set is mostly the same. If you are not familiar with iPython notebooks, I suggest you spend a few minutes to familiarize with them before starting with the courses.

When it comes to Deep Learning frameworks, there are a few being used in the industry. Two of the most popular ones at time of writing seem to be TensorFlow (Google) and PyTorch (Facebook)

These are also the two framework being used by my recommended courses, in particular deeplearning.ai courses/material are mostly based on TensorFlow and Fast.ai is based on PyTorch (fast.ai is also a library itself, but built on PyTorch)

Things are moving very fast in this space, so the suggestion is always to check out what is suitable for your particular task at the particular moment in time when you set out to work on it, as this page might well be outdated by then!

Recommended readings

I have not found yet a good introductory book to Deep Learning that I feel like recommending. In most cases is best to work on courses and interactive material.

But there are some related reading that might be worth checking out.

The first is a free book by Andrew Ng called “Machine Learning Yearning”. This is NOT a ML introductory book, but rather a collection of useful tips on how to apply ML successfully in your projects. So is something to read AFTER your are done with your introduction material and you are ready to get started on some projects.

For those that want to deepen their understanding of the mathematical and statistical foundations of Machine Learning one other book I can recommend is Elements of Statistical Learnings, also available for free on the authors website. Note though that this book uses R (as opposed to python) for the practical example. Furthermore, it does NOT cover deep learning, but only the more “traditional” machine learning algorithms. Still a great read IMO to have a better grasp of the fundamentals