Josh Bongard, Morphology, Evolution & Cognition Laboratory, Associate Professor, Department of Computer Science, University of Vermont
My research interests can be broken down into two broad questions:
"How can we automatically design a robot with little human intervention?"
Imagine a robot-making machine is sent to Mars, and settles on Meridiani Planum. The machine detects that the ground is littered with boulders between 10 centimeters and 1 meter high. Should the machine build a robot with wheels or legs? If the robot should be able to not only observe its surrounding, but also manipulate objects (like drilling into rocks), how many manipulators should it have? What should the manipulators look like? Determining what the most appropriate kind of robot is for a particular task is tricky.
My PhD research was concerned with using evolutionary computation -- a computational search process -- to repeatedly test out different robot designs in a virtual environment. The computer observes the relative performance of these virtual robots, and throws away the bad designs, and makes slight changes (mutations) to the better designs. The computer repeats this process thousands of times, and if it's lucky, produces a robot design that is well suited to its particular task. More specifically, my research focussed on improving this computerized evolutionary process in order to produce better robots: I implemented a system, called Artificial Ontogeny, that 'grows' a virtual egg into a fully formed virtual adult robot. The adult robot is then evaluated against the task.
This approach then combines biological growth with biological evolution; an individual robot can learn and adapt to its virtual surroundings over its lifetime, while the robot population evolves over generations similar to how organisms grow and adapt to their surroundings, while species adapt over evolutionary time. (New Scientist article about my work.)
"How can we automatically create a model of a physical system?"
Consider the following exchange:
Q1: "Is it classified as a vegetable, animal, other or unknown?" A1: "Other"
Q2: "Does it usually have four corners?" A2: "No"
Q3: "Does it have cash value?" A3: "No"
Q4: "Does it move?" A4: "Yes"
Q5: "Does it grow over time?" A5: "Sometimes"
Q6: "Is it warm blooded?" A6: "No"
Q7: "Can you find it in a house?" A7: "No"
Q8: "Is it located in space?" A8: "No"
Q9: "Can you play with it?" A9: "No"
Q10: "Is it useful?" A10: "Sometimes"
Q11: "Is it tall?" A11: "Sometimes"
Q12: "Is it white?" A12: "Yes"
Q13: "Can it bend without breaking?" A13: "Unknown"
Q14: "Is it shiny?" A14: "No"
Q15: "Is it annoying?" A15: "No"
Q16: "Is it a specific color?" A16: "Yes"
Q17: "Do you love it?" A17: "No"
Q18: "Are you thinking of a cloud?" A18: "Yes"
(Courtesy of 20Q.net)
How did the questioner figure out that the answerer was thinking of a cloud? The answerer in this case was a human; the questioner was a computer program. The ability of the program to guess what the person was thinking of lies in the ability to ask the right questions.
My second line of research is developing software that can 'ask the right questions' of physical systems like walking robots, biological organisms and manmade structures. In other words, we are developing software that generates useful experiments that, when carried out on the target system, reveal hidden, internal information about that system. The algorithm we are developing to perform this intelligent questioning is called the Estimation-Exploration Algorithm, or EEA.
Consider an example. In one application, we are trying to unravel gene regulation pathways in bacteria. We know how many genes a bacteria like Eschericia coli has, but we don't know how the genes influence each others behavior. We can, however, gain indirect information about how genes influence each other by presenting the bacteria with particular stimuli, like presenting them with a large amount of nutrients, and then recording how the protein levels in the bacteria changes over time as they digest the nutrients. These protein changes can then help us to construct a model of which genes influence which other genes.
So by performing intelligent tests on a physical system, we can accomplish two things: we can build a model of the physical system (automated inference), and, by using that model, get the physical system to perform desired behavior (automated synthesis), such as getting a robot to carry out some desired task. We are currently applying this algorithm to a number of problem domains, and extending the algorithm so that can infer the structure of, or synthesize behaviors for, increasingly complex systems.