I was chatting with a friend of mine who suggested sharing information about the process of learning could be just as important as what's learned. I wasn't really sure about this, but on the assumption that people other than me have informed opinions as well :-), thought I'd share a bit. I'd like to share how the questions I asked myself, and the resources I used as I progress on the journey for getting into the field of machine learning.
In general, when I'm interested in a new subject, I ask the following:
So, the first question I answer is 'Why do I care'? This has to align with what gives me joy personally. The reason is that while learning a new topic, there will be days when I really don't want to continue. If I'm not aligned personally, it's unlikely I will continue on the learning path.
For machine learning, I believe it provides another way to leverage data, compute power, and algorithms to answer questions in a way that provide actionable answers to more people. Even the toy demos show promise at being able to answer questions that are difficult to code. For example, the Fashion MNIST (https://www.tensorflow.org/tutorials/keras/classification) tutorial shows how to classify images of clothing with a surprising amount of accuracy.
Now that I had answered why, the next question was what. That is, should I get into learning the algorithms, deploying the code, understanding ethics, choosing between the toolkits - the list seemed endless. I stalled here for a few weeks mulling over where I should go next. In the end, I went back to my answer for 'why' and choose to focus on how to add to a system that uses machine learning. Among the implications this had was: 1) I could leverage my existing knowledge on how to build and deploy systems in the cloud, 2) understanding math / statistics is important, though the use of libraries makes this significantly easier and 3) it aligns with what I like doing — creating systems that can provide actionable answers to a large number of people (or companies) who have the same issues.
Next step: how was I going to learn this topic. Even a cursory web search revealed an overwhelming amount of machine learning resources. So I found a name people trusted, Andrew Ng, and took the course he authored at Coursera. This gave me a theoretical underpinning for machine learning, and an appreciation for Octave. Unfortunately, it did not give me a good understanding of how to deploy ML in production. The resource that came closer was Aurelien Geron's book titled 'Hands on Machine Learning with Scikit-Learn, Keras & Tensorflow'. This book gave me a practical understanding of how to think about a machine learning model as well as how to measure it's efficacy. When I turned to reinforcement learning, there was not much in the way of having a coherent plan that was useful, so I recruited a mentor, drafted an outline and reviewed weekly progress with my mentor. Having regular checkpoints with a mentor gave me a way to ask questions, and helped in not letting things slide.
An observation that occurred to me is that deploying ML in production is not that different than deploying any other system in production. The systems (even ML ones) all have similar concerns, such as backups, identity, security, scaling, monitoring, alerting, disaster recovery, high availability, and managing a release life cycle. A second observation is when undertaking an ML project, (as with any other project) the investment of time and effort should provide value. The value provided could be in a number of areas including: academic rigor, reducing customer churn, increased revenue or savings in future time / effort. A third observation is developing and deploying machine learning solutions does not map well to an agile methodology, but essentially relies on waterfall methodology. Finally, I believe to create a sustainable advantage with ML, the necessary ingredients are data sources or models trained on large data sets.
I believe my journey in understanding machine learning will be an ongoing one that I don't see an end to. I’d be interested in hearing how other people learn.