Traditional computer programs instruct machines to deploy algorithmic logic to make transformations on well-defined data. Such a paradigm is useful for answering question which have a known step-by-step method of obtaining a solution to a problem, based on the provided data. These programs, once executed by the machine solves computational problems which are too tedious or slow when executed by humans.

Machine learning attempts to go a step further, by algorithmically teaching computers to identify rules and patterns present in the provided data and to solve problems based on algorithms which the machine builds. In some cases, the machine is trained on a data-set where the solutions to the problem are provided. The machine elicits the patterns which result in different solutions and comes up with heuristics that it can then employ on real data. The machine can continuously update its algorithm based on a feedback system and is expected to get better at solving problems as it consumes more data, building better internal models of the relationship between features of the available information and the outcomes. With suitable programming and training, computers can be made to recognize patterns, structures and relationships which are often too delicate or obscure for human recognition, and subsequently employ algorithms using these recognized entities that are too complex or involved for human cognition. The mathematical foundation and the algorithmic expansion of the field has been astonishing in recent times leading to several unprecedented demonstrations of the power of the methodology: from IBM’s Watson answering questions on the TV show “Jeopardy!” and subsequently employing its architecture to make early cancer diagnoses, to Google’s AlphaGo beating the reigning champion in three games and the expansion of its deep learning architecture Deep Mind to power image recognition, translations and natural language processing.