No need to learn Machine Learning

Learn to create software using machine learning models


image

Disclaimer: This article is based solely on my observations of development teams in the field of machine learning and is not the result of a scientific review of the industry. For reference, I am helping develop Cortex , an open source platform for launching models into production.

If you are a developer, then at least you have a passing interest in machine learning. The concept of an algorithm that students learn to make predictions later is simply ... cool.

However, if you decide to start studying ML following all the canons, then it is likely that after two weeks of linear algebra and multivariate analysis, you quit this lesson.

The reason lies in the fact that most of the introductory materials on ML are focused not on developers, but on researchers - which is a problem for developers who simply want to create machine-learning products.

Do you want to create products or do research?


Until the end of the 2000s, machine learning was almost exclusively a research problem. There were simply not many companies that would really use machine learning in production.

Thus, many of the familiarity materials available on machine learning are based on a research approach. It all starts with an explanation of neural networks from a mathematical point of view, and the theory underlying machine learning. Things are given, such as the back propagation method and adversarial networks.

Even non-university related materials to some extent follow this pattern. For example, this is taken directly from TensorFlow's “Quickstart for Beginners” library:

image

If you think I am acting selectively, I suggest reading the following .

If you are already familiar with the mathematics underlying machine learning, or you like to study it, this approach is suitable for you. However, if you are primarily interested in creating things with machine learning, then most likely this is not quite what you are looking for.

Using programming as an addition to mathematics is the same as learning to write code by first learning the assembler. No developer will learn that way.

Note: If somehow you learned to code in assembly language, I admit all the evil comments to my side, and am impressed that you found a browser on your indistinct Linux distribution.

When you learned how to code, you most likely did it by writing “hello world” in a high-level language. Then, as the projects became more complex, you began to study low-level programming.

This training model is successful among people who create software because it clearly sets priorities when working on a project. If you are more interested in creating a recommendation system than in publishing an article, then this is how you should approach the study of machine learning.

How to learn ML by creating software


If you are the type of person who learns best through courses, then the best resource to promote this top-down, learn-to-process approach to working with ML is the course at fast.ai Practical Deep Learning For Coders .

The purpose of the article is not to advertise fast.ai at all, but it is worth noting that the founders of the platform (Jeremy Howard and Rachel Thomas) have put together several courses for developers with deep training, which literally force to create things, delving into the main theory, since it directly connected with the project. To better understand their learning style, watch a video from Rachel Thomas.



On the other hand, if you belong to the type of people who study best by immersing and creating things on their own, then you can start mastering machine learning just like in any other field of programming. Just choose a project that interests you - I have put together a giant list of natural language processing projects for beginners - choose.

To better understand what creating software with ML is (if you go this way):

  1. Define a goal, for example, create autocomplete for a text field or license plate identifier.
  2. Find a pre-prepared model suitable for your project - GPT-2 or YOLOv3 models will also work with the previously mentioned projects.
  3. If you want, you can even use the library as gpt-2-simple to fine-tune (customize to your own data) your model.
  4. Finally, deploy the model as a microservice.


Once the model is deployed as an API, you can request it, like any other web service, and build your application around it.

You can see the real application of this process in a project created by a solo machine learning engineer.



Thanks to this learning method, you can get acquainted with various popular model architectures, learn about other approaches to machine learning, and for which applications they are intended. Equally important is the fact that you will learn about the machine learning infrastructure that is needed to build real-world products based on models.

As soon as you can create ML-based products, start learning theory


As an engineer, you probably already implemented some form of authentication earlier, which means that you (I hope) hashed passwords.

When setting up password hashing, did you write a custom hashing algorithm? Have you spent several weeks studying cryptography? Or did you just use it bcrypt?

Similarly, when you created your first web application, did you study the database for several weeks? Did you write from scratch? Or did you use the random ORM of your favorite framework?
The same logic applies to machine learning. If you are a person who likes to create software, start by creating machine-learning software, and allow yourself to disengage from the underlying ML theory using tools, pre-prepared models, and machine-learning frameworks. Then, if you're interested, or if your project requires more complexity, dig deeper to see how it all works.



image
Learn the details of how to get a sought-after profession from scratch or Level Up in skills and salary by taking SkillFactory online courses:



Read more



All Articles