Our Computers Are Learning How to Code Themselves
Human coders beware.
On the Hunt for Code
Those of you who followed the first season of HBO’s “Westworld” know that one of the things that made an artificially intelligent (AI) host in the show truly intelligent, so to speak, was the ability to write its own code. It’s a form of reasoning with itself — something that current AI technology is still far from capable of doing. One company is trying to close that gap via deep learning algorithms that use probabilistic programming, and now, researchers from Microsoft and the University of Cambridge are bringing us closer to self-coding AI with a system they call DeepCoder.
DeepCoder is a machine learning system that can write its own code. It does this using a technique called program synthesis. Essentially, it creates new programs by combining existing lines of code taken from other software, which is what human coders do. With a particular output in mind, DeepCoder was able to determine which lines or pieces of code would be particularly useful.
“The approach is to train a neural network to predict properties of the program that generated the outputs from the inputs. We use the neural network’s predictions to augment search techniques from the programming languages community, including enumerative search and an SMT-based solver,” writes the research team, which is led by Alexander Gaunt from Microsoft Research and Matej Balog from Cambridge. Their study is currently being reviewed for the 5th International Conference on Learning Representations (ICLR 2017) this coming April.
Coding for Everyone
DeepCoder successfully plowed through the basic, input-output style challenges usually set by programming competitions. It was able to search through lines of code more thoroughly and widely than a human coder could, piecing together code in a manner humans might not think of and more quickly. And because DeepCoder is essentially a deep learning algorithm, every time it’s given a new problem, it gets better at combining lines from source codes.
Ultimately, this algorithm can make programming accessible to non-coders, allowing anyone to easily build simple programs. Researcher Marc Brockschmidt, one of DeepCoder’s creators from Microsoft Research in Cambridge, UK, believes that their approach would make it possible for non-coders to just describe a program and leave the system to build it. “All of a sudden, people could be so much more productive,” Massachusetts Institute of Technology (MIT) associate professor Armando Solar-Lezama, who wasn’t part of the research, told New Scientist. “They could build systems that it [would be] impossible to build before.”
DeepCoder’s current version only allows it to handle programming challenges with around five lines of code. Brockschmidt said that future versions of DeepCode could facilitate building routine programs that do information scraping from websites without the need for human coders. “The potential for automation that this kind of technology offers could really signify an enormous [reduction] in the amount of effort it takes to develop code,” Solar-Lezama said. No need for programmers to start updating their resumes, though, as this tech wouldn’t replace humans. Instead, DeepCoder could handle the more tedious parts of programming, while human coders could focus on more sophisticated work.