# Absolute Beginner’s Guide to Machine Learning and Deep Learning

Okay, so you must have heard the buzzword around Machine Learning and Deep Learning and want to dive deep into it. Good. We need more people with Machine Learning skills. But the question is, how do you get started?

Worry not, here I will guide you through your journey from an absolute beginner to an actual beginner 😜. What! We are all learning. So, buckle up, the journey will be fun and thrilling.

**Disclaimer:** This guide is based on “my personal” favorite methods to learn Machine Learning. I have been trying-failing-succeeding in MLDL (Machine Learning and Deep Learning) stuff for last 8–9 months. So, I am also a beginner, not too different from you, and my advises are not foolproof. There are many experts who might have better ideas. If you find some way that works better than mine, please suggest in the comments, I’d appreciate that.

# What Time Is it ⏰?

I think the first thing you need to consider to start learning Machine Learning is, how much time you have to spare. If you have 3–4 month’s in your sleeve, your schedule, and learning outcome will be significantly different from someone who has 1 month or less. My suggestion will be to take your time and absorb it slowly. Take 4–5 months if necessary (more if that’s necessary too) to learn the basics of Machine Learning well. Don’t try to rush it in. It’s important to learn the basics right. It’s easy to become tool dependent in Machine Learning without actually knowing what’s happening inside. But remember, the tools are always changing. Every month there is a new deep learning technique that is better than the previous one. Whatever tool you learn will certainly become obsolete at some point, but the basics will remain the same. So that’s what you should be focusing on. But if you don’t have that time, I’ve created a crash course for you at the end of this blog.

# 4~5 Months:

## Part 1: Start With Machine Learning, 2 months

My absolute favorite way start Machine Learning is the Coursera Machine Learning course by Stanford University. This course is taught by the legend Andrew Ng himself. It’s a bit old, and *slightly* outdated, but I’ve seen a lot of sources on the Internet, and nothing I’ve found is anywhere close to this one. So, if you have time for a 14 week commitment, definitely do it. But if you are in real real hurry, you can do Week 1 to 5, and skip the rest.

Coursera Machine Learning course is suitable for any level of learners. If you know how to multiply two matrices, and have some basic understanding of any programming language, you are good to go. The course will teach you everything else on the way. Dr. Ng is a wonderful and inspiring teacher, such that I literally cried when the course ended. This course has weekly programming assignments and quizzes almost every week. The programming assignments are done in MATLAB/Octave. But no worry if you are unfamiliar with MATLAB/Octave, they will teach you on the fly. I can’t stress it enough, DO THE PROGRAMMING EXERCISES! You’ll learn as much from the exercises as from the lectures.

This course will dive into classical Machine Learning models such as Linear Regression, Logistic Regressions, Neural Networks, SVM, PCA, Unsupervised Learning and many more. This course touches most of the important concepts in a very easy and understandable manner.

**Edit: **I recently looked into Udacity Intro to Deep Learning course. It looks pretty good for getting started fast.

**Expanding The Horizon:** By the time you start Neural Network on week 5 at the Coursera course, you should start looking at some outside resources in parallel with the course. First, there is a *FANTASTIC* YouTube playlist by 3blue1brown on Neural Network, it’s a must watch.

I think the Coursera course rushes the Neural Network part a little bit, which deserves more attention. There is a fantastic free online book on Neural Network and Deep Learning named, guess what, neuralnetworkanddeeplearning.com!

The author Michael A. Neilsen dives real deep into every small part of Neural Network but in a very easy and intuitive way. He will also walk you through a Digit Recognizing python code that has an accuracy of 97+%. I recommend you read first 2 chapter of this book, in parallel with the Andrew Ng course. By the time you will be familiar with many of the concepts, so you can skim through the part you already know. You can, and should attempt the rest of the book when you will start Deep Learning. Have patience, it’s going to take time, But it’s worth it.

Once you go through this, now many of the concepts in Machine Learning and Deep Learning literature will start making sense to you. For fun, head over to Chriss Olah’s blogs, they’re awesome!

## Part 2: Deep Learning, Here I come (1 month)

Before you start Deep Learning, you need to brush up some **university math**. The Deep Learning Book by Ian Goodfellow (another legend of Deep Learning) sums up most of the important topic very concisely. I recommend you go through Linear Algebra and Probability and Information Theory chapters as deeply as you can. Whenever you get stuck with any Deep Learning concept while reading a paper, you can come back to this book for reference. If you need a PDF for this book, you can get one here.

There are many resources online on Deep Learning. So many that it’s hard to focus. My best pick is to start with Andrew Ng’s Deep Learning specialization.

Note that this specialization is a collection of 5 courses, and they are not free. You can buy it for $50/month, but if you can’t afford that, they have very generous financial aids. But plan ahead while applying to these aid, because it takes about 15 day to process. Make sure to show a good reason why you need the aid in the application, and they will accept it. If you apply for an aid for a course, make sure to complete it and get the certificate. Even without buying this course, or getting a financial aid, you can access most of the course materials. Go to a course page, click “Enroll” and then “Audit this course”. Most of the videos are also available in YouTube for free.

The 5 courses in this specialization are:

1. Neural Networks and Deep Learning (4 week course)

2. Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization (3 week course)

3. Structuring Machine Learning Projects (2 week course)

4. Convolutional Neural Networks (4 week course)

5. Sequence Models (3 week course)

First 3 courses are for Neural Network and Deep Learning in general, 4th and 5th course goes into specific topics. If you plan to work on Images, course 4 is what you need. And if you want to work on sequence data, such as, Natural Language Processing (NLP), audio, or time series data, course 5 is for you. But if you need course 5 only, I would recommend you skim through course 4 as well. Some important details are described there. But in general, the recommended way is to do all 5 courses, in the given order.

**Timing**: If you are working full time on these courses, I think it’s possible to finish each week’s content in 1~2 days. So don’t get intimidated by the schedule. But give yourself some time to breathe between courses.

It’s also time to read **Chapter 3, 4, 5, 6** from neuralnetworkanddeeplearning.com to strengthen your concepts. I think the 4th and 5th course of the Deep Learning Specialization is also a bit rushed. If you get stuck in any concepts, head over to Olah’s blog, Google, and read related papers. Yes! You need to read papers to learn Deep Learning. One of the most fascinating thing about many Deep Learning topics is they are very new. Many only 2~3 year old. So you won’t often find good tutorials for them. In those cases, reading the papers will be your only way. And also, the field of Deep Learning is constantly changing, and nobody knows where it’s headed. So, better make a habit of reading papers to stay up to date with the Deep Learning world.

## Part 3: Practical Implementation of Deep Learning (1~2 months)

So far you should have a proper understanding of most of the concepts in Machine Learning and Deep Learning. Now it’s time to get real.

Fast.ai has a wonderful resource for practical Deep Learning.

They built a library on top of a popular Deep Learning tool named PyTorch, which gives world class performance in few lines of codes. The philosophy of fast.ai is a bit different. While Andrew Ng or others teach in a Top down approach (know first, do later) fast.ai teaches in a bottom up approach (do first, know later). You will build world class image classifier in the first lecture! The excitement of training your own model will get you going for the rest of the course. The instructor of this course Jeremy Howard hold’s one of the highest rank in Kaggle (Kaggle is kind of like CodeForces for Machine Learning).

Two other courses I would mention is CS231n and CS224n by Stanford University. CS231n is focused on computer vision with Deep Learning, and CS224n focuses on Sequence Modeling such as Natural Language Processing with Deep Learning. If you are interested in specializing on these topics, you should take the respective course. I am yet to take these courses, so I cannot provide much details for now.

So this is the end of my 3 part recommendation to Machine Learning and Deep Learning. It’s about a 5 months schedule. But what if you don’t have the time? It is important to take time and have a clear understanding of the concepts of ML and DL. But if you must do quick, here’s my best guess what you should do:

# 2 Months or Less:

- Complete the first 5 weeks of the Machine Learning course from Coursera. Do the programming exercises.
- Watch the Neural Network playlist from 3Blue1Brown YouTube channel.
- Complete Course 1 (Neural Networks and Deep Learning) from Deep Learning Specialization in Coursera. Do the exercises.
- If you want to start an Image Processing project, take the 4th course in Coursera specialization, or if you want to work on Natural Language Processing or sequence data, take course 5.
- Search for open source implementation and YouTube videos of projects that you are interested in. If you are concerned about which language to use, I think it’s good to stay with Keras (with Tensorflow backend) for a while. Later you can move to Tensorflow or PyTorch, depending on your needs.

# 1 Month or Less:

It will be ridiculously hard to sum up the Deep Learning resources in a 1 month schedule. But if you just need an idea of how Machine Learning works, and then apply it to your project, here’s my best guess what you should do.

- Skim through Coursera Machine Learning course Week 1 to 5. Just watch the videos, grasp the concept. You can skip the MATLAB/Octave tutorials in Week 3.
- Watch the Neural Network playlist from 3Blue1Brown YouTube channel.
- Skim through Course 1 (Neural Networks and Deep Learning) from Deep Learning Specialization in Coursera.
- If you want to do an Image Processing project, read the chapter 6 from Nielsen’s book: http://neuralnetworksanddeeplearning.com/chap6.html

Or if you need some idea about Sequence Modeling, head over here to Olah’s blog: http://colah.github.io/posts/2015-08-Understanding-LSTMs/ - Siraj Raval has some interesting video’s to give you a gist of most ML and DL topics.
- Search for open source implementation and YouTube videos of projects that you are interested in. And keep tweaking them to your need. As mentioned earlier, my recommended language will be Keras with Tensorflow backend.

# Some Optional Resources:

- Follow 2 minutes Papers in YouTube to get updated with the wonders that researchers are doing with Deep Learning around the world.
- Also follow Siraj Raval on YouTube.
- Twitter can be a fantastic tool to stay updated with new ML inventions.
- If you get stuck, there are many groups and communities in Reddit and facebook where people will help you out. Don’t hesitate to ask for help.

# Conclusion:

Machine Learning and Deep Learning is one of the most fascinating technology in the world right now. And unlike many other sectors, there are less qualified Deep Learning experts than the industry needs. So in career prospect too Deep Learning is an appealing field.

One thing to mention, unlike other areas of Computer Science, Deep Learning resources are less abundant. So many times you will fail and get frustrated. Don’t let those feelings intimidate you. Reach out to others, ask for help. There are many people who will be willing to help you out. We are all learning.

And a misconception about MLDL is you need to have a CS background to learn it. That’s not true at all. You do need some idea about programming to get started, but that’s it. Many of the biggest experts in today’s Machine Learning world are from other fields of study. Even the best Deep Learning people I’ve seen are also from other backgrounds than CS. It is certainly a benefit if you have a CS background, but it’s not too hard to catch up it if you are from other disciplines.

Thank you for reading so far. Let me know if you have any questions or suggestions. And if you want me to elaborate on any topics I’ve mentioned here, or want me to write on any other topic, let me know that too.