Creating stupid software

Everyone wants to create smart solutions. You want a smart home, smart city and maybe even a smart government. I never meet people who want to create stupid software. The use of software should be idiot proof, but making things really simple to solve a complex problem is very hard.

Machine learning enables everyone to create smart solutions for very complex problems. At least that is a promise claimed by many commercial vendors selling you Artificial Intelligence (AI) or Machine Learning (ML) driven solutions.  But getting the essence of machine learning means you must reset your brain. You have to take a totally other approach for solving problems using computers than the traditional ‘programming’ way.

To really understand machine learning a new view on how software can be created and works is needed. Most of our current computer programs are coded by using requirements, logic and design principles for creating good software. E.g. When you add an item to your shopping cart, you trigger an application component to store an entry in a shopping cart database table. However many real problems, solutions aren’t so easy. A good solution requires knowledge of the context and a lot of hard to point knowledge built from your experience.

Determining the exact context of a car in traffic in order to make a decision within milliseconds to go left or right is very hard programming challenge. It will take you decades and you will never do it right. This is why a paradigm shift in creating software for the next phase of automation is needed.

Programming computers the traditional way made it possible to put a man on the moon. To break new barriers in automation in our daily lives and science requires new ways of thinking about creating intelligent software. Machine learning is a new way to ‘program’ computers. When a programming challenge is too large to solve with traditional programming methods (requirements, getting input, etc) a program for a computer should be ‘generated’. Generated based on some known desired output types. But knowing all desired output types in front is impossible. So your new ‘program’ will get it wrong sometimes. Large amounts of input data will increase the quality of the generated prediction model. In the old traditional paradigm we called it ‘the program’.

Difference between general programming and (supervised) machine learning.

In essence machine learning makes computers learn the same way people learn: Through experience. And just as with humans algorithms exist that makes it possible to make use of learned experience of other computers to make your machine learning application faster and better.

Currently there is a awesome project that is all about collaborative learning on applying FOSS Machine Learning. This project is an open research project. It is open for all to join.

Check it out here!