Software Development vs. Machine Learning

Artificial intelligence is a part of our daily lives. What we see on Twitter, Facebook, Google; the shows recommended to us on Netflix, Amazon Prime, and face detection are all using a form of AI called supervised machine learning (ML) i.e. you can teach a machine (computer) to learn something, it has no clue about, based on a lot of data. For example, you can show a machine thousands of images and train it to detect cats. After being sufficiently trained, you can input an image, which the machine has not seen before, into the machine and it would tell you if there is a cat in the image. The more data the ML models get exposed to, the better they get over time. 

Most of the practical applications we see today are using ML. And, everything ML is doing can be done by humans. So, why do we need ML? Three main reasons: 

1. Automation: You don't need to hire humans to figure out if there is a cat in the image or if an email is spam. Machines can do a good enough job. This can result in huge cost savings. 

2. Scale: Since you don't need to hire humans, train them, and retrain them, you can scale your product/business very fast. For example, you can go from classifying 10,000 emails per hour to classifying 1M emails per hour in seconds. Hiring people to handle 100x (1M/10k) workload can take years. Furthermore, there is just so much data now that it is hard for humans to fathom. For example, there are over one trillion pictures taken every year. 

3. Speed: Machines can do the jobs faster than humans can. 

When do we need ML? It is well suited for problems for which writing logic based rules is difficult. We have become used to logic based rules with software development over the last ~70-80 years. However, pure logic based rules are not well suited for all problems. For example, how do you write a software program to accurately detect a cat in an image. It would be really hard and not very accurate. Software can help find answers and ML can help you make rules that can predict answers. However, you have to know the answers and train the machine before you can use ML to predict answers. E.g. you have to know what a cat looks like before you can teach it to the machine and then the machine makes its own rule, based on various cat properties, on how to detect a cat. 

Interestingly, humans don't always understand the rules the machines come up with. 

The following image shows the fundamental difference between software development and ML: 


Software vs. ML



ML requires a different mindset, heuristics, and humility. As the world is getting digitized, we will see more and more applications of ML and other forms of AI. 

Popular posts from this blog

Obituary: Charles T. Munger

Systems Thinking as taught by Ackoff

Dynamics Of The Technology Ecosystem