Machine Learning and Visual Pattern Recognition
Every single moment our brain is being exposed to a vast amount of information in different forms like different light intensities, sounds, touch sensations, smells and a gazillion other more. It turns out that our brain does an outstanding job at getting familiarized with all this new information that arrives every millisecond, thanks to our memory capabilities and pattern recognition abilities we can somehow understand and remember abstract concepts from previous experiences of the real world.
Natural Pattern Recognition
Let me give you a clear example of this, for example a human baby just born doesn’t know a lot of stuff about this world, like for example what a car is or what a TV is, with the passing of days and with unaware day-by-day exposure to different environments he will eventually begin to understand the different abstractions, his brain by the vast amount of information has started to give it a shape and make it a classification which is the same as creating a pattern. For example his mother will point out objects and say what the object is (lets say a car), the baby without realizing is associating the abstract concept of that object with the sound of “car”, his eyes capture a unique shape with rectangles and circles, colors and sizes, all of this is being captured and being associated inside our heads.
So our brain is exposed every day with tons of information, and if you take into account the number of seconds a human experience in his entire life, that’s a ton of information to learn things for!.
The Problem of Computer Visual Pattern Recognition
If we want to create computer programs with such pattern recognition capabilities we need to start thinking how to program a pattern recognition program engine that could handle all the information of the real world the same as our brain does.
For engineers and software developers to create computer programs that emulate the same recognition capabilities of our brains has been a topic of research for over the last 50 years. It is a very challenging task to create something that evolution has perfectionated over the centuries.
When you think about how to create a program that could recognize the shape of a car from an image it is almost impossible to think of if-else statements or to think in some special technique using a 3rd generation language programming like Java or C#. And it turns out that image recognition before machine learning used these brute force methods with classic programming techniques that are actually pretty clever if you think about them but still feels like a very hard thing to do and not a very natural way to solve the problem.
If you think at a deep level from the computational perspective, the ability to recognize the concept of a car from an image is the same ability to recognize the pattern of a car in a set of color pixels aka recognize a pattern of an object in a set of data.
If there were a way to create a program that could recognize patterns from data in the best way possible ¿what will be this implementation look like? ¿What programming techniques should use? ¿Should we use loops? ¿Recursion? ¿If-then statements? ¿Some fancy technique? It turns out that this question is very hard to answer, in fact almost impossible to answer these days, we don’t have a method(thinking in code statements) or technique to create a program that could do such task at least with human performance level.