Fast-tracking Fast.ai
By: Suhas Dattatreya
Tags: Programming, Deep Learning, Learning, Learning To Code, Machine Learning

An opinionated guide on how not to fail with learning machine learning

I meet a lot of developers and entrepreneurs who want to learn machine-learning almost on an everyday basis.

Conversation on LinkedIn while this article rested in my drafts

These were some of the questions that were asked

“ How do I start learning AI?

What are neural networks?

What is the difference between AI, ML, and DL?

I tried to learn DL but the math was insane — I didn’t understand it”

Here’s how the questions look like (actual data collected)

So, let’s assume that there is a task at hand. To achieve this task, you have to turn knobs. All knobs need to be set to a precise position so the desired outcome can be achieved.

Now, when we look at a Coursera course (the Andrew Ng ones) — you’re learning a lot of things, why knobs? How much should you turn? Why should you turn? What happens if you turn too much?

While it’s great to know all this information but this doesn’t answer how we can tackle real-world problems. Often, I ask people “Why do you want to learn machine learning?” The answers help me roughly classify people that want to learn machine learning into two classes.

People who want to spend time understanding how the knobs work first but don’t necessarily want to turn them — This set of people do not usually intend to write code, or even if they do, it is always secondary. They understand very well how the parameters (remember, here: knobs) work, what the parameters are for and what happens to the outcome if they (the parameters) are changed. In all honesty, this class is sparse. People that turn knobs first and then understand how the knobs work- Now, there’s a high probability you belong here. You have dabbled in python and maybe even with numpy and pandas libraries. You have probably sheepishly looked at kaggle competitions and the many DeepLearning coursers that somehow seem to outdo each other with content and you have concluded on one thing.

Holy Sh!#, there’s a lot to know in this space.

You do not need an original idea to get started. I wish someone told me that when I was learning machine learning. Every time I learned how to build a classifier, I always tried to identify a good problem I could solve with my new-found knowledge ignoring Kaggle competitions. But, more on this later. I promise.

In 2016, I strongly advocated for beginners to use TensorFlow and to also consume content from Andrew Ng’s course. At the time, Andrew Ng was working on DeepLearning.ai and it seemed as though his content was ahead of everyone else’s (IMHO). Later, I noticed a lot of these people having a mental block towards learning ML — Simply because, in these platforms, you are taught to turn all knobs. This is the same reason I didn’t get around learning ML my first time. It took me a while to understand that watching lectures and reading papers do not equate to doing machine learning. The reason is simple —

Do you remember how when you were learning for loops and if conditions for the first time, you probably had a tough time trying to visualize how these things worked? Then, in 2013 MIT had a fun way for kids to learn programming which looked easier and appealing? And the kids on Scratch could understand programming concepts quicker than us?

Remeber Scratch?

In a lot of ways, what Scratch was to traditional programming, Fast.ai is to Machine Learning.

Fewer knobs to turn. Abstracting things that are not required to know during initiation. Very outcome-driven. Fast.ai teaches an approach called ‘ Top-Down’. That essentially means — big picture first. Fewer knobs to turn. Taking what you learned and implementing it — even if it meant that you don’t understand what the knobs do.

Lesson one covers loading the dataset, training a resnet34 or a resent50 and looking at our outputs. This encourages learners to ask more practical questions like “How do I load my dataset? How can I get a user to upload one image and link that to the classifier?

Tensorflow, on the other hand, gets beginners worried about activation functions, dropouts or more. In a lot of ways, I think we all look for a maximum of accomplishment for a minimum amount of work done (at least on day 1) and with fast.ai, the people that stuck around for a few lessons felt a greater sense of accomplishment.

So, in summary -

Fast.ai takes an approach where it teaches you a cutting-edge research+Practitioner led field in a way that a young kid is taught Sports. Don’t spend too much time reading about your sport, just go out and play.

Most importantly don’t forget to swing again if you miss.

Code > Consume — Get started with coding now, break out of just watching videos and reading books. self-assess and then consume more content. Concepts > Details — Know your concepts first, you will gradually dig into all the details. Vertical learning > Horizontal Learning — Stick to one framework, master the concepts, then broaden your horizon to more frameworks and libraries. Collaborate > Compete — Seriously, ask in the forums. Do not be intimidated, they are not filled with veterans. There are always beginners and help will be given to those who ask for it.

It’s okay to rewrite code for something you think is a simple idea if you start by building cats vs dogs classifier, understand as much as you can about the classifier before trying on your idea for a classifier.

Don’t be afraid of reading the open-source code of the library you are using.

Also, let me tell you-It indeed is an overwhelming field. Becoming a great practitioner is hard, it will require a lot of patience and practice.

Lastly, don’t be afraid to reach out to the experts. When I failed to learn machine learning (this was pre fast.ai) Sebastian Raska’s book on Machine Learning in Python was probably one of my favorite books that I used a lot.

I gathered my courage to speak with Sebastian about his work and the book and he even sent me an e-signed copy of his book!

You can buy his book here, but I urge you to do your research since a lot has changed since 2017 :)

Oh yes, the Kaggle competitions — it may feel like right now everybody is talking about them and also you may feel like everybody’s code is superior to yours but take some time off, go to the get started section (if you can’t find it) and even if the problems sound repetitive and outlandish, give it a try.

I hope this works for you! Don’t forget to code, code, and code.

I wish you well on your quest.