Machine Learning Engineer
I graduated from Udacity’s Deep Learning Nanodegree (DLND) late last year and Andrew Ng’s deeplearning.ai specialization wrapped up for me in February.
I’m currently about 70% through Udacity’s Artificial Intelligence Nanodegree (AIND) as a part of my self-created AI Master’s Degree.
This post began as my answer to a question on Quora.
I answered the question based on my experience with both courses as well as the DLND.
If you’re looking to improve your skills in the field, I’d highly recommend both courses.
Last year, I had zero programming knowledge and had never heard the term deep learning.
Thanks to a combination of these courses, I’m now building world-class deep learning models on a weekly basis.
I’ve taken the courses in the following order.
1. Udacity Deep Learning Nanodegree
2. Udacity Artificial Intelligence Nanodegree Term 1 (traditional AI)
3. Coursera deeplearning.ai Specialisation by Andrew Ng
4. [Current] Udacity Artificial Intelligence Nanodegree Term 2 (deep learning focus)
If I were to have my time again, I’d use the following order.
1. Coursera deeplearning.ai Specialisation by Andrew Ng
2. Udacity Deep Learning Nanodegree
3. Udacity Artificial Intelligence Nanodegree Term 1
4. Udacity Artificial Intelligence Nanodegree Term 2
deeplearning.ai by Andrew Ng takes a ground-up approach to deep learning. This is how I learn best.
Udacity courses are of very high quality but often jump straight into high-level projects. A great way to learn but very difficult if you don’t have foundation knowledge.
If you already have some foundational knowledge of deep learning and machine learning or are a solid Python programmer already, Udacity’s AI Nanodegree may be the ideal place for you to start.
After working through both courses, I’ve found they complement each other brilliantly.
Where Andrew’s course falls down, the AIND picks up and vice versa.
One real example happened to me yesterday. I was stuck on a problem in the AIND NLP capstone project, specifically one to do with word embeddings.
I posted on the forums saying I was having trouble understanding word embeddings.
At the suggestion of Vadim, I went back over the lectures on word embeddings in the deeplearning.ai specialization. Before doing this, I was searching the internet for hours looking for an explanation I could understand.
Note to self: Don’t neglect the material you’ve already gone over!
In the end, they are both great courses. If you have to pick one, I’d favour with the deeplearning.ai specialisation. There’s something about Andrew’s teaching style which really clicks with me.
For those interested a more in-depth answer about my experiences with the courses, keep reading.
I’ll break it down into eight categories.
1. Costs and Time — these courses aren’t free or easy.
2. Prerequisites — what you need before you start.
3. Support options — what to do when you get stuck.
4. Course quality — how good is the material?
5. Submitting a project — what happens to your work?
6. Course structure — how does the course play out?
7. Future options — what to do after the courses?
8. Other learning resources — what other learning resources are there?
The deeplearning.ai specialisation requires a monthly subscription fee of $64 AUD (~$50 USD) to have access to each of the five courses. Each course is listed as taking about 1-month. Five-months in total means ~$250 USD.
If you’re fast enough, you could get it done in 1-month. I managed to get it done in three. I could’ve finished in under two months, however, life.
The DLND requires an upfront payment of $750 AUD (~$580 USD). You are required to complete all the projects associated with the DLND within four months of starting or you will have to pay again. If you complete it on time, it works out to $145 USD per month.
Udacity’s Artificial Intelligence Nanodegree is both the longest and most expensive of the three. Comprised of two three-month-long terms at $1000 AUD (~$775 USD). Again, if you complete the required projects within the six-month time frame, it works out to $258 USD per month.
In my experience, both Udacity courses have taken at least 15–20 hours (sometimes more) of study per week to stay on track.
On the other hand, I was able to complete a week’s worth of classes a day (6–8 hours) of the deeplearning.ai specialisation. This is mostly because I aligned with Ng’s teaching methods.
Each course lists an intermediate knowledge of Python as a prerequisite.
Some math is required but Python should be your main focus.
If you can read a Python script on GitHub and understand at least 60% of what is going on, you should be fine attempting any of these courses.
If Python is a weak point for you, I’d practice a little more before starting.
When I started the DLND, I had three-weeks worth of Python knowledge. Prior to this, I’d never programmed.
I struggled for the first few months but ended up completing on time as my confidence grew. I still consider myself a Python novice.
As for the math, a high-school understanding of calculus, linear algebra and geometry are more than enough to complete the courses. This is because most of the math is taken care of behind the scenes with libraries such as TensorFlow and Keras.
I haven’t taken a single math course outside of high school. If my math wasn’t up to scratch for a particular concept, I used Khan Academy to upgrade my math skills.
If you are considering moving into an AI or deep learning PhD program, you will need math skills.
However, to build applied-AI with the skills you learn from these courses, a deep understanding of the math behind the scenes is not required.
If I had my time over again, I’d triple down on my Python skills before starting.
During each of the courses, I ran into many roadblocks. I found the support offerings invaluable to clearing up my path.
The DLND and AIND have their own Slack channel and dedicated forums.
Within the two Slack channels are several other channels dedicated to separate topics.
There are thousands of people in both channels and most topics have at least a couple hundred users. Mentors also frequently host ask me anything sessions (AMA’s) and browse the channels to answer any questions they can.
In my experience, the Slack channels are pretty noisy. I don’t use it much except to post questions of my own or to search for others with similar problems.
The forums are a totally different experience. It’s rare for me to post a question because many of the issues I run into, others have already. The answers aren’t always crystal clear but if they were, it wouldn’t be learning.
If I’m stuck, I use the forums to get a mental picture in my mind before trying to hack away at my own problem.
Forums for the deeplearning.ai specialisation are a similar experience. The main difference is that users aren’t allowed to post any code directly from the assignments, but pseudocode is okay. I found the forums here more than enough to answer my questions.
When you signup for the AIND, you are assigned a mentor. My mentor’s name is Ayushi. She’s a software engineer from India.
The role of the mentor is to provide further support when necessary and also just be there as someone to talk to. Many times when talking to Ayushi about a problem I’m facing, it seems to have solved itself.
Never devalue the power of talking about your problems out loud. And never be afraid to ask for help.
One tip when posting a question is to communicate it as effectively as possible. Help others help you by explaining thoroughly what issues you’re facing. This is something I’m working on.
The content of each course is world-class. I’ve frequently stated in my videos these are the best courses I’ve ever taken.
The DLND is broken into six parts with five of the parts having significant projects attached.
2. Neural Networks — creating your first neural network.
3. Convolutional Neural Networks — building a dog-breed classifier.
4. Recurrent Neural Networks — using neural networks to generate TV scripts.
5. Generative Adversarial Networks — building a face generator.
6. Deep Reinforcement Learning — teaching a quadcopter how to fly. [NEW]
Each project is focused on giving you hands-on experience with a certain type of deep learning technique. If you haven’t done much Python programming before, they will be difficult but not impossible to complete.
Note: Section 6 is a new addition to the DLND and I have yet to attempt it.
Andrew Ng’s deeplearning.ai is broken into five parts.
1. Neural Networks and Deep Learning
2. Improving Deep Neural Networks: Hyperparameter tuning, Regularisation and Optimisation
3. Structuring Machine Learning Projects
4. Convolutional Neural Networks
5. Sequence Models
Course 2 and 3 were standouts for me. I feel this material was missing from the DLND.
The other courses were similar in structure to their equivalents offered in the DLND. Completing courses 4 and 5 continued to compound my knowledge on what was covered in the DLND.
The AIND has two terms. Term 1 is focused on traditional AI methods and Term 2 is focused on deep learning.
There is a bridging course at the start of Term 2 for those who have never done deep learning. Since I had completed the DLND, I was able to skip this.
1. Build a Game-Playing Agent — use adversarial search with heuristic evaluations to build a sudoku solving and isolation playing agent.
2. Implement a Planning Search — build an air cargo logistics system using planning graph heuristics.
3. Design a Sign Language Recognition System — use Hidden Markov Models to recognise gestures in American Sign Language.
If you haven’t completed the DLND, Term 2 of the AIND will consist of one of the following with an option to purchase more. I had completed the DLND upon signing up so I have access to all three.*
The content of Term 1 was hard for me to ingest. As I had already been learning about deep learning and other machine learning techniques, the topics covered in Term 1 difficult due to my lack of programming ability.
*This may have changed, be sure to email Udacity support for clarification.
1. Computer Vision Concentration — build a facial key point detection system using deep learning and OpenCV.
2. Natural Language Processing Concentration — build a machine translation model to translate English to French. [I’m currently here]
3. Speech Recognition System — build a speech detection system.
Within each of the concentrations, you are taken through a series of mini-projects and lectures leading up to the final project.
I’m currently up to the second concentration of Term 2. Most recently, I’ve been practicing implementing the steps of a Natural Language Processing pipeline (text preprocessing, feature extraction and modelling). All of this is in preparation for the machine translation project.
Submitting a project for the DLND and AIND is very similar. Through the Udacity classroom, you can submit project files or a link to GitHub with your code.
Within 24-hours a Udacity reviewer will get back to you with your grade (pass or needs more work). However, this is no ordinary review. The reviewer will have often left several comments throughout your code with feedback or advice to learn more about it.
I can’t talk highly enough about the reviewers. I always look forward to hearing their perspective.
For the deeplearning.ai specialisation, all projects and mini-quizzes are marked automatically. This is time-saving, as you get immediate results, though, you miss out on advice to learn more and where to improve.
Udacity uses a combination of short lectures (mostly between 2–8 minutes long) with informative graphics throughout. A Python-based programming quiz within the browser usually follows a significant topic.
At the end of each major milestone, a warmup project may be offered as optional practice before the end project.
For example, during the NLP concentration of the AIND a sentiment analysis project was offered before attempting the machine translation capstone.
The deeplearning.ai specialisation structure is very similar to Andrew Ng’s famous machine learning MOOC on Coursera. Videos under 5-minutes are rare, the average would be around 10-minutes. I watched them in 1.5x speed.
Andrew uses a series of slides on the screen as the foundation for his teaching. While introducing a topic, he often writes examples on the slide and discusses the thinking behind each.
At the end of each series of lectures, students are required to complete a non-programming based multi-choice quiz. Each quiz has a passing threshold of 80% (multiple attempts are allowed).
The quizzes cover theoretical knowledge covered in the lectures, with a minority of questions requiring some math calculations.
After passing the quizzes, programming assignments in the form of Jupyter Notebooks are available. Each programming assignment requires 80% or more to pass.
If you run into issues on the projects or with any of the class material, the forums are your friend.
After completing the courses, it can sometimes be overwhelming with what to do next. At least, this is how I’ve felt after a major milestone.
The obvious answer is to use what you’ve learned.
Whenever you’ve got some free time, have a bias towards writing. Writing about what you’ve learned will help cement it in your own mind.
Sharing your writing with others will help them to learn.
Writing publicly will also allow others to critique your work, which is another valuable learning opportunity.
Maybe writing isn’t your thing. But the device you’re reading this on likely has a camera on it. Talking about what you’ve learned is as good as writing about it. The videos don’t have to be the best quality.
Talking in front of a camera will help with your public speaking skills.
Speaking to others about what you know is helpful in any situation.
Share what you’ve learned.
Practice on HackerRank or Kaggle.
HackerRank and Kaggle both provide a plethora of resources to practice the skills you’ve been learning (and also help you learn new ones).
Kaggle is great to get hands-on experience with real data science, machine learning and deep learning projects. You can even build up your reputation towards being a Kaggle master. Many of the top Kaggle competitors would have no trouble walking into any data science related role.
HackerRank is more focused on improving your coding skills. It offers the ability to work through different coding challenges whilst building a portfolio of what you’ve done. Use your profile as an addition to your resume to show a future employer what you’re capable of.
Have an idea? Use the skills you’ve learned to make it real. Ship it to others, they might find value out of it too. If it fails, share with others what you learned in the process. If it’s a success, congratulations!
All of these lead back to one thing.
Being a teacher.
You’ve spent hours learning something valuable and come across plenty of roadblocks. How can others avoid your mistakes? How can they gain something out of it?
Note: I’m still working on these!
The AI online learning space is exploding. There’s so much information, it’s hard to know what to pay attention to.
In my case, after I finish the AIND I’m heading over to fast.ai.
After that, I’ve been eyeing off a data structures and algorithms specialisation on Coursera to make up for my lack of programming ability.
For AI, I’d highly suggest the following resources.*
*If you have more, I’d be happy to add them here.
If you’re after hard skills, do all the courses you can and implement what you’ve learned by teaching someone else about it or building something.
If you want to break into AI quickly and understand what it takes to make a cutting each deep learning model and what it’s capable of, start with the deeplearning.ai specialisation on Coursera.
Whatever you decide to do, remember, learning something is by definition hard.
When it gets hard, think about why you started.
UPDATE (29 March 2018): Since writing this, Udacity have overhauled their AI curriculum. Much of the specific details in here (course prices/material) may not fully apply but the principles of learning and what to do next are still valid.
In the meantime, check out the Udacity School of AI.
Daily articles: www.mrdbourke.com
Create your free account to unlock your custom reading experience.