As we start 2017, one of the most important skill-sets a developer can have is to be conversant about the super interesting field of Artificial Intelligence, Machine Learning and Deep Learning. I a few years, being able to use AI/ML/DL technologies and carve out intelligence architecture of your application will be as important as being able to decide the storage architecture of your architecture. Developers who are familiar with AI/ML/DL techniques, their relative strengths and limitations, as well as have depth in applying a few techniques to solve a business problem will find it easier to advance their careers. This blog is an attempt to help in that direction – and this first post is a primer regarding how to get started. There is a wide variety of literature on the Internet regarding these topics, and instead of providing a laundry list, this post attempts to suggest the quickest way to get started.
Simply, Artificial Intelligence is a branch of computer science dealing with simulation of intelligent behavior in computers. While the excitement in AI these days is largely due to advances in deep learning, it helps to have a quick overview of entire field. The goal here is breadth rather than depth, and I would suggest browsing through Prof. Patrick Winston’s Artificial Intelligence course at MIT OpenCourseware. In addition to AI, you will learn a lot of life lessons. He has a very informal teaching style and orients your intuition in the right direction for further study of ML and DL. I would suggest just listen in to the lectures without worrying about assignments, we’ll worry about assignments later when we study Machine Learning.
Once you have seen some of the lectures from AI course, now is the time to get into the details of Machine Learning. Here, I would recommend doing Prof. Andrew Ng’s Machine Learning course at Coursera, and rather than browsing, completing the course fully with all the assignments. There are two types of assignments: multiple choice questions and programming assignments in Octave or Matlab. Try to complete all of them, aiming for a perfect grade in each. If you skip the assignments and do not have prior ML background, you’ll find that you are not able to keep up with the advanced material in the course. Of particular interest are Week 4 – Neural Networks: Representation and Week 5 – Neural Networks: Learning. Don’t jump to these directly – you’ll need mastery on the prior weeks where Linear Regression and Logistic Regression is taught in order to be able to understand the material being taught here. Even most of the notation is carried forward from prior weeks, so best to watch these videos in sequence.
You actually don’t need to do much here if you have completed Week 4 and Week 5 of the Machine Learning course described above. You already have some depth to think through how deep learning can be applied to a problem you may have. Feel free to browse through Stanford’s Deep Learning Tutorial, but it should be straightforward if you have completed the programming assignments for Week 4 and Week 5.
That’s it! That said, this field is rapidly advancing and you’ll need to keep an eye out on the latest happenings from both academic world and the industry. More on that in follow-up post(s) on this blog. Subscribe if you’d like to be updated.