How can we learn more effectively in a short amount of time? In this post, I describe how I went about finishing Udacity’s Machine Learning Nanodegree in about a month when it usually takes 6-12 months. I hope this will give you some insight and ideas as to how you might work more effectively to accomplish your own learning goals.
Sections in this post:
- Background: What I did before I started, what the foundational skills are
- Navigating the Nanodegree program
- Watching video lectures
- Time management
- Completing projects
1. Before I started
I went in knowing a moderate amount of maths and statistics (advanced high school level) and having programmed before (mostly introduction courses on CodeAcademy and basic web development). In particular, I had done Udacity’s free Intro to Data Analysis course so I’d had exposure to Numpy and Pandas. Numpy and Pandas are user-friendly libraries in Python for analysing and manipulating data.
- Lesson to learn: Have a solid foundation in the tools you’ll use, i.e. Numpy and Pandas. It will help you greatly.
- The tutorials I mentioned seem to be integrated into the first part of the MLND (before Project 1), so you don’t have to learn to use these tools before you start.
- You don’t have to master these tools before you move on, but I’d recommend at least basic familiarity so you can focus on other things such as data preprocessing and modelling.
- If you’re new to Numpy and Pandas, take the time to note down commonly used commands and refer back to your cheatsheet when you need to. Here’s one Numpy and Pandas cheatsheet (not mine).
- Scikit-learn is also a key machine learning tool you’ll be using, but I don’t think you need to know it well early on.
2. Navigating the ND
The structure of Udacity’s courses is that you have lessons followed by a project. Each lesson comprises short videos with quizzes in between. For example, in the supervised learning section, you have lessons on regression, decision trees, neural networks, SVMs, instance-based learning, Naive Bayes, Bayesian learning and ensemble learning before you get to the supervised learning project.
You can probably tell that there will be a lot of video-watching. The problem is that if you go chronologically, by the time you get to the project, you’ll likely have forgotten much of what you learned in the first lessons in this section!
To tackle this, I looked through the project outline before watching the video lectures and worked on the project as I went through the videos. In addition, I didn’t watch all the videos in order – I went to the videos I needed first, going back to other videos later. There are two reasons to do this:
- Understand why you’re learning something.
- You will search more actively for material that matters or material you will find useful.
- Complete the project as you go along.
- You will be able to apply the knowledge from lessons more thoroughly immediately after the lesson, so you’ll absorb the material better.
- You’ll also spend less time searching through lessons to find the answers you’ll need later.
Example: Supervised Learning Project
Take the supervised learning project (here’s the project notebook). By skimming through the notebook, you get a good idea of the machine learning process – from exploring and preprocessing the data to selecting and tuning models. You may not know what many terms mean, but that’s not a problem – you’ll learn about them later. Looking through the notebook now means you’ll have a better idea of where ideas fit within the big picture when you encounter them.
You can also see that e.g. in Question 2, you are asked to describe the strengths and weaknesses of each model and why they might be suited to the problem. These are things you want to pay attention to as you go through the video lectures. The great thing about these projects is that they are practical and only ask you questions you’d need to answer if you were doing this as a real project at work. So by looking at what questions they ask, you can infer what you need to learn from the videos. As a result, you will understand the content better and complete projects faster.
I also advise you to start thinking about your Capstone Project from the start. The Capstone Project is a quasi-free form project you will do at the end of the program.
3. Watching video lectures
It’s also important to make the most of the time you use watching video lectures because you’ll be spending a lot of time doing it! The key here is to learn actively and avoid having to watch the videos again later because you’ve forgotten what you learned. (Re-watching parts of videos because you didn’t understand what was said is good though.)
What does it mean to learn actively? It means you don’t just sit there and listen, but think about what’s being said and whether you understand it. If you don’t think actively about what’s being said, you won’t remember it or understand it as well. You need to make the knowledge your own.
How can you listen actively? You can do this by taking notes while watching the videos. Try not to just copy down what the instructors are saying word for word, but write (or draw) a summary in your own words. This also means you don’t have to write down everything – only the information you think you’ll need later. That way, not only do you process the information, but you also avoid having to replay the videos later to search for what you need.
You can take a look at my notes on my GitHub repo. Udacity also has some notes in their Resources section within the program.
4. Time management
I was fortunate to be able to work on the MLND almost full-time in September 2016, so the setup will be different from most people’s. These ideas still applied (if not more so) while I worked on the Self-Driving Car Engineer Nanodegree part-time.
There’s a lot of time management advice floating around but these two items are the key things that worked for me and that I’ve stuck with for over a year:
- Prioritise what you do
- I listed three things I wanted to do and worked only on those things in order of priority.
- You might want to adjust this to one to three items per week if you’re spending e.g. an hour a day on the MLND.
- The idea is to decide on a small number of things that are important to do and focus on those things.
- I listed three things I wanted to do and worked only on those things in order of priority.
- Track your time
- It’s great knowing how you actually spend your time – you often realise how much is being spent on unimportant or downright useless things. You can do this using a tool like Toggl, a spreadsheet or pen and paper.
- Deep dives are better than shallow skims
- Take the time to understand the ideas before moving on. If you have no idea what’s going in a section (and haven’t tried to understand it) and just move on, you will most likely have to re-watch the videos. You might feel like you’re going faster at the time, but it’s usually not worth it.
- It helps if you can spend longer on the program at a time (45 minutes is enough to get stuck into it). I spent about 3-6 hours a day on the program so I could get through a significant chunk each day. This meant I spent less time reviewing material from the program I’d forgotten.
- Document your work
- This might seem like a waste of time, but especially if you’re doing this part-time, you will be glad you did when you get back to your project two weeks later.
- Work hard, but don’t push yourself beyond your limits
- If you think you aren’t getting anywhere because you can’t think or feel sick, take a break. The quality of time spent matters more than the quantity of time spent. If I got tired to the point I couldn’t think clearly, I’d go for a walk and only continue working if I felt much better after. A good way to take a break is to take a nap or just go to sleep. Getting enough sleep is really important.
- Stay motivated
- The biggest problem with learning via MOOCs is you can lose motivation and stop putting time into it. It’s helpful if you can motivate yourself, e.g. through doing the course with a friend, finding a study partner on the Slack chat, being accountable to friends or writing about what you learn.
- When I was doing the program, Udacity were trialling in-person Connect group sessions in my area. I got to meet with other Udacity students in-person and discuss how each of us were progressing. That helped me. You can check if there are Connect groups in your area or if other students on Slack would like to meet up.
5. Completing projects
You need to pass all the projects before you can graduate from the Nanodegree program. To pass a project, your submission needs to meet all the requirements in the project rubric.
- As mentioned before, look through the project for each section before watching the videos.
- You can even work on your project as you go through the videos. This way you get a better idea of how each idea being taught fits into the big picture and why it matters.
- In particular, start thinking about your Capstone Project early. You can look for ideas on what to work on and approach your problem as you progress through the program. Having a problem to tackle also keeps you motivated.
- Draft answers to questions as you go
- MLND has many questions that are of Q&A format. Do a first-pass ‘draft’ answer when you go through the project.
- Note down the questions you have or reasons why you can’t answer the question. This will help you get unstuck because you’ll know what to look for. It’s also helpful psychologically because you’re not staring at many empty white spaces – you know you’ve got something.
- Don’t be afraid to submit projects even if you think they’re not great or if there’s something you don’t know how to do.
- Submitting the project means you can get feedback. Submitting it multiple times (because you didn’t pass the first time) just means you can get even more feedback! The reviews are arguably the best part of the program. Ask your reviewers to give suggestions about the area you’re not sure about.
- From experience, a big roadblock for many students is the Titanic project (Project 0). People can spend weeks on it because they think their result could be better. Project 0 is before you learn most things and is there to give you a taste of what the machine learning process if like. If you want to do outstanding work, save it for later projects when you’ve got a better understanding of the concepts and tools. Just do something basic for Titanic and submit it once it meets the accuracy requirement.
Have fun and all the best in your learning endeavours! Let me know if you have any questions or feedback in the comments.