Thursday, January 31, 2008

This idea has been floating around my head since about 1999: Wouldn't it be cool if techniques
used in evolutionary computation were applied to an inference engine?

Yes, ten years: An embarrassingly long time to have an idea incubate. But as I've wandered through the valley of AI and computer science I've slowly picked up the pieces to accomplish this project. I think I'm finally ready to get it done.

From my first experience with inference engines I thought that evolution could be applied to them. It seemed to me that, given the existence of genetic programming, which could be used to evolve general purpose computation trees, a similar technique could be used to evolve sets of inferencing rules. Soon I realized that focusing on the rules was the wrong approach, and it would be better to evolve the structure of the RETE used to optimize their execution. The method to do this eluded me, though.

Then, in 2002 I attended the GECCO conference in NYC. There I discovered Ken Stanley's technique for evolving neural networks, NEAT. It was immediately apparent to me that if NEAT could be used to evolve one kind of network, it could be used to evolve any kind. Thus began my years long quest to procrastinate and do very little to develop the idea. :)

In 2004 I started a sourceforge project, REAT, as a public repository for code related to the effort. After a flurry of activity I haven't been able to contribute to it until recently.

No comments: