Wednesday, March 30, 2016

Stanford CS231n: Convolutional Neural Networks for Visual Recognition Review (Winter 2016)


Stanford's CS231n is a computer science course about neural networks, focused on convolutional nets for image recognition and other cutting-edge applications. CS231n is not a MOOC in the traditional sense in that it is not offered on a MOOC platform like Coursera or edX and lacks interactive features like registration, graded assignments, forums and certificates. The materials for CS231n are essentially a course archive of YouTube video lectures, notes and assignments, similar to sort materials you'd expect to find on MIT's OpenCourseWare platform. I don't usually take archive-style courses, but I've been looking for a good course on neural nets for a while now and Udacity's Deep Learning really came up short.

Before diving into CS231n you should have basic knowledge of vectors, matrices, gradients and finished a first machine learning or data science course covering the basics of regression, classification and gradient descent. All assignments consist of Python Jupyter notebooks and require heavy use of the numpy library. You could get a lot out of the course just by watching the lectures and reading notes, but Python is required to do the assignments.

CS231n is a full-length university course that covers neural nets thoroughly from the building blocks of linear classification and backpropagation to state of the art techniques with convolutional and recurrent nets. The main speaker, Andrej Karpathy, is very knowledge and a good lecturer. The secondary lecturer isn't 'quite as good as Karpathy but he does a decent job delivering 4.5 lectures on some of the more advanced topics in the second half of the course. The course builds in a logical order over fifteen 75-minute lectures, so while it covers a lot of ground, it rarely feels like things are moving too fast. The lectures are full of tips and practical considerations for designing and training neural nets in practice and the content is about as up-to-date as you can get (in early 2016.).

You could get a lot out of CS231n just by watching a few lectures on topics of interest. You will gain a deeper understanding of the content and have a chance to implement, train and fine-tune your own neural nets if you go through the assignments, but be prepared to spend a lot of time working your way through. This is a meaty course with over 20 hours of lecture and you may spend several times that amount on the assignments. The 3 assignments are very well made, but they are lengthy, with each having 4 to 5 separate notebooks you have to work through and many functions you have to create in separate files. The assignments provide a healthy amount of guidance and many tests to make sure your code is working so things don't break later on. Still, getting everything to work on your own can be challenging and the forums are only for Stanford students. Try searching online if you get stuck; there is a Reddit sub and various GitHub pages that can help you get through. It's worth completing the notebooks even if you have to copy some code, because you'll get to play around with some interesting applications like visualizing the filters on the top layer of your conv nets and warping images with your own version of DeepDream.

CS231n is everything Udacity's Deep Learning should have been. You'd be hard-pressed to find a better course on neural nets anywhere on the web or on a campus. It covers everything you need to understand neural nets, from high level concepts to low level implementation details and the focus on recent advances makes it more relevant than older courses on the same subject.

I give CS231n : Convolutional Neural Networks for Visual Recognition (Winter 2016)  5 out of 5 stars: Excellent.



*Update 5/4/2016 - Andrej Karpathy has been forced to remove the lectures for CS231n from YouTube. The lecture slides and assignments are still available on course syllabus page. See the related Reddit post.

*Update 7/12/2016 - It appears you can still access the lectures for this course on Youtube if you have a link to the unlisted videos or playlist. Playlist link!

2 comments:

  1. Hello :), could you recommend me to take this course after Machine Learning from Andrew NG without any experience on python? If not, could you recommend me one course to keep learning machine learning but on python instead of Octave/Matlab? Thank you!

    ReplyDelete

Note: Only a member of this blog may post a comment.