Many students approach me to ask what is the ‘easy’ course in Machine Learning and Data Science and how can they easily understand complex algorithms. In my opinion ML is one of the easy sciences. The reason why most people find it difficult, at first, is that they have the wrong approach to it. Suppose if you wanted to learn to play guitar and you’d had to learn an year worth of music theory before you could even touch the instrument, wouldn’t you be intimidated? The same is true of ML. Having the right approach can keep the motivation intact and make learning fun. Following are the maxims/method that I have found to have worked well with beginners.
DON’T BUILD FROM SCRATCH
One of the rookie mistakes is to start from scratch. First learn calculus then multivariable calc, linear algebra, probability and basic stats and then delve into working ML. The problem is not that it won’t work. In fact, it will work remarkably well, but in an ideal world. A world where motivation would not depreciate with time of un-interesting study. I am guilty of giving this advise too to the young students who were starting in ML too. Then I realized that most people who start like this soon leave their pursuit being overwhelmed by the amount of abstract rules and theories they have to learn. I have come to terms with the fact that, Mathematics is like dark chocolate, people who love it, think everyone else is crazy not to love it too. Just like majority of us find dark chocolate bitter, majority of us don’t have a developed taste for mathematics, either. And it is perfectly fine.
DIVE RIGHT IN
The best advice is to dive right in. Do a practical oriented course in ML. Build things yourself, get the feel of ML first hand. This will not only build your operational(practical) prowess but also fuel your motivation. Take your learning algorithm by algorithm and case by case. Build your repertoire just like a guitarist or a chef would build, his/hers. At this stage, consider the following:
Reading case studies.
Learning how to implement models in code.(Albeit, it is in high-level libraries like keras, pytorch, sklearn, TF etc.)
Identifying what type of data a particular model/algorithm uses.
What are the instances in which it has performed well.
Understanding what are the underlying assumptions of the model.(Most importantly).
Applying models on real world problems.
UNDERSTAND, THAT IT IS OK TO NOT UNDERSTAND
John Von Neumann was one of the most remarkable and versatile mathematicians to ever live. Once a physics student approached him to claim that there’s a specific method to solve PDEs that the student doesn’t ‘understand’. To this Neumann replied; “Young man, in mathematics you don’t understand things. You just get used to them.” Given that ML is written in math, it is applied to ML too. There will be many things that you will not understand for first few years but later on, one by one you will come to understand them. Andrew Ng himself stated it once, that he used higher optimization methods for years without understanding their internal loops. So it is fine, if you don’t understand something initially. Learn to be comfortable with this and use stuff as a black box. Be a dog that catches a Frisbee or a race car driver. You don’t have to understand Newtonian mechanics or intricacies of the engine to be these, respectively.
ASK QUESTIONS. GO DEEP
One of the greatest mistake intermediate level ML practitioners make is that they stop here. They don’t go deep. Once you are comfortable with using algorithms, you can ask questions and explore them further. For example, you can ask why do we minimize a negative log of the cost function? why do we use a particular activation function? Why do we differentiate the cost function with respect to weights etc. Questions like these and even more basic ones. This is the best time to start learning theory.
NOW BUILD FROM SCRATCH
Now that you have come this far, you have the licence to build. You have been using ML for years and have good working knowledge of it. Build models from scratch now. By scratch I mean, not in high-level library but in the base language or only utilizing a low-level library like nump etc. Build them not just programmatically but by reading and improvising on their mathematical proofs. Building stuff will open new intellectual avenues for you. You will understand how things connect together and will motivate you in learning more abstract theory surrounding them. And also better understanding assumptions underlying them.
READ PAPERS
Remember the food for intellect is discussion of ideas. And this is exactly what research papers are; Discussion of ideas in a logical framework. But this is only when you have been working with ML for quite sometime. Don’t approach papers if you are a beginner, this might intimidate you and you may loose motivation.
Comentarios