Getting started with Deep Learning in 2019

January 21, 2019, 21 min read

Artificial Intelligence (AI) is one of most exciting and future-proof career fields. Deep Learning, a sub-field of Machine Learning and AI, is where most AI innovation currently happens.

Nvidia made this video to showcase some of the advancements of AI and Deep Learning:

Learning Deep Learning requires time, effort and commitment. Fortunately, there is an abundance of online resources to help you learn. However, the sheer amount of information, concepts and tools that you need to comprehend and internalise can be overwhelming.

My goal is to give you a primer on what you can expect to encounter as you’re starting out with Deep Learning and point you to a few possible starting points—many of whom I used myself when I was starting out and found valuable.

If I’m successful, you should get a good understanding around what you need to know and how to go about learning it. I provide alternative options where possible, so that you can choose what works best for you and create your own learning plan.

Table of contents

  1. How long will it take to learn Deep Learning?

  2. What do I need to know in advance?

  3. Languages for Deep Learning

  4. Maths for Deep Learning

  5. Data Science courses

  6. Deep Learning libraries and frameworks

  7. Deep Learning courses

  8. More Deep Learning resources

  9. Conclusion

How long will it take to learn Deep Learning?

Generally, expect to spend a few months to learn the basics and get to an intermediate level. Depending on your experience and level of commitment, you should be comfortable exploring various aspects of Deep Learning and working on small projects after 6-12 months.

What do I need to know in advance?

Prior experience in Python, probability theory, linear algebra and Machine Learning is beneficial and will help you progress faster with Deep Learning. Don’t worry if you don’t have that experience. I will explain how they all fit together, where to focus and how to learn things gradually.

Languages for Deep Learning

The overwhelming majority of code in anything Deep Learning related (courses, articles, tutorials, papers, libraries, etc) is written in Python. JavaScript has seen significant growth recently, but it still has ways to go.

Deep Learning with Python

Python has an amazing ecosystem and a long tradition in statistics and data science. Very quickly in your Deep Learning journey, you will stumble upon tools like:

  • NumPy, a Python package for scientific computing
  • Pandas, a powerful Python data analysis toolkit built on top of NumPy
  • Jupyter Notebooks, a popular web app that allows you to create and share documents that contain code, equations, visualizations and text—and its cousin in the cloud Google Colab.

These are tools that you’ll use a lot.

How to learn Python

I recommend the following resources to learn or freshen-up your Python:

You don’t need to do a deep-dive in Python. Just get a good understanding of the basic concepts—it’s a straightforward language, anyway. You will spend more time looking up documentation for Pandas/NymPy and your Deep Learning library, rather that worrying about Python’s intricacies.

Deep Learning with JavaScript

You can now do some Deep Learning in JavaScript with Tensorflow.js (and if that’s too low-level for you there’s an abstraction for it) and Brain.js.

Why even mention JavaScript, in a article about Deep Learning? Mainly due to its meteoric rise in popularity across the stack. Many developers are familiar with JS and it’s a great, low-barrier, entry into DL.

If JavaScript is your thing, this is the path of least resistance to get your feet wet. You can experiment with these libraries and be amazed with what you can achieve with a few lines of JS. Here is a course for Tensorflow.js and one for Brain.js. There is also a Deep Learning with JavaScript book, by the authors of TensorFlow.

It’s positively impressive that we can do Deep Learning in JavaScript, but the learning resources are limited, for now. As mentioned earlier, Python rules Deep Learning, in terms of its ecosystem, learning-resources, finding help online and performance.

DL depends on massive data sets, which in turn require significant processing power—namely, powerful GPUs. JavaScript libraries typically use WebGL from within the browser to access the GPU, but that doesn’t unleash the GPU’s full potential.

“In our experience, for inference, TensorFlow.js with WebGL is 1.5-2x slower than TensorFlow Python with AVX. For training, we have seen small models train faster in the browser and large models train up to 10-15x slower in the browser, compared to TensorFlow Python with AVX.” —Tensorflow.js

As the JavaScript DL ecosystem and browser GPU support matures, I expect JavaScript’s significance in Deep Learning to grow.

Maths for Deep Learning

Do you need to know advanced linear algebra to do Deep Learning? No.

Similarly, to play piano you don’t need to understand the physics of how strings vibrate and produce sound when they are hit by a hammer. That knowledge will give you a better appreciation of piano’s internals, but you can play piano regardless.

Deep Learning is a vast field and you can work in it in many different ways. Like software engineering, there are many layers of abstraction where each layer requires different skills.

On the lower levels you have:

  • Research scientists that push the boundaries of Deep Learning, invent new techniques and methodologies, and write papers with their findings (Deepmind, IBM Watson, etc).
  • Authors of tools like Tensorflow and PyTorch and cloud services like Google Cloud AI and Amazon SageMaker.

If you want to do that or similar low-level work, you absolutely need strong mathematical knowledge.

If not, at least in the beginning, then don’t worry. Most courses listed in the upcoming sections include a refresher on linear algebra and probability theory to help you understand the underlying concepts. Later, you will probably be using libraries that handle all that stuff for you.

I do recommend doing the hard work, though. Spruce up your maths and try to understand how ML and DL work under the hood because it’s just so interesting.

My favourite learning resource for maths, is Khan Academy.

When you get to linear algebra—or if you’re still intimidated by it and are looking for some intuition—do yourself a favour and check out this masterpiece: Essence of linear algebra series, by Grant Sanderson on YouTube.

If you want to dig deeper, here are some free resources:

  1. Derivatives of multivariable functions by Khan Academy
  2. Linera Algebra by Prof. Gilbert Strang (MIT)
  3. Linear Algebra Refresher course (with Python) by Udacity
  4. Mathematics for Machine Learning Specialization by Imperial College London (Coursera)

Data Science courses

One of the challenges in Deep Learning is working with data. As mentioned earlier, expect to spend much of your time gathering, cleaning up and preparing data with Pandas/Jupyter Notebooks/etc for your models.

For that reason, a good understanding of Python’s data science toolbox will be beneficial to your DL workflow.

Here are a few resources that I found useful. They’re not of critical importance as you’re starting out with Deep Learning. Keep them in mind for later use, when you feel there are gaps in your knowledge that you need to fill.

  1. The Data Scientist with Python DataCamp career-track is good. It will cover all the bases (including introduction to Python) but it’s not free and will take some time out of your main studies—it took me a little less than a month to complete.

    Check out their Cleaning Data in Python and Pandas Foundations courses for more succinct alternatives.
  2. Introduction to Pandas with Practical Examples (free)

Deep Learning libraries and frameworks

Before starting with DL courses and getting bombarded with new terminology and concepts, let’s take some of the unknowns out to lessen the load.

Generally, a DL course will teach you fundamental concepts such as the backpropagation algorithm, Neural Networks(NN) and Deep Neural Networks (DNN) like RNNs and CNNs. It will probably include homework where you’ll have to implement some of that yourself, from scratch.

That’s great for learning and you should absolutely do it. Frameworks will abstract that functionality in an heavily optimised, efficient way. When working with abstractions of things, it’s beneficial to have an understanding of the thing. That gives you a powerful and valuable insight into the system you are working on.

Current popular Deep Learning frameworks, are:

  • TensorFlow (TS) by Google. Very popular, with special libraries for mobiles and JavaScript. TensorFlow’s API is not its greatest strength—it’s verbose and confusing—and most people use Keras, which sits on top of TS, abstracts its API and provides a more ergonomic interface.
  • PyTorch by Facebook. Newer framework that has grown rapidly in popularity. FastAI provides a Keras-like API for PyTorch.

Other DL frameworks include Caffe, Theano, MXNET, CNTK and DL4J—see this excellent comparison video.

I would recommend sticking with PyTorch or TensorFlow (with Keras)—all courses listed below use one of the two.

Deep Learning courses

Knowledge of Machine Learning is beneficial before starting with Deep Learning courses. You can prepare with THE Machine Learning course (free), by Andrew Ng. His ability to teach complex topics in an accessible and reassuring way is truly remarkable. Alternatively, for a brief introduction see Kaggle’s 4-hour Machine Learning course (free).

I also want to bring Neural Networks and Deep Learning, by Michael Nielsen (free) into this section, although it’s an online book and not a course. It is a great learning resource that will teach you many of the core concepts behind NN and DL.

Each course listing includes a video of either the course’s trailer (if available), or its first lesson so that you can get a feel for it.

I highly recommend the following path:

  1. Start with course #1, followed by #2. They’re concise, accessible and will get you up to speed quickly.
  2. Continue with one of the more thorough #3, #4 or #5 courses.
  3. Finally, pick and choose from courses #6–#10 to dive deeper into specialised areas of Deep Learning.

Without further ado, here are the courses.

1. Machine Learning & Deep Learning Fundamentals

Provider: DeepLizard
Focus: General
Duration: 4 hours
Level: Fundamentals
Cost: Free
Certificate: No

This series covers and explains concepts that are fundamental to Deep Learning and Artificial Neural Networks for beginners. In addition to covering these concepts, they also show how to implement some of the concepts in code using Keras.

You will learn about layers in an Artificial Neural Network, activation functions, backpropagation, Convolutional Neural Networks (CNNs), data augmentation, transfer learning and much more!

2. Neural Network Programming - Deep Learning with PyTorch

Provider: DeepLizard
Focus: General
Duration: 4 hours
Level: Beginner
Cost: Free
Certificate: No

This series is all about Neural Network programming and PyTorch. You will see how the process works from scratch and get a better understanding of NNs and Deep Learning.

Like #1 on this list, this mini-course is concise and beginner-friendly.

3. Practical Deep Learning for Coders

Provider: Fast.ai
Focus: General
Duration: 7 weeks (10 hours/week)
Level: Beginner
Cost: Free
Certificate: No

Learn how to build state of the art models without needing graduate-level maths—but also without dumbing anything down.

This 7-week course is designed for anyone with at least a year of coding experience, and some memory of high-school math. You will start with step one—learning how to get a GPU server online suitable for deep learning—and go all the way through to creating state of the art, highly practical, models for computer vision, natural language processing, and recommendation systems with PyTorch and fastai library.

4. Deep Learning Specialization

Provider: Coursera
Focus: General
Duration: 3 months (10 hours/week)
Level: Intermediate
Cost: Free or ~$49/month
Certificate: Yes, if paid

This course is taught by Andrew Ng, co-founder of Coursera and one of the pioneers in ML/DL. He taught the first online Machine Learning course back in 2011, when he was a professor at Stanford.

In five courses, you will learn the foundations of Deep Learning, understand how to build neural networks, and learn how to lead successful machine learning projects. You will learn about Convolutional networks, RNNs, LSTM, Adam, Dropout, BatchNorm, Xavier/He initialization, and more. You will work on case studies from healthcare, autonomous driving, sign language reading, music generation, and natural language processing. You will master not only the theory, but also see how it is applied in industry. You will practice all these ideas in Python and in TensorFlow, which you will also learn.

When you enroll, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. If you only want to read and view the course content, you can audit the course for free.

5. Deep Learning Nanodegree

Provider: Udacity
Focus: General
Duration: 4 months (12 hours/week)
Level: Intermediate
Cost: ~$900
Certificate: Yes

In this program, you’ll cover Convolutional and Recurrent Neural Networks, Generative Adversarial Networks, Deployment, and more. You’ll use PyTorch, and have access to GPUs to train models faster. You’ll learn from promiment people in the DL field like Sebastian Thrun, Ian Goodfellow, Jun-Yan Zhu, and Andrew Trask.

This is the only non-free course that I recommend. It’s also the closest you can get to a structured college course. Your employer might be willing to pay it for you, ask them—it has worked for me in the past.

6. Reinforcement Learning - Introducing Goal Oriented Intelligence

Provider: DeepLizard
Focus: Reinforcement Learning (RL)
Duration: 2 hours
Level: Intermediate
Cost: Free
Certificate: No

This series is all about Reinforcement Learning (RL). Here, you’ll gain an understanding of the intuition, the math, and the coding involved with RL. You’ll first start out with an introduction to RL where you’ll learn about Markov Decision Processes (MDPs) and Q-learning.

You’ll then move on to deep RL where you’ll learn about deep Q-networks (DQNs) and policy gradients. You’ll also build some cool RL projects in code using Python, PyTorch, and OpenAI Gym.

7. Move 37 - Deep Reinforcement Learning

Provider: The Schoof of AI, by Siraj Raval
Focus: Reinforcement Learning (RL)
Duration: 10 weeks (5 hours/week)
Level: Intermediate
Cost: Free
Certificate: Yes

This course will take you on a journey through the basics up to modern day techniques. Every week, you’ll build apps together that will cover both toy and industry problems. You’ll be able to measure your progress along the way by chatting with your peers both online and offline at the School of AI chapters globally, taking quizzes, coding challenges, and 2 graded projects. Siraj will have weekly coding live streams to help answer any questions, and his assistant instructors are available to help in their community slack channel.

8. Cutting Edge Deep Learning for Coders

Provider: Fast.ai
Focus: General
Duration: 7 weeks (10 hours/week)
Level: Advanced
Cost: Free
Certificate: No

Learn the latest developments in Deep Learning, how to read and implement new academic papers, and how to solve challenging end-to-end problems such as natural language translation. You’ll develop a deep understanding of neural network foundations, the most important recent advances in the fields, and how to implement them in the world’s fastest deep learning libraries, fastai and pytorch.

9. Convolutional Neural Networks for Visual Recognition (CS231n)

Provider: Stanford University
Focus: Computer Vision
Duration: 10 weeks
Level: Advanced
Cost: Free
Certificate: No

Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification, localization and detection. This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification. During the 10-week course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision.

The course focuses on teaching how to set up the problem of image recognition, the learning algorithms (e.g. backpropagation), practical engineering tricks for training and fine-tuning the networks and guide the students through hands-on assignments and a final course project. Much of the background and materials of this course will be drawn from the ImageNet Challenge.

The course material (including lecture videos) are available for free.

10. Deep Learning for Natural Language Processing

Provider: University of Oxford
Focus: Language
Duration: n/a
Level: Advanced
Cost: Free
Certificate: No

This is an advanced course on natural language processing. Automatically processing natural language inputs and producing language outputs is a key component of Artificial General Intelligence. The ambiguities and noise inherent in human communication render traditional symbolic AI techniques ineffective for representing and analysing language data. Recently statistical techniques based on neural networks have achieved a number of remarkable successes in natural language processing leading to a great deal of commercial and academic interest in the field.

This is an applied course focussing on recent advances in analysing and generating speech and text using recurrent neural networks. The course covers a range of applications of neural networks in NLP including analysing latent dimensions in text, transcribing speech to text, translating between languages, and answering questions.

The course material (including lecture videos) are available online for free.

More Deep Learning resources

The following is a list of helpful and interesting resources to further your knowledge in Deep Learning.

Articles & Papers

  1. A guide to convolution arithmetic for deep learning
  2. The Unreasonable Effectiveness of Recurrent Neural Networks
  3. Understanding LSTM Networks—also check his other articles

Books

  1. Deep Learning: You will find many mentions of “The Deep Learning book” during your studies. This is it; an advanced resource for students and practitioners of DL.
  2. Deep Learning with Python: An excellent introduction to DL, written by the creator of Keras.
  3. Machine Learning Yearning, by Andrew Ng: This book is focused not on teaching you ML algorithms, but on how to make ML algorithms work. Some technical AI classes will give you a hammer; this book teaches you how to use the hammer. If you aspire to be a technical leader in AI and want to learn how to set direction for your team, this book will help.
  4. Natural Language Processing with Python: It provides a highly accessible, practical, introduction to the field of NLP.

Social media

  1. Articifial Intelligence & Deep Learning Facebook group
  2. Deep Learning Facebook group
  3. r/LearnMachineLearning subreddit
  4. r/MachineLearning subreddit

Websites

  1. Deepmind: A world leader in AI research—you might have heard of their Alpha Go project. Their website contains lots of interesting material.
  2. Google AI: AI-related stories, research, education and tools from Google.
  3. Kaggle: The place for data science projects and competitions. If you are looking to get your hands on a number of DL projects, look no further. They also have a set of brief learning courses.
  4. Machine Learning Mastery: An accessible learning resource for all areas of ML and DL.

YouTube channels

  1. Grant Sanderson (3Blue1Brown): As discussed earlier, this is an excellent learning resource for linear algebra, calculus, neural networks and more.
  2. Rachel Thomas: High quality, Deep Learning related talks, by the founder of Fast.ai.
  3. Siraj Raval: Very accessible and educational material on DL and related areas.
  4. Two Minute Papers, by Károly Zsolnai-Fehér: Károly spends hours reading the latest research literature so that we can watch the most interesting papers in his amazing two-minute videos.

Conclusion

Deep Learning is a vast field with many opportunities for learning, exploring and discovering exciting new things.

There is no one correct way that you should go about learning Deep Learning. Start where you feel comfortable and let your desire for knowledge and the things that you discover guide you along your learning path.

I will leave you with this talk by Rachel Thomas:

Discuss on Twitter