Magazine

Biomorph et les algorithmes génétiques

Publié le 17 janvier 2010 par Serdj
Le zoologiste Richard Dawkins est le premier à avoir eu l’idée que le processus d’évolution génétique, qui a produit toutes les formes vivantes existantes, peut être appliqué à d’autres domaines que la biologie.
Pour le démontrer, il a entrepris d’écrire un programme, biomorph, qui simule l’évolution d’un être vivant dont on voir la morphologie varier sur l’écran au fur et a mesure des générations.
Pour l’utilisateur, biomorph est un programme très simple : l’écran est divisé en neuf zones carrées, présentant chacune une image (au départ, un simple trait vertical). La zone centrale présente l’état courant de « l’animal » représenté, et les huit carrés autour d’elle montrent autant de variations possibles. L’utilisateur clique alors simplement sur la variation qu’il préfère, celle-ci vient alors s’installer au milieu et le programme fabrique alors huit nouvelles variations de la forme sélectionnée. Et ainsi de suite...
 Biomorph et les algorithmes génétiques
Le programme « biomorph » de Richard Dawkins
Dans son livre, L’horloger aveugle, Dawkins affirme que lorsqu’il fit tourner biomorph pour la première fois, il ne savait pas du tout à quoi il devait s’attendre. Il pensait qu’au bout de quelques dizaines de clics il allait arriver à faire dessiner quelques figures géométriques par l’ordinateur. Mais les formes fabriquées par le programme devenaient de plus en plus complexes au fur et à mesure des clics, et, se souvient-il, il ne tarda pas à se demander si des insectes allaient apparaître... et ce fut le cas quelques dizaines de clics plus tard ! Richard Dawkins se sentit alors dans la peau d’un Dieu, maîtrisant l’évolution de ses créatures.
Biomorph et les algorithmes génétiquesDe manière interne, dans le programme, les « biomorphs » sont décrits par un petit ensemble de chiffres, que l’on appelle les gènes. L’un d’eux dira combien il y a de traits, l’autre quelle est leur longueur moyenne, un autre gèrera les angles entre les traits, etc. Le programme contient donc une routine qui affiche l’image d’un biomorph à partir de son génome. Mais la partie la plus intéressante réside dans la manière de faire évoluer ces gènes. Dawkins a voulu que son programme simule l’évolution biologique, et c’est pourquoi on y trouve l’idée de mutation, qui dans ce cas consiste simplement à modifier la valeur numérique d’un gène, et aussi l’idée de recombinaison, qui consiste à prendre des gènes de deux organismes différents et à les mélanger, la créature « fille » héritant ainsi une moitié de ses gènes de chacun de ses  deux « parents ».
 
Il est très intéressant de noter que les mutations seules ne conduisent pas à des créatures intéressantes, ou alors bien trop lentement, et que la recombinaison est absolument nécessaire, comme dans le monde biologique.
L’idée de modifier des formes en faisant des choix qui modifient des gènes qui codent en retour pour ces formes a fait son petit bonhomme de chemin depuis, et l’on ne compte plus les applications, notamment dans le domaine des arts plastiques, où l’idée de « dessiner ou peindre sans crayon, en cherchant simplement à se rapprocher de ce qu’on souhaite », est évidemment très séduisante. De même les mathématiciens se sont emparés de l’idée, pour chercher à approximer au mieux des fonctions compliquées, et les programmeurs de jeux ont fait des merveilles comme les sims.
Mais c’est dans le domaine de la programmation que l’idée d’algorithme génétique s’est avérée la plus féconde. Un programme d’ordinateur, après tout, ce n’est qu’un texte formé d’une suite de « phrases » dont les types sont très limités (séquence, boucle, test, saut, etc), et il est relativement facile de le coder sous forme de « gènes ». Un algorithme génétique, c’est donc un algorithme que l’on fait évoluer en modifiant ses gènes, soit par mutation, soit par recombinaison avec ceux d’un autre algorithme. Pour peu que l’on connaisse le résultat à atteindre, et qu’on sache mesurer l’écart entre ce résultat et celui produit par l’algorithme en cours d’évolution, on peut sélectionner automatiquement l’algorithme (mutant ou recombiné) qui se rapproche le plus du résultat souhaité, et recommencer.
On modélise ainsi un système formé d’une « soupe » d’algorithmes en cours d’évolution, chacun différent de ses voisins ; le système prend à chaque étape le meilleur (ou l’un des meilleurs), le fait muter, et les mutants remplacent les moins bons, qui sont supprimés.
Cette approche donne des résultats spectaculaires, à condition que la différence avec le résultat souhaité puisse être mesurée, que  cet écart soit une fonction raisonnablement  « lisse », et surtout que la représentation par des gènes du « phénotype » que constitue le résultat cherché soit « bonne ». Car bien sur il faut bien choisir les caractéristiques qui seront codées par les gènes, et comment ces gènes les coderont. Et le choix d’une bonne représentation est tout un art...
Nous aurions peut-être besoin d’heuristiques, d’astuces pour guider nos choix ? C’est ici qu’intervient Douglas Lenat, le « pape de l’heuristique » !


NB: cette page est extraite de mon livre "L'esprit, l'IA et la SIngularité".

La suite>: AM, l'ordinateur qui est un mathématicien amateur
Partagez / votez pour cette page :
http://www.wikio.fr PUBLIER CETTE PAGE OU VOTER POUR CET ARTICLE SUR DIGG-FRANCE.COM

Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

A propos de l’auteur


Serdj 10173 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte