Last Updated on June 7, 2016
How do you get started in machine learning, specifically Deep Learning? This question was asked recently in the machine learning sub-reddit.
Specifically, the original poster of the question had completed the Coursera Machine Learning course but felt like they did not have enough of a background to get started in Deep Learning.
I wrote a lengthy reply that I think may be helpful more generally, for other people in the same situation that are holding themselves back.
In this post I reiterate my response and elaborate it with links and references that you can use to get started.
Did you complete the Coursera Machine Learning? Are you looking to dive into a specific algorithm (like random forest or deep learning) or a competition (like Kaggle) but feel like you can’t because you are missing some key element of background knowledge?
If these questions resonate then this post was written for you.
Deep learning is fascinating. It has been demonstrated to achieve state-of-the-art results on hard problems and there are libraries where you can apply the methods to standard datasets right off-the-shelf with your PC.
You can learn a lot very quickly by working some problems and perhaps even attempting to reproducing some interesting results.
My default answer is to not wait to learn technology x. If deep learning is what you want to work on, then start working no it. Don’t wait for an imaginary gatekeeper to grant you permission.
The same arguments applies to getting started in big data, a Kaggle competition or any other aspect of machine learning.
Stop “getting ready” and instead “start working” on the area that interests you most.
The root problem is self-limiting beliefs, these are beliefs about yourself that arresting your progress. I have covered this in more detail in the post “What is Holding you Back From Your Machine Learning Goals?”.
Machine Learning Self-Study Blueprint
It maybe wise to add context to deep learning by understanding that it is just another class of algorithms suited for specific classes of problems (complex data types like text, audio and images, unlike tabular data).
A broader path could be to investigate deep learning as part of your broader on going machine learning self-study.
Given that you have completed the Coursera Machine Learning course you have a crisp foundation on which to build. I would suggest the following, tailored for self-study and getting results (as opposed to formal study and theory).
1. Learn and practice the process of applied machine learning.
- Learn the step-by-step process for working a problem (KDD, Crisp-DM, OSEMN, whatever).
- Learn an off-the-shelf tool or tool-chain that lets you repeat the process (like WEKA, scikit-learn or R).
- Practice the process on small standard datasets that fit into memory (like those at the UCI Machine Learning repository).
This will build your confidence in working problems and tackling new problems that come along. You will also begin to gain perspective on where algorithms and skills fit, figure out what you’re good at and what you need to work on, allowing you to prioritize what you learn next.
Maybe you decide to go deep into one area and become a specialist, maybe you decide to go broad and help business as a data scientist.
Learn more about the process for applied machine learning with links to specific steps in the post “Process for working through Machine Learning Problems“.
2. Build a portfolio of completed work.
- Use the projects from #1 above as the basis of a portfolio of completed work.
- Make sure each project/result is 100% reproducible (using scripts or step-by-step instructions or whatever).
- Create semi-formal work product for each project to share what was done, how it was done and what was learned (use GitHub README files on each repo, write blog post, create PDF tech reports, power points, whatever).
This will demonstrate unambiguously that you can complete projects. It will give you confidence to take on bigger and more interesting projects as you leverage what you have learned and can be used to demonstrate your growing skills and capabilities to third parties once/if you start looking for work.
Learn more about building a portfolio of machine learning projects in the post “Build a Machine Learning Portfolio: Complete Small Focused Projects and Demonstrate Your Skills“.
3. Design and execute small self-study projects.
- Extend the methodology of semi-formal work product from #2 and use self-study to fill your gaps.
- Go deeper into an algorithm (sure a learning algorithm, but also data prep methods, or whatever area you need to)
- Go deeper into a problem (a specific problem instance, such as from Kaggle, or a study across a class of problems)
- Go deeper into a tool (study a tool and figure out how best to use it in your process, a deep learning tool could fit in here)
This will give you the systematic process that you can use to fill in any gap in machine learning towards your own personal goals. You can use it to just as easily get better at applying an algorithm (like random forest) as better understanding a the mathematics of an approach (like SVD). Only go deep enough to get what you need, and only when you need it (rather than just in case you need it).
Learn more about designing and executing self-study projects in what I call the “Small Projects Methodology“, the post “4 Self-Study Machine Learning Projects” describes this approach.
You will never know enough stats or math or programming or whatever. These are not really finite subjects.
If you are truly interesting in machine learning, then the study you need to do will be life long and you need the systems and confidence to do that study efficiently.