Relevant Paper(s):
Abstract:
How can we best make systems which learn to write computer
programs? Here I explore the idea that we should take insight
from the techniques and tools that human coders use when building
software, but that we should combine those insights with machine
learning methods. I focus on two basic coding techniques: writing
libraries, and using interpreters ("REPLs"). For libraries, I
present a system called DreamCoder, which grows a library of
reusable subroutines as it solves a range of programming
problems. DreamCoder's architecture builds on the structure of
wake-sleep neural network training algorithms, and combines both
symbolic and neural learning. For interpreters, I present a
system which learns to interact with a REPL while it writes code,
showing that this can help mitigate the combinatorial search
difficulties of program synthesis. At the end of the talk, I will
present preliminary results on modeling another aspect of coding:
creating challenging and interesting programming problems.
Bio: Kevin Ellis works in artificial intelligence and programming languages. He is an assistant professor of computer science at Cornell University, and was previously a research scientist at Common Sense Machines. He did his PhD at MIT in cognitive science.