Thoughts on Coursera's Deep Learning Specialization

Recently, I completed Coursera's Deep Learning Specialization. It is a collection of five courses that teaches the basics of deep learning. You can think of it as a one-quarter college course, but it is split into smaller units of 2 to 4 weeks each. It covers a wide variety of topics:

  1. Course 1: basic neural nets, gradient descent, backpropagation, hyperparameters.
  2. Course 2: training/dev/test sets, regularization, vanishing/exploding gradients, momentum, RMSprop, Adam.
  3. Course 3: training/dev/test sets, error analysis, comparing to human performance, transfer learning, end-to-end learning.
  4. Course 4: convolutions, image models (including resnet, inception, etc), object detection, face recognition, interpretability of image models, neural-style transfer.
  5. Course 5: recurrent neural nets, GRU, LSTM, bidirectional RNNs, word embeddings, attention model, speech recognition.
Each week, you have to complete a multiple-choice quiz and one or more programming assignments in Python.

In terms of prerequisites, I would say that this is not a class for beginner programmers. You need to be very comfortable with programming (a few years of experience). Not necessarily in Python; you can pick that up during the class. Only a minimal background in linear algebra is required. If you understand basic concepts such as matrix multiplication and transpose, you will be fine. Also, only minimal background in calculus is fine. No need to remember how to compute derivatives, because the derivatives of operations are given to you. If you have the intuition of what a derivative does, and that you can compute derivatives of complex expressions from simpler ones using things such as the chain rule, that's sufficient. Prior knowledge of artificial intelligence is not required.

The course videos are fantastic. Andrew Ng does a great job of explaining the basics, giving appropriate intuition, and pointers to resources if one wants to learn more. The videos are short, usually less than 10 minutes each.

The programming assignments are OK, but have some drawbacks. You are given the skeleton of some code in a Jupyter notebook, and you have to fill out the missing pieces to make a model work. Sometimes, it is a matter of translating a math formula to Python code (usually easy to do). Other times, you need to use the appropriate Tensorflow or Keras functions. This can be hard, because usually the student has only cursory understanding of these frameworks, and the error messages can be very unhelpful. In addition, all assignments are auto-graded, and the auto-grader has some quirks. You may have the right solution for some exercise, but not the exact code the grader expects, and it considers that wrong. Or you may have one incorrect line of the 10 required for the function, and you get 0 points instead of some higher percentage. Also, the grader log output is usually just the text "something went wrong".

When you are done with the class, you lose access to the online resources. However, you can download all videos and your homework solutions, to refer back to them later if you want.

The time commitment is roughly 10 hours a week, and the whole specialization can be completed in about 4 months if you follow the course's weekly pace. It took me 7 months because I took some breaks in-between (summer vacation, busy at work, etc). The cost of the class is $49 a month. The equivalent US college course would cost thousands of dollars, so I find the monthly fee quite reasonable.

Overall, I found the course extremely valuable. In my opinion, a programmer who takes this class is ready for an entry-level ML engineer position. I did not get to write a model from scratch, but I got a good understanding about a wide variety of concepts, that I can use to build my own models in the future. Compared to an in-person class, you miss out on interactions with the instructor and fellow students, but you probably don't miss out on lecture quality; the quality of the videos is very high. A highly recommended class for people who want to get into machine learning.

Comments