Tuesday, July 22, 2008

Visualizing high-dimensional fitness landscapes

I've recently been exploring various ways of improving my intuitive understanding of fitness landscapes. This is a difficult problem, because the parameter spaces I want to be able to think about are often composed of dozens or even hundreds of dimensions. I have found that most authors describing fitness landscapes do so using overly simplified diagrams that somewhat resemble hills or mountain ranges.

In some recent experiments, I've found some nice ways of visualizing the geometry of actual fitness landscapes. I produced the images below by evolving recurrent neural networks to optimize performance on various tasks (e.g. wandering through a virtual maze), and then examining the resulting fitness values of a large number of very nearby points to those evolved solutions. Of course it is impossible to visualize the entire space, because of the high dimensionality; so instead what we are looking at are randomly selected 2D slices through that space. The shading is representative of numeric fitness (dark = low-fitness, light = high-fitness).

Here are a few examples of the results:

Ian said...

Looks like you've got some pretty nasty hamming cliffs there. Interesting approach, I'll have to look into that, as it might throw up some interesting issues.

I've been looking at doing a similar thing but in 3/4D, with volumes (or animated volumes), to analyse the fitness space. Might be worth looking into if you found these useful.

- said...

These visualizations are beautiful and also very counter-intuitive. You are right that the landscapes are usually imagined to be much more simplistic and regular. You have a lot of very interesting projects on this blog!

Anonymous said...

This is quite enlightening! I'd like to know what problem generated the first picture, the one that looks like a "crinkled paper" texture?

Thomas said...

@Anonymous: I believe that the "wrinkled paper" one was for a task where an agent (controlled by an RNN) moved through a randomly generated landscape composed of blocks and food-pellets. It got a reward of -1 each time it bumped into a wall, and +1 for each food pellet it ate (which happened by moving over it.) Fitness was summed up over 50 time steps of interaction with the maze. I generally used RNNs with 5 or less neurons in the hidden layer. Glad you found the pictures interesting!