Deep Learning Specialization Review
Last week I finally finished the deeplearning.ai's Deep Learning specialization taught by Andrew Ng on Coursera. What an amazing specialization!
As I said, I was going to write a quick review, but since it didn't fit into a normal post, I decided to write it as an article. So, let's go!
Course #1 - Neural Networks and Deep Learning
This first course covers Neural Network from a single neuron to deep NNs. Most of the math involved is explained along with some very good intuitions. You get to implement a Logistic Regression model (one neuron with sigmoid activation), a one-layer NN, a deep NN and compare them on a cat image classification task. There are three interviews with famous NNs researchers in this first course: Geoffrey Hinton, Pieter Abbeel, and Ian Goodfellow.
Course #2 - Improving Deep Neural Networks
The second course focuses on improving Deep NNs. How to split your data when you have lots of it? You learn Regularization, Dropout and Batch Normalization, how to deal with vanishing and exploding gradients, variations on the Gradient Descent algorithm to make your optimization task converge faster, like: momentum, RMSProp, and Adam. Also gives some tips on how to tune your hyperparameters. The programming assignments cover most of these topics and the last one you are introduced to Tensorflow. There are interviews with Yoshua Bengio and Yuanqing Lin.
Course #3 - Structure Machine Learning Projects
The third course is the smallest one and revolves around on how to conduct an ML project using a Deep Learning model. The part I liked most was about "Transfer Learning", which is a simple concept but yet very powerful, extensively used and I hadn't learned about it so far. There aren't any programming assignments, but the quizzes layout changes a bit to simulate an experiment where you have to take some decisions. Andrej Karpathy and Ruslan Salakhutdinov are interviewed.
The next two courses are about somewhat recent applications of deep NNs.
Course #4- Convolution Neural Networks
The fourth one is all about Convolution NNs and is fantastic. I had never studied that before and learned a lot. You learn the convolution operation on volumes (think a 2D image as a volume, since it has height, width and 3 channels of colors: RGB), and some ways to parameterize it, like changing the stride, adding padding and doing pooling.
You're presented to some famous CNN architectures like Residual and Inception Networks and to some interesting tasks you can perform with a CNN: object classification with localization (it's a person located at ...), object detection with the YOLO algorithm, face recognition and Neural Style Transfer (given a landscape "content" image and some painting "style" image, generate this landscape in the style of that painting). You get to implement a CNN with numpy, a Residual Net with Keras, Car Detection with the YOLO algorithm, a Face Recognition task and Art Generation with Transfer Style, producing the below result:
Course #5 - Sequence Models
The last one was about Sequence models. It starts with RNNs and two variations: GRUs and LSTMs. It covers a bit of NLP by teaching some word embeddings applications and algorithms. And finally, in the last section, you learn some sequence to sequence models, which is a good fit for tasks such as Machine Translation.
There are many assignments in this last course with very cool applications: you build both a simple RNN and an LSTM using numpy, a language model to generate random dinosaurus names (some generated were: Macaesaurus, Yrosaurus, and Eiaeosaurus) a jazz improvisation model (given some harmony, it starts soloing along), a word analogy task using pre-loaded word embeddings, a sentiment classification task where you predict an emoji that represents a sentence ("I adore you ??", "let's play with a ball ?", "food is ready ??"), an attention seq2seq model to translate human readable dates (15th of September, 1996) into machine readable versions (1996-09-15) and a speech recognition task to detect trigger words, like we usually do by saying to our mobile phones: "ok Google" or "hey Siri".
Some considerations
You can learn a lot by taking this set of courses. They suggest you that it will take 16 weeks to end, with a 3~6 hours of effort in each of them. I think that this weekly effort is accurate, but you can always dedicate more time and finish the specialization much faster than that.
You're not expected to know a lot of Machine Learning and math to take the courses. You should know a bit, though. If you're interested, I would recommend you to first enroll in his first Machine Learning course or some equivalent.
One (very small) downside, in my opinion, is that since it doesn't expect some math knowledge (like Calculus), some backpropagation calculations are skipped. He only goes through the gradients of an "ordinary" neural network briefly. For more complex models like CNNs, RNNs, and LSTMs, he says it's quite advanced and that normally a neural network framework will do this calculation for you. To somewhat aid this, you're presented to their final equations in the programming assignments as extra ungraded exercises. That's not the end of the world, you can always learn it somewhere and, as I said, you'll still learn a lot.
The programming assignments are run in Coursera's Jupyter servers, so you don't have to worry about setup, version compatibility and things like that. You just need a browser. But the best thing about it is that each assignment is done in a very well written notebook. It's an indirect class on what you can do with a notebook: they are filled with images, GIFs, videos, audios, lots of markdown and HTML to enhance them, LaTeX equations. It's beautiful.
Well, that's it. I hope this post can help some of you in doubt if you should take the courses or not (my opinion: yes you should! :D). I'd like to thank Andrew Ng and the rest of deeplearning.ai team, Younes Bensouda Mourri, and Kian Katanforoosh, for producing this amazing specialization. Thank you a lot!
Google Cloud Advocate - Auxiliando empresas na Transforma??o Digital
3 年????
Research Associate @ Rutgers University
6 年Although you have posted this a while ago, I must congratulate you for completing the specialization, for doing so is currently one of my medium-term goals in life! I must ask however, regarding Andrew's original Machine Learning course, from your experience, how many weeks (with how many hours per week) do you reckon it's possible to finish the course? I was very glad to learn that my current roadmap happens to be exactly what you've suggested, Andrew's ML first and THEN his latest deeplearning.ai, so thanks for the post, it certainly boosted my morale towards actually following through with this plan
Machine Learning | Deep Learning | Python | Scalability
7 年Congrats for the article and for finishing the specialization!
Data Scientist & Machine Learning Researcher
7 年Indeed! I am enjoying a lot the specialization content. Furthermore, Andrew Ng is an excelent teacher, being able to make complex concept much easier to understand. Congrats on the great post.
Lead Data Scientist, MSc in Data Science, AI Governance Certified Professional (AIGP)
7 年Excelente texto, álvaro!