Sunday, May 27, 2012

Complexity and robotics, what a concept.

I came across a remarkable quote that sums up my a key feeling about the complexity of robotic design:

"it is not possible to say anything definitive or profound about a complex system without an appropriately complex proof"- David E. Goldberg, The design of innovation

I work in legged locomotion. Too often I have been irked by theoreticians claiming that they have found the perfect "proof" of global stability in a walking system. By global stability, one means that if there is a perturbation to the walking robot, of sufficiently small magnitude, the robot will continue walking unperturbed. Don't get me wrong. This is nice to know, but it is not everything.

Humans do remarkable things related to locomotion. They dance, they run for a touch down dogging opponents who seem to be several times their mass. They walk up stairs, crawl on their stomachs.... Somehow, the balance systems that we have for walking is readily adapted to skiiing, snowboarding and surfing.   How weird is that?

My point is that if we are going to build a truly functional humanoid, we will never be able to prove that a robotic system will work. The pursuit of a proof may be a red herring in the design of complex robotic systems.

As I write this, I am also reminded by a quip Michael Arbib once made "it may turn out that the brain is just a big hack." I was horrified when I first heard this (as with many of Prof Arbib's quips, they seem to become more true over time, however).

As I work more and more in the cross disciplinary world of robots and neurocomputation I am beginning to think that more theorem proving is NOT what we need. Rather we need better design tools.

We need to be give a robotic system a high level requirement, and have it find a solution on its own. We can test the solution for competence the same way we test, say, a potential surgeon for competence. How? By an exam in Medicine?

No. Testing begins in kindergarten for human beings. To make it to medical school, you have to prove through years of observation that you are reliable, and consistent, and have some baseline talent. At any stage from k-through medical school to your residency, your careers as a surgeon can be derailed for something as small as not being able to sit still through a lecture...

When you are under the surgeons knife, there is no guarantee that the surgeon won't slice out your liver and eat it. There is no mathematical proof available that proves the surgery will be successful and your liver intact when you leave the hospital.

We infer it. And inference is not proof in physical systems.

Likewise, if we are to build complex robots, we have to get away from the worship of theorem proving. What is the alternative?

We need to think rather: What are a set of competence gates that we can setup to assess if a robot is making progress toward fulfilling our requirements.   Second, we need to have a way of automatically trying new variations of robots. I say automatically because today we use the human brain for innovation. However, our minds will always be limited by the models we hold in our heads of the systems we try to control. Inevitably, these models are wrong. We need powerful, automatic (read learning) methods that can innovate automatically.

If we spend more time in developing these tools we will accelerate our progress toward designing truly capable, robotic assistants.

And at the end of the day, I am convinced that it will be, as Prof Arbib remarked, one big hack.