Can there be an algorithm for creativity?

Artificial Intelligence has always been one of the most fascinating aspects of computer science. With devices getting smaller, the cloud more ubiquitous, and processors becoming more powerful, we are starting to find ourselves in the beginning of an era where machines will get progressively smarter. Apple’s Siri, Google Now, and Microsoft’s Cortana are but some examples of teething intelligent assistants that we all hope will one day become sentient, autonomous and (hopefully) friendly sidekicks that make our life easier.

The creation of software such as this has been made easier with the development of what is today called Deep Learning – an advancement in the field of machine learning where sophisticated neural networks are being trained with more and more data to learn behaviors, recognize images, understand speech and respond in natural language to domain specific queries. How these systems work is pretty simple to understand.

Consider the task of understanding and recognizing the contents of an oil painting which portrays a woman standing in a park. The intelligent system could start by analyzing the smallest possible chunks of the painting – which are called features – in this case, a series of dots of paint, organized by color. It might then do a second pass to recognize higher dimension features, and try to determine interconnections between these dots to determine which ones constitute a line. The third pass might analyze the contours of the known lines, and determine shapes – circles, squares, and other irregular ones. If the system has been trained to map a known set of shapes to real life objects, it may be able to in the next pass perceive an eye, a nose, a tree and other objects that make up the painting. And lastly, it may put these things together to understand that two eyes and a nose make up a human – so this must be one, and that trees with grass and butterflies are generally found in a park, so this must be a park.

And so it goes, from being able to detect the contents of a painting to figuring out which videos on Youtube have cats in them.

But a missing component of real intelligence is creativity, one definition of which is the ability to come up with unique and novel explanations for events and occurrences that can not always be explained by observing the past. As David Deutsch writes in his excellent piece on AI in Aeon magazine,

I myself remember, for example, observing on thousands of consecutive occasions that on calendars the first two digits of the year were ‘19’. I never observed a single exception until, one day, they started being ‘20’. Not only was I not surprised, I fully expected that there would be an interval of 17,000 years until the next such ‘19’, a period that neither I nor any other human being had previously experienced even once … How could I have ‘extrapolated’ that there would be such a sharp departure from an unbroken pattern of experiences, and that a never-yet-observed process (the 17,000-year interval) would follow?

All of the programs that have been written so far have had the ability to compute of course. Increasingly, they have even had the ability to know – to store knowledge and intelligently answer questions about things. But none of them, so far, have been able to want. What then would it mean for a program to not go as far as to be called sentient or alive, but be merely creative?

One way to answer that would be to define creativity as the process of finding relationships between facts from different branches of knowledge. As these facts become more and more removed from each other, the larger is the impact of such a connection being made. While we may want much of this relationship-creation to happen in some orderly fashion, the reality is that most of this happens in a very serendipiteous manner. Is it then possible to simulate this accidental fact correlation in a program?

If we analyze a deep learning program trying to identify features for a given task, we will see that its probabilistic nature means it is bound to commit mistakes. There will be times when it throws up a false positive – identifying an object as something that it is not. Most times, the evaluator will mark this as a “negative example”, in order to make sure that this particular mistake is not repeated the next time a similar case is seen.

But what if this is how a machine makes a mistake? After all, this is no different from an artist making an errant daub of paint on their canvas and realizing that it actually fits in well in a way they never imagined before. Could we then train a system to take these mistakes and channel them into a positive feedback loop that improves the tasks this machine was doing, especially if it were creatively inclined like producing a piece of music, analyze some art, or even paint a piece of art?