How to Start with Machine Learning
blog.duomly.com
blog.duomly.com
When I started my journey, I thought I should do what this article mentions.
>>First, you should learn the fundamentals:
>> Learn mathematics
My problem is that "learn mathematics" can take years. To me, it would be very frustrating.
So I started down that path... and got completely overwhelmed.
When everything took off and I went from 2 mph to 60 mph was when I did the fast.ai course. The fast.ai course is strongly recommended by me. You'll start seeing results and "actionable" work very quickly. If you so desire, then you can keep on with the more fundamental stuff like mathematics. Also have to give a shout-out to their forums. The people are super nice.
Linear Algebra, Probability and Statistics. (and some optimization)
The fast.ai course is great, but having the math background really helps bring the whole field together. Different ideas and models with the math, seem to stand completely independent of each other.
As a software engineer who wants to learn ML, the fast.ai course is great. But, if you find yourself in a situations where you are scoping out a data science problem, the math background helps immensely in coming up with a solution.
To me the best way of learning stuff is diving head first and playing around with it, making projects with it, and then going back and learning more theory when I start to understand why it's important.
Maybe worth checking out are two books that I'm writing right now where this is used and explained in more detail: https://aiprobook.com
Deep Learning for Programmers at https://aiprobook.com/deep-learning-for-programmers/
Numerical Linear Algebra for Programmers at https://aiprobook.com/numerical-linear-algebra-for-programme...
Everything uses open source software:
If you’re someone who enjoys math you might do it for its own sake but it’s difficult for me to imagine someone making serious progress in this direction without either a passion for the subject, an already relatively strong background, or being in a university.
Frankly, compared to many other disciplines, that's pretty light. Single variable calculus, linear algebra and probability were all required in my undergrad CS curriculum. Multivariable calculus was the only extra course. And if you're in most engineering disciplines, all of this is required.
I'm guessing the difference for CS folks is that they rarely use this stuff in the curriculum, whereas in most engineering programs, you'll use calculus day and night.[0] So for someone like me (engineering background), it was easy to dive into even years out of school as I'd not forgotten a lot of math.
Now of course, if you want to get deep into ML, there's a lot more math than that. However, most successful people using ML do not need to know that math.
And compared to other disciplines like control theory, communications theory, etc, the prerequisites for ML are a lot lighter.
[0] Only in school. Almost never in industry.
Maybe it's easier to become a surgeon by reading blogposts? Better paid?
1. Fast.ai: https://www.fast.ai/
2. Open AI Spinning Up: https://spinningup.openai.com/en/latest/index.html
Read:
1. A Google Brain engineer’s guide to entering AI https://news.ycombinator.com/item?id=18421422
2. How I became a machine learning practitioner https://blog.gregbrockman.com/how-i-became-a-machine-learnin...
His channel gives lip service to ML, and gives incorrect intuitions, that make concepts seem easy, but sets you up for making major mistakes down the line.
His channel is indeed disliked among most ML grad students, as it seems to be very much quantity over quality.
It is like watching science channel and thinking you are ready to be an engineer.
For example, see these threads -
https://www.reddit.com/r/learnmachinelearning/comments/8x5n6...
https://www.reddit.com/r/learnmachinelearning/comments/8zk36...
He also has strict educational projects like "Shool of AI", but I'm not familiar with them.
Do any other people here with college math / cs experience (granted I wasn't top of my class) find this stuff overwhelming or daunting?
Here's what I think I understand so far, feel free to correct me if I'm wrong:
* Most ML solutions come from published papers, and even ones that are years old are still effective and relevant. You're going to be tweaking other people's designs and that's fine.
* Effectiveness of ML seems to come from two things: Network design improvements (some combination of brute forcing, guessing, understanding math, and implementing papers) and from better data (if you have access to more data sets, you can do better things).
* Before you start with the ML part, you need to first be able to do "Exploratory Data Analysis". Which really just means to learn matplotlib, which means you'll need to know how to use pandas, which means you'll need to learn how to use numpy. You want to be able to understand your data, find outliers, graph some examples, etc.
* There's a few different types of ML, but the ones that seem to solve problems are "reinforcement learning", "supervised learning", and "unsupervised learning". The supervised learning is the most common one to get started with, and it seems to work well if you have a big set of "X should produce Y" type of data. Unsupervised learning is similar but you don't have Y and you're looking to find groupings of your data instead of matching to specific labels. Reinforcement learning seems most useful for things like game AI, where you have some state and you have various moves you can do to try and increase your score (OpenAI Gym is really fun for this).
* It is actually unreasonably effective. There are "pre-trained models" that offer a starting point for networks that have already seen huge data sets. You can "transfer" that learning and then train on top of it. It's amazing how little effort is required to start classifying images.
* Keras backed by TensorFlow seems to have the best support all around, and the code is pretty easy to read. TensorFlow is a little like OpenGL where it has its own rules and state, and you should do some examples to see how it works, but it's very low level. Keras is like any other high level python library and it does almost all of the TF interaction for you.
* If you're doing it on your machine, use conda, because it manages all the python stuff for you. If you want the fastest way to get started online without your own GPU, use Kaggle. It has a maximum runtime of about 9 hours but that's plenty to get started.
The key to ML is:
1) The use case. 2) The data (collecting, pre processing) 3) The integration with other software.
Oftentimes designing and creating the dataset is as difficult as coming up with an experiment in the natural sciences. If your problem is solved by a toy dataset on the internet, then it's not really a problem, and its only machine learning in the same way programming bubble sort is software engineering.