NEAT[1][2] (NeuroEvolution of Augmenting Topologies) ist der Prozess der Evolution neuronaler Netze mit Hilfe von genetischen Algorithmen (Kreuzung, Mutation, Fitnessberechnung etc.).
Das Prinzip ist so einfach wie genial. Man gibt ein Problem vor, lässt darauf mehrere Neuronale Netze zufällig wachsen, die der Lösung nahe kommen. Die besten der Netze werden nun miteinander gekreuzt, einzelne davon zufällig mutiert und anschließend die Resultate wieder bewertet. Nach mehreren Generationen bekommt man dann ein auf dieses Problem zugeschnittenes Neuronales Netz.
Es muss nicht das allerbeste Netz sein, welches jemals möglich wäre, es kann sogar passieren, dass man nur ein so genanntes "lokales Optimum" erhält. Das eigentlich schwierigste ist aber wie man das eigentliche Problem den Netzen zugänglich macht (wie man es "beschreibt") und wie man die Ergebnisse letztendlich bewertet (welches ist am fitesten und überlebt die Generation, d.h. welches liegt der konkreten Lösung am nächsten).
Worauf ich aber eigentlich hinaus wollte nennt sich GeneticArt[3]. GeneticArt ist eine Form von Kunst, die durch die Interaktion zwischen dem NEAT Prinzip und einem Menschen entsteht. Wie funktioniert das? Anstatt wie oben geschrieben eine konkrete Lösung für die Neuronalen Netzen festzulegen (was ja oft nicht einfach ist, besonders weil man es oft selbst nicht so richtig weiss) greift man in jedem x-ten Generationsschritt ein und wählt rein subjektiv das Ergebnis, bei dem man denk es liegt der Lösung am nächsten. Ganz nach dem Motto "Jetzt nach mal irgendwas, ich sag dir dann schon noch ob's mir gefällt oder nicht.
Ein sehr schönes anschauliches Beispiel dafür ist die "Evolution of a spaceship"[4]. Das Programm basiert auf Delphi.NEAT, einer delphi basierten NEAT Implementation. Übrigens, es gibt auch eine in c# programmierte NEAT Umsetzung, genannt sharpNEAT[5].
Ich bin jedenfalls gespannt, was es in Zukunft alles für NEAT basierende Lösungen geben wird, da man das Prinzip ja nicht nur für Grafikgenerierung benutzen kann. Und wer weiß, vielleicht wird sich ja dadurch auch die heutige Art der Programmierung grundlegend ändern. Bei der NEAT basierenden Programmierung kümmert sich der Programmierer dann eben nicht mehr um die sprachspezifische Syntax, sauber dokumentierten Code oder die zu nutzenden Architekturen, sondern nur noch um das eigentliche Problem, wie beschreibt man es und was erwartet man. Lediglich um das UnitTesting (vermutlich dann BrainTesting genannt) wird man nicht herum kommen 
[1] NEAT UserPage http://www.cs.utexas.edu/users/kstanley/neat.html
[2] Dr. Kenneth O. Stanley, dem "Erfinder" von NEAT http://www.cs.utexas.edu/users/kstanley/
[3] Genetic Art http://www.cambrianlabs.com/mattias/GeneticArt/
[4] The Evolution of a Spaceship http://www.cs.utexas.edu/users/kstanley/rocket.html
[5] sharpNEAT http://sharpneat.sourceforge.net//