A new AI algorithm learns to draw letters from a single example. The researchers tried to make a more human inspired approach, compared with neural networks, that treats concepts as models of the world. The algorithm makes simple models of the world and then learning becomes a process of explaining the data by model building. They call their algorithm “Bayesian Program Learning,” and here, concepts are represented as simple programs, where “program” is used in the standard way, meaning computer code, that a programmer would write. To give an example, the letter “a,” is represented by code, when you run it, generates new examples of the letter “a”. And it does so with a set of virtual pen strokes that are a bit like how people would draw an “a”. The program doesn’t have to be coded by a person — the algorithm programs itself — that’s the “machine learning” part. It searches for code that could plausibly generate the data, and is probabilistic, so it can handle noise.
To test the algorithm, they had it compete in a “visual Turing Test”, where they asked people and the algorithm to perform exactly the same task, and then we asked judges — human judges — to try to identify which is the machine, and which is the person. They looked at this for several different tasks, including generating new examples of a concept. For instance, you get a new letter from the Tibetan alphabet, and you need to generate new examples of that particular letter. And also generating whole new concepts, where we showed the algorithm and people a set of letters from the tibetan alphabet and asked them to quickly produce a new letter that looks like it may belong to that alphabet. And in most cases in these visual Turing Tests, the judges had difficulty distinguishing whether the behavior was from people or whether the behavior was from the algorithm.