It’s been a year since I started working as a machine learning engineer. AI and ML is a sub-discipline of computer science which always fascinated me. I am still relatively new to this field, and I am still learning. I still remember the first model I trained. It was on the popular MNIST dataset. You might be thinking, is not CNN a little advanced to start with? Yes, it is. As a self-learned machine learning enthusiast, my learning process was disorganized. Talking about the learning process, let’s begin with that only.
There is not one right way to learn ML. It depends on your goals and interests. I can outline different things in machine learning, but it depends on how you want to take it. There are structured courses available online. You can subscribe to those also If you want to go in a more structured fashion. Ultimately, It’s the combination of offline courses (If you have time and money), online courses, online free materials (Like YouTube, blogs), Books, and practice.
You can use the divide-and-conquer approach. The same Machine learning concepts need to be learned on three fronts. I would go in the following order.
Conceptual level
Before anything, you need to have the intuitiveness behind a machine learning model and to do that; you need to understand it at the conceptual level. I would say treat the mathematics behind the model as abstract in this level of understanding.
Let me take the example of linear regression for simplicity. Linear regression predicts a dependent variable value (y) based on a given independent variable (x). That’s all it does at a conceptual level. It’s a simple mathematical function.
If it’s a simple mathematical function, how is it unique with respect to machine learning? Let’s go a little mathematical to understand this. Linear regression is a simple model, so the conceptual and mathematical levels overlap, but this would not be true for more complex algorithms.
Mathematical level
Once you have a basic understanding of the model, you can start dissecting it. A linear regression model can be represented as follows in a mathematical equation.
Y = mX + C
Y: Dependent variable
X: Independent variable
m: Coefficient
C: intercept
This equation can represent any line depending on the value of ‘m’ and ‘C’. That’s what we try to do in machine learning. Given a set of ‘X’ and ‘Y’, we try to find the best possible value of ‘m’ and ‘C’.
To understand how we do that, you must know about calculus, loss function, gradient descent, and other mathematical concepts depending on the algorithm. For example, to understand Bayes Classifiers, you must know about probability.
It’s all well and good but now what? No matter how proficient you are in machine learning algorithms, it would not matter if you can’t apply them practically.
Programming level
If you have a background in programming already, you can immediately start applying the ML concepts in programming. If you don’t have an experience in programming, I would suggest learning programming concepts separately first. If ML is the focus, then Python would be the preferred language. Once you have a basic understanding of programming concepts, try implementing ML algorithms from scratch without any library. Once you are confident, learn about the different ML libraries available and how to use them. Libraries like NumPy and Pandas are fundamentals.
But this does not end here. Many things come before applying ML algorithms and after applying ML algorithms. You also need to be familiar with Data science skills, statistics, Data visualization, ML Ops, Cloud, Database etc.
ML is the intersection point of usually diverse fields. There is mathematics involved, but a mathematician can’t do practical ML. It intimately solves business problems, but a person from management can’t do ML. Programming is involved, but a programmer might need additional training to do ML. An ML engineer needs to be all of these things.
An ML engineer needs to be intimately aware of the business they are trying to solve. This is a little different from the Traditional programming Jobs I have experienced. I am talking about entry-level jobs. A programmer needs to be aware of the business, but it can be treated as a black box. What matters is that the piece of code you are writing produces the correct output given the correct input. I still remember my first internship. I used to write code segments, and what mattered was if it was written according to software paradigms and if it was successfully solving the given problem. Suppose you are writing a code to make a date picker from the user. You don’t need to know intimately about the business to make the date picker. I still don’t know what was the complete use case of the product we were working on during the internship. I worked only for three months in that position. I think we can’t have this in ML jobs, even at the Junior level. An ML engineer essentially works with the data and it is important to understand how the given data is related to the respective business for the ML pipeline to be successful.
This is a no-brainer and is true for literally any job. Still, this is the aspect I struggled with the most. The client needs to be in line with the product you are working on. ML is not magic. Not every problem is solvable by machine learning. Also, you may need to explain ML concepts or any technical concepts to a team with no expertise in the field. Communication is the key in such scenarios. Don’t assume things. Don’t be surprised if someone genuinely asks a trivial question.
This might sound counterintuitive, but you don’t need to apply fancy ML algorithms everywhere. Simplicity and stability are the key. There will always be new trends, but you need to navigate to what works best for the given problem. This doesn’t guarantee that the product will always work as expected. Problems/Bugs are inevitable. Initially, even the simplest problem used to raise my anxiety, but after overcoming multiple Problems with the product, I am much more confident now. Just a few weeks back, I encountered a weird bug that didn’t make sense. It turns out an incorrect input from the user caused that.
I hope this article provided some clarifications to any aspiring machine learning enthusiast. If you liked the article, don’t forget to share it. If you have any thoughts regarding the topic, you are free to comment on them.