Machine Learning is a fascinating field that is concerned with figuring out how to make computers learn from previous experiences. It has been applied to all sorts of things, from your Netflix and Amazon recommendations, to finding your friends’ faces in Facebook pictures, and even to detecting sickle cells present in blood. While machine learning has been around since the mid 1900s, it has recently started to explode onto the tech scene, due to its wide-ranging applications, more efficient algorithms, and better computing hardware.
Deep learning is a subset of machine learning that is concerned with modeling more abstract data, like figuring out what a cat in an image looks like. A well-known example of a deep learning model is the neural network. Neural Networks have been used in commercial applications to translate pictures of text in another language to English, recognize your face in an image, and even in self-driving cars.
With machine learning and deep learning being one of the hottest trends going on in the computer science world right now, it’s no surprise that many are looking to get involved in the field. It’s easy to become overwhelmed by the vast amount of resources available, as well as how quickly the field is changing, especially due to the industry-changing research people like Andrej Karpathy and others have been doing. That being said, I’ve put together a few resources for you to work through to obtain a solid level of understanding in both machine learning and deep learning. These resources are composed of books, online courses, and tutorials to learn the most common machine learning and deep learning libraries.
- Take Andrew Ng’s Introductory Machine Learning course on Coursera. This course does an excellent job motivating the need for machine learning. It discusses what problems it can solve, the different types of learning, and touches on some mathematical background to develop intuition.
- Pattern Recognition and Machine Learning, by Christopher Bishop. This textbook builds a solid machine learning foundation from the ground up. It starts with probability theory and Bayesian statistics and covers advanced models such as convolutional neural networks. If you especially enjoy math, this book is the way to go.
- Work through Sebastian Raschka’s book, Python Machine Learning. Raschka’s book will allow you to develop mathematical intuition and actually implement some of the more typical machine learning algorithms. This book also provides a very informative introduction to neural networks and deep learning towards the end. Which brings me to my next resource:
- Neural networks and deep learning — This online book teaches you about the core concepts of neural networks and deep learning. It talks about how they can specifically be used for image recognition and classification, and the challenges associated with that.
- Google’s Deep Learning course on Udacity: Deep Learning | Udacity, which is taught extremely well by a research scientist at Google, and includes programming assignments that teach you how to implement many of these ideas in Tensorflow.
- If you’re interested in theoretical background or wish to gain additional mathematical exposure to ideas such as backpropagation, L1 and L2 regularization, or dropout, I recommend the Deep Learning book.
- If you’re especially interested in deep learning, there’s a few resources to take your study to higher levels. For convolutional neural networks, Stanford has an excellent course: CS231n: Convolutional Neural Networks for Visual Recognition. Ditto for using Deep Learning with NLP: CS224d: Deep Learning for Natural Language Processing
- If you’re especially interested in applying machine learning on real-world, large datasets in production environments, I recommend CS 120 x | edX, a course that teaches you how to use Apache Spark. It was taught in part by Ameet Talwalkar, a professor at UCLA.
It’s also important to do a good bit of programming in order to truly understand these algorithms and how they work in practice. There’s several machine learning and deep learning libraries out there that allow you to quickly build your own custom model and test it, and here are the ones I especially recommend:
- Scikit-learn is an excellent ML library that allows you to quickly learn about machine learning algorithms and test them on your own datasets.
- Tensorflow — open source library developed at Google for numerical computation. If you prefer a higher-level library, TFLearn is an excellent one for quickly making your own deep learning models in just a few lines of code.
- Keras — a high level neural network library that is often used by researchers in academia and industry to quickly prototype models and run tests on them.
Finally, having access to large datasets is useful for testing and running your machine learning algorithms on real data. Thankfully, a lot of organizations and companies have released large datasets to promote machine learning research. One notable website is Kaggle, an online community where you can participate in machine learning challenges on real datasets. Wikipedia also has a comprehensive list of datasets for machine learning.
I hope these resources help you navigate the world of machine learning and become a pro. Thanks for reading.