I completed the program roughly in two months. I started the 12th of June and completed it today, 27th of August. The limit to complete the program was four months so I had until mid October to finish it.
The program consists in 5 parts that cover the following topics:
- Neural Networks
- Convolutional Neural Networks
- Recurrent Neural Networks
- Generative Adversarial Networks
- Deep Reinforcement Learning
And each part is completed with a final project that gets reviewed by Udacity.
The reviews were always helpful, and honestly doing the projects and getting feedback was the best part of the course. There’s a couple of projects that I did not complete on my first try, and the reviewers helped me find my errors and fix them.
I’ve done other MOOCs (Massive open online courses) in the past, and there’s nothing more annoying that watching videos for five hours, to then be evaluated by four multiple-choice questions. So working with real projects and getting individual feedback was a big plus.
My favourite part of the course was working with Generative Adversarial Networks, seeing how my solution evolved until I was able to generate numbers and faces from random noise was extremely satisfying.
The part that I enjoyed the least was the one about Reinforcement Learning, the last one. The problem I had is that the content becomes way too academic, and the practical examples are rarely accompanied with video explanations, so I found myself just looking at the solutions because it was impossible for me to write those solutions by myself.
I even skipped some videos at the end, and went straight into the project.
Final project: Teaching a quadcopter to fly
In the final project, we have to implement an agent capable of learning to fly a quadcopter. We can control the four rotors, and we get feedback from the environment: height, position, speed, etc.
The whole problem is presented following the Markov Decision Processes framework. Given a state, our agent will predict the action to take, and will obtain a reward based on the new state obtained. And so on until we reach the terminal state. In our case, when the quadcopter hits the ground or when a set time passes.
The algorithm we selected was Deep Deterministic Policy Gradients (DDPG), which uses a deep neural network to learn from the state-action pairs. One interesting part of this solution is the use of a memory buffer, where we store the past state-action pairs in order to “learn from experience” at random.
Calculating the reward was the most complex part of the project. I finally decided to focus only on the vertical distance between the current position and the goal.
In my project, I tried to teach the quadcopter to fly from position z=10.0 to z=100.0, while ignoring x, y and angular positions.
Unfortunately my quadcopter could barely stay afloat for a while until crashing:
100 simulations plotted
In this figure, we can see 100 simulated flights and the reward for each moment in time. There’s a single thin line that goes up considerably (so it was getting closer to the goal) but the rest fall pretty quickly.
But… that was expected. The project doesn’t ask you to succeed in the task, but rather to just explore different solutions and learn from them. This was my best result.
You can see the results in this Jupyter Notebook:
After passing the project I was automatically graduated! I followed their standard procedure, where I have to submit a copy of my ID and a picture to verify my identity, and five minutes later I had my certification.
Do you recommend the course?
Disclosure: I got the course as a present, so I did not pay for it.
The course currently costs 900 Euros. It is a big step from last year’s pricing when the course was 400 Euros instead. So here’s my take.
If you are short of money I would not recommend you to do such investment and instead try these two free recommendations:
If you need help with Python and Data Analysis, I can also recommend the free course Intro to Data Analysis from Udacity. I’d say this is a must do before you take on the Nanodegree.
If money is not a problem, then I’d consider it, with the following in mind:
- The course must be completed in four months. In theory you should dedicate 12 hours a week to complete it. I was able to finish dedicating less time and earlier, but YMMV.
- It would be worth learning the basics of Machine Learning before. The Crash Course from Google could be a start. Here you will learn some basics but starting a different point of view helped me. I did the Introduction to ML from Coursera in the past.
- As well, I’d recommend you to learn the basics of data science. That course helped me a lot, since I did not have a background in Python.
- The last part of the program is probably the most difficult to go through, don’t get stressed and look for help in the course Slack.
One final thing that I enjoyed a lot was the diversity of teachers. A mixture of Udacity instructors, researchers and professionals, with different ways of explaining things, that was a big refresher!
I want to go back to do the ML Crash Course from Google to review all the basics one more time, and then focus on more practical approaches using deep neural networks to do natural language processing, image recognition, and image processing, with a focus on mobile devices.
My certificate of completion!Want to learn more Android and Flutter? Check my courses here.