The Genesis Of Genetic Algorithms

genetic algo dna styleLet’s say you have a function and you want to optimize it. In real life, this function can take many forms like choosing the right set of features for your car while keep the price low, picking the best possible apartment considering all the different factors like location, rent, closeness to stores etc, making a business plan, and many other things. In fact, we continuously use optimization in our everyday life without even realizing it. The interesting thing to note is that we don’t get the most optimal answer every time. We just look around for a while and stop when we get a good enough answer. More often than not, these answers are sub-optimal, mostly depending on the initial point we chose. So how do we get to the best answer? There might be billions of options, do we need check all of them to get to this global optimum?   Continue reading “The Genesis Of Genetic Algorithms”

Can Machines Be Truly Independent?

thinking computerIn my previous blog post, we discussed about how we can measure a computer’s intelligence. When we talk about machine intelligence, what exactly are we talking about? Are we just talking about machines mimicking the human ways and mannerisms in the best possible way? No matter what the machines do, they are still following a predefined sequence of steps or an algorithm that dictates the sequence of steps. The field of artificial intelligence has been trying for a long time to put actual intelligence into a machine, but we are still far from it. The question then would be, can machines be truly independent?   Continue reading “Can Machines Be Truly Independent?”

Can We Measure A Computer’s Intelligence?

computers learning to be humansPeople talk about artificial intelligence all the time. Artificial intelligence is the branch of study which deals with putting intelligence into the machines so that they can do things by themselves. But how do we know if they are getting intelligent? For us humans, we have designed various kinds of IQ tests to measure our intelligence. Is there anything for machines as well? I am not talking about the robustness of an algorithm or the accuracy with which a computer can finish a certain task, I am talking about the actual intelligence. Is it possible to measure it?   Continue reading “Can We Measure A Computer’s Intelligence?”

Curvelet Analysis

curvelet length vs widthThis blog post is a continuation of my previous post on ridgelet analysis. Motivated by the problem of finding efficient representation of objects, people introduced yet another representation system called the curvelet transform. This is very efficient in representing objects that have discontinuities along curves, and compressing image data as well. Curvelets are a non-adaptive technique for multi-scale object representation. Why do we need this? Are they more efficient that ridgelets?   Continue reading “Curvelet Analysis”

Ridgelet Analysis

ridgeletsThe pioneering work of researchers on signal processing paved the way to the powerful concept of multiresolution analysis. This is perhaps best known under the generic name of wavelets. Signals occur in the form of images, voice, radar, sonar, infrared etc. Different techniques have been developed over the years to understand these signals. Multiresolution provides us with tools to analyze these signals at different level of resolutions. It’s like looking at the same thing using a microscope with different magnifying powers. The formulation of multiresolution analysis moved the signal processing field away from classical Fourier analysis. But are wavelets equally efficient for all the shapes? Can we somehow take advantage of the shape of the object?   Continue reading “Ridgelet Analysis”

Those Mysterious Linker Errors

linker errorIf you have been coding long enough, then the linker errors are probably the ones you ended up hating the most! Once you’ve finally designed the program logic, cleaned up all those frustrating syntax errors, and prepared yourself to see the output, you may still need to deal with linker errors. The linker errors are particularly frustrating because they are not necessarily related to anything you have written in your program. What exactly are these linker errors anyway? How do we fix them?   Continue reading “Those Mysterious Linker Errors”

P vs NP: The Epic Saga

P vs NPP vs NP problem is one of the great unsolved problems in theoretical computer science. This problem has become broadly recognized in the mathematical community as a mathematical question because it is fundamental, important and beautiful. It is in fact one of the seven Millennium Prize Problems. If you solve this problem, you get $1 million and become really famous among mathematicians and computer scientists. If you are evil, then you can use your proof to become richer than God, then publish your proof, reject the prize money and become extremely well respected in the mathematics community! Wait a minute, really? How can I use this to become rich? Before we answer that, let’s see what exactly is the difficulty in solving the problem. Shall we?   Continue reading “P vs NP: The Epic Saga”

Bayesian Classifier

Bayes theoremIn machine learning, classification is the process of identifying the category of an unknown input based on the set of categories we already have. A classifier, as the name suggests, classifies things into multiple categories. It is used in various real life situations like face detection, image search, fingerprint recognition, etc. Some of the tasks are really simple and a machine can identify the class with absolute certainty. A common example would be to determine if a given number is even or odd. Pretty simple right! But most of the real life problems are not this simple and there is absolutely no way a machine can identify it with absolute certainty. For example, object recognition, weather prediction, handwriting analysis etc. So how do machines deal with these problems? What approach can be used here?   Continue reading “Bayesian Classifier”

OpenCV On Mac: How To Get It Up And Running?

opencvOpenCV is a computer vision library used extensively by people in the computer vision field. Until a couple of years ago, OpenCV was a bit hacky and the usage was not very straightforward. But determined efforts by multiple companies finally standardized the process and now it is nice and clean. Computer vision algorithms are computationally intensive, requiring lot of processing power to run in real time. Before OpenCV came along, the efforts were very fragmented and repetitive, and there was no standard library as such. Hence Intel decided to do something about it and came up with OpenCV. The advantage of OpenCV is that the algorithms are highly optimized and the library is available on almost all the popular platforms. I have outlined the procedure below to get OpenCV up and running on your Mac.   Continue reading “OpenCV On Mac: How To Get It Up And Running?”

What Does Backpropagation Mean?

feedbackPeople started working on artificial intelligence back in the late ’60s. After they came up with the concept of perceptron, this field looked very promising. But as the years passed by, no significant development took place even after making several attempts from multiple directions! As people were beginning to lose hope, backpropagation came into picture and breathed new life into this field. Backpropagation was the result of pioneering work by mathematicians and computer scientists, which eventually led to a successful revival of artificial intelligence! So what exactly is backpropagation? How is it used in real life?   Continue reading “What Does Backpropagation Mean?”