Hallo
Unser Gastbeitrag diese Woche ist Stephanie Forrest.
Sie ist Professor für Computerwissenschaften
an der Universität von New Mexiko,
wo sie die das Adaptive Computation Labor leitet
Stephanie ist darüberhinaus
externe Professorin am Santa Fe Institut
und Mit-Vorsitzende des Wissenschaftsausschussess des Instituts
Steph hat für viele Jahre an der Schnittstelle
von Computerwissenschaften und Biologie gearbeitet,
und sie ist Experte von Genetischen Algorithmen -
die wir in dieser Lektion studiert haben.
Willkommen, Steph!
Vielen Dank. Es ist grossartig hier zu sein.
Ich weiss dass du dich mit Genetischen Algorithmen
seit langer Zeit beschäftigst
wir haben sogar mal zusammen
an Projekten mit Genetischen Algorithmen gearbeitet
Aber ich wöllte gern deine Meinung hören,
warum Genetische Algorithmen für das Studium komplexer Systeme von Relevanz sind
Zum einen,
Genetische Algorithmen können als ein einfaches Modell
Darwin'scher Evolution betrachtet werden.
Aus einer Modellperspektive betrachtet,
erfassen sie einen der wichtigsten und mysteriösesten Prozesse auf der Welt:
Evolution
Zum anderen,
kann das Modell der Darwin'schen Evolution
auch als eine Art von Design-Strategie betrachtet werden.
Es ist eine Design-Strategie, die umfassend in der Natur verwendet wurde,
aber genauso auch als rechnergestützter Algorithmus eingesetzt wurde,
um sich entwickelnde Systeme mit konzipieren zu helfen
Genetische Algorithmen wurden demnach auch umfassend in der Entwicklung eingesetzt.
Daran anknüpfend,
Warum sagst du, dass die Evolution mysteriös ist?
Nun ja, zum einen, man kann nicht draufschauen.
Es ist ein Prozess der auf Darwin zurück geht
Es war beabsichtigt als eine Erklärung
wie die Welt, in der wir leben
entstanden ist.
Aber das ist kein Prozess den wir beobachten können
bzw., es ist sehr schwierig
diesen experimentell zu studieren.
Es gibt jetzt einige experimentelle Systeme, die man im Reagenzglas studieren kann,
wie Viren, Bakterien - die der Evolution ausgesetzt sind.
Und diese kann man experimentell studieren.
Aber ich glaube,
wenn wir uns unser Umfeld näher betrachten
ist es schon ein Mysterium (für mich), wie die Welt entstanden ist,
und wie sogar - auch wenn ich dazu tendiere zu glauben dass die Welt durch Evolution entstanden ist -
ist es nicht so trivial zu verstehen, wie das alles mechanisch geschehen ist.
Und ein anderer Punkt ist,
ein weiterer mysteriöser Aspekt der Evolution
sind die sogenannten Hauptwechsel (major transitions),
bei denen das sich entwickelnde System einigen bedeutenden organisatorischen Veränderungen ausgesetzt ist
und wo der evolutorische Akt auf einer anderen organisatorischen Ebene stattfindet
Und ich glaube, dass sogar heute, die meisten Menschen in der Evolution
nicht behaupten würden sagen zu können, wie diese Veränderungen stattfinden.
Du sagtest, dass Genetische Algorithmen Modelle für Evolution sind.
Glaubst du, dass sie es vermögen uns irgendwelche Einsichten zu vermitteln
in die biologische Evolution?
Das denke ich, ja.
Wie, so magst du fragen.
Sie sind dazu verwendet worden, viele Arten von
natürlich auftretenden, evolutionären Prozessen
zu modellieren.
- und im Übrigen: nicht nur biologischen -
auf dem Gebiet der Sozialwissenschaften wurden die Genetischen Algorithmen in Modellen verwendet,
wie Innovation sich in einer Gemeinschaft verbreitet.
Leute haben Bücher über die Ausbreitung von Innovationen geschrieben.
Und der Gedanke darin ist geknüpft daran, dass Ideen und Modeerscheinungen
sich in der Population verbreiten durch einen Prozess,
der der Darwin'schen Evolution nicht unähnlich ist.
So, glaubst du dass die Darwin'sche Evolution eine nützliche Idee ist
- nicht nur in Biologie sondern auch in anderen Bereichen?
Absolut. Absolut.
Ich würde nicht behaupten es wäre die einzigste Idee.
Aber ich denke es ist eine wichtige Idee.
Und ganz sicher relevant für das Studium komplexer Systeme.
An was arbeitest du aktuell? Was reizt dich am meisten, speziell auf dem Gebiet der Genetischen Algorithmen?
Vor ungefähr 10 Jahren fing ich an mich für mein Gebiet zu interessieren.
Ich meine, ich war immer an meinem eigenen Gebiet interessiert.
Aber ich fing besonders an mich für das Gebiet der Software zu interessieren.
Darüber nachzudenken, wie
Software-Infrastruktur, also grosse Sammlungen von Software
zum Beispiel, all die Programme die sich auf Computer-Datenträgern befinden, welche mit dem Internet verbunden sind
Wie diese grosse Ansammlung sich im Laufe der Zeit verändert,
und ob diese Gegenstand evolutorischer Prozesse sind.
Und dadurch wuchs mein Interesse daran
ob es möglich wäre, Software evolutorisch zu entwickeln
zum Beispiel, könnten wir ein Programm konzipieren anstatt einen hoch-trainierten
Programmierer anzustellen, der das Programm schriebe.
Könnten wir nicht evolutionäre Prozesse nutzen, um Programme zu erstellen?
Und obwohl ich nicht behaupten könnte,
dass ich jetzt genau dieses Problem gelöst habe
führte mich dies zu einem potentiell leichteren Problem
welches Evolution nutzt um Reparaturen an Softwarefehlern oder Bugs voranzutreiben
Die Idee dabei ist,
dass ich mir ein fehlerhaftes Programm vornehme
und ich mache eine Anzahl von Kopien
vielleicht so um die vierzig,
und jede dieser Kopien hat einige zufällige Mutationen
- nicht unähnlich den genetischen Mutationen -
und dann verwenden wir einen Genetischen Algorithmus um
die Mitglieder der Population zu selektieren,
die am fittesten sind.
In unserem Falle würde Fitness gemessen werden am Fortschritt der Testläufe.
Und nach einigen Generationen
würde Evolution - unmysteriös - ein Programm erschaffen,
welches in vielen Fällen den Softwarefehler repariert hat.
Das ist beeindruckend.
Machst du Programmer damit arbeitslos?
Hm. Potentiell ja.
Ich denke jedoch das Software
ein riesiger Flaschenhals ist.
Und auch Software-Pflege ist ein riesiger Flaschenhals.
Wenn wir uns die Ökonomie der Informatik anschauen, und wofür das Geld ausgegeben wird ...
90 Prozent der Softwarekosten fliesst in die Wartung.
Und das meiste davon ist Debugging
- das Ausbessern von identifizierten Softwarefehlern.
Eine Studie, die jetzt ein paar Jahre alt ist,
schätzte dass die Kosten von Softwarefehlern
auf 0.6 Prozent des US-Bruttoinlandsprodukts.
Und das ist ein signifikanter ökonomischer Einfluss.
Wir werden sicherlich nicht alle Programmierer arbeitslos machen
aber wir können sehr wohl ihre Produktivität erhöhen
dadurch dass wir entweder Korrekturen vorschlagen
und sie können das nachprüfen und entscheiden, ob sie das so akzeptieren wollen,
oder wir übernehmen die mühsamen Tests und korrigieren kleine Fehler.
Und überlassen es den Programmieren die interessanteren und komplexeren Fehler zu korrigieren.
Ich schätze das wäre ein akzeptables Resultat.
Wie weit ist dies von einem kommerziellen Produkt entfernt?
Ziemlich weit.
Wir haben darüber nachgedacht, aber bisher sind wir die Open-Source-Public-Domain-Route gegangen
Alle unserer Programme sind verfügbar
auf unserer Webseite.
Ich sollte erwähnen,
dass ich diese Arbeit nicht allein tue.
Ich mache sie in Zusammenarbeit mit einem Professor der Universität von Virginia,
der deutlich mehr von Softwareentwicklung und Programmiersprachen versteht, als ich es tue
Sein Name ist Westley Weimer.
Und wir beide haben uns gegenseitig überrascht,
wie gut dieses Projekt gediehen ist.
Kürzlich haben wir eine grosse Studie von über 150 Softwarefehlern fertiggestellt
Welche zufällig ausgewählt waren.
Und wir haben ziemlich verlässlich mehr als 50 Prozent korrigieren können.
Beim ersten Versuch.
Wow. Das ist wirklich beeindruckend.
Danke.
Das ist besser als die meisten Menschen tun könnten.
Besser als ich es könnte, an diesem Punkt. - Es ist ein bisschen peinlich das zuzugeben.
Du brauchst es ja auch nicht, wenn du deinen Genetischen Algorithmus hast, der das tun kann.
Wie wir verwenden es und wie wir es in die Mainstream-Informatik einbringen werden
ist noch immer eine offene Frage für uns.
Du erwähntest die Idee von Genetischen Algorithmen,
die automatisch Programme erstellen und nicht nur
deren Fehler korrigieren.
Es gibt da dieses grossen Bereich, Genetisches Programmieren, welcher versucht dieses Thema zu adressieren.
Wie schwierig, glaubst du, ist solch ein Problem?
Wir haben im Unterricht uns dazu ein Beispiel angeschaut
ein einfaches Programm erstellend, einen Roboter auf dem Monitor herumzubewegen,
verschiedene Aktionen ausführend.
Die Frage ist, wie schwierig ist es dies mit komplexen Programmieren gleichzusetzen?
Glaubst du das dies passieren könnte?
Ich glaube nicht, dass dies auf die Schnelle passieren wird.
Und in der Tat würde ich sagen, dass das Problem
dass das Genetische Programmieren anspricht,
bezieht sich auf das Problem des 'Bei-Null-Anfangens'
Die Gründe dass wir in der Lage waren so erfolgreich zu sein wie wir waren
in der Domäne der Fehlerkorrekturen
war dass wir mit einem Programm angefangen haben,
welches zu 99.999 Prozent korrekt war.
Es war in jeder Hinsicht korrekt,
ausser eines einzigen Fehlers.
Wir haben lediglich versucht diesen einen Fehler zu korrigieren.
Beim Genetischen Programmieren fangen die Leute am anderen Ende an.
Und ich weiss nicht, welches Ende langfristig besser abschneiden wird.
Meine Theorie wäre es,
zu nehmen was wir geleistet haben
mit funktionierenden oder teilweise funktionierenden Programmen
und damit nach vorne zu schauen und
darüber nachzudenken, wie man zu einem bereits funktionierenden oder teil-funktionierenden
Programm noch Funktionalität hinzufügen kann.
Vielleicht ist das der Unterschied zwischen Evolution und dem Ursprung des Lebens.
Ich weiss es nicht.
In Ordnung.
Vielen herzlichen Dank.
Das war wirklich grossartig.
Gerne geschehen. Es hat Spass gemacht.
Und komplexe Systeme sind etwas wunderbares.
Okay. Danke.