Weasels, ReMine et le dilemme de Haldane

Poste du mois : septembre 1999

par Ian Musgrave

Sujet:    Dilemme de ReMine OU la taille compte
Newsgroups: talk.origins
Date:       17 septembre 1999
Message-ID: 37e2b35b.2590293@news.cavva.com.au

Bonjour à tous

(il s'agit de ma TROISIÈME tentative d'envoyer ceci, le reste a disparu dans l'éther, mais peut réapparaître après 3 semaines, comme un message précédent l'a fait)

Il y a eu quelques discussions sur les newsgroups talk.origins et sci.bio.evolution au cours de la dernière année environ au sujet des affirmations de Walter ReMine selon lesquelles une version du programme « weasel » de Dawkins, qui démontre l'efficacité de la sélection, démontre néanmoins une limite sérieuse du rythme d'évolution, en accord avec le dilemme de Haldane, un rythme si faible que M. ReMine affirme que cela rend les explications actuelles sur l'origine de l'homme (et d'autres vertébrés supérieurs) peu plausibles
(voici les http://x38.deja.com/getdoc.xp?AN=294263986 et http://x38.deja.com/getdoc.xp?AN=315954300).

Comme je l'ai écrit précédemment, je ne peux pas, pour la vie de moi, voir comment un programme « montreur de montres aveugle » de style Dawkins puisse reproduire le dilemme de Haldane, car le dilemme de Haldane suppose plusieurs gènes (généralement > 20 000), avec une proportion de ces gènes ayant plusieurs allèles (voir http://www.gate.net/~rwms/haldane1.html ou Natural Selection, George C Williams, 1992, Oxford University Press, chapitre 10). Comment un programme de sélection de style Dawkins, avec un seul « gène » et sans structure de population, pourrait montrer le dilemme de Haldane, n'est pas clair. De nombreuses autres personnes ont pensé de même, notamment Wesley Elsberry, qui a produit le programme Perl « weasel.pl » (voir http://www-personal.monash.edu.au/~ianm/whale.htm) pour explorer explicitement cette affirmation, et Robert Williams, dont le site j'ai cité plus haut.

Un problème est la difficulté de trouver des détails sur le programme, car sur les fora Internet, M. ReMine renvoie simplement les interpellateurs à son livre, The Biotic Message (http://www1.minn.net/~science), un volume autoédité relativement difficile à se procurer (par exemple voir http://x24.deja.com/getdoc.xp?AN=339410120).

Fort heureusement, Will Pratt de l'Université du Nevada a trouvé un exemplaire, et, par conséquent, Robert Williams a pu obtenir une copie du programme MONKEY (voir http://www-personal.monash.edu.au/~ianm/whale.htm), utilisé par ReMine. Comme je l'ai également signalé plus tôt, après l'avoir exécuté plusieurs fois et examiné le code, je n'ai trouvé aucun indice du dilemme de Haldane dans le programme. Qu'est-ce qui m'échappait ?

La réponse est en réalité éblouissante de simplicité, et constitue une honte pour M. ReMine. Voici des extraits pertinents de son livre.

<begin quotes>
p 235

« Cette méthode de mutation n'est pas fidèle à la nature [utilisée par Dawkins]. En nature, rien ne compte les mutations et n’assure exactement une mutation par progéniture. Un type de mutation plus réaliste devrait être utilisé dans la simulation afin que chaque lettre ait une probabilité de mutation. Supposons que nous utilisions cette méthode correcte de mutation tout en laissant le taux « moyen » inchangé (à 1 chance sur 28). Cette correction subtile de la simulation double presque le temps nécessaire pour faire évoluer la phrase cible : jusqu’à 86 générations. »

p 236

« Ensuite, nous réduisons le taux de reproduction à celui des vertébrés supérieurs, disons n = 6. Dans une espèce à reproduction sexuée, cela nécessiterait que les femelles produisent 12 descendants chacune. C'est extrêmement optimiste pour de nombreuses espèces. La simulation entre alors dans une catastrophe d'erreur et n'atteint pas la phrase cible. Nous pouvons éliminer la catastrophe d'erreur en abaissant le taux de mutation. »

« Ensuite, en explorant, nous pouvons trouver le taux de mutation qui produit la plus rapide évolution [note de bas de page : dans ce cas le taux de mutation optimal est une chance sur 56]. Avec ce taux de mutation optimal, en moyenne, la phrase cible est atteinte en 1663 générations — c’est-à-dire 62 générations par substitution. »

« Ainsi, la simulation — avec ses nombreuses hypothèses irréalistes qui favorisent l'évolution — est moins de cinq fois plus rapide que l'estimation de Haldane de 300 générations par substitution. Ironiquement, cela suggère que Haldane était trop optimiste quant à la vitesse de l'évolution. »
<end quotes>

Pouvez-vous voir où ReMine a commis son erreur ? J'ai en réalité perdu un petit nombre d'heures à comparer les effets des taux de mutation sur différents programmes avant de me rendre compte de cela, mais cela aurait dû être éblouissantement évident (donc je suis idiot, d'accord, mais j'attendais quelque chose de subtil).

Voici la ligne clé : « Ensuite, nous réduisons le taux de reproduction à celui des vertébrés supérieurs, disons à n = 6. »

Eh bien, abattez-moi avec un bâton de mortadelle et appelez-moi Jake. M. ReMine ne sait pas comment ces programmes fonctionnent ! Dans la vaste majorité des simulations weasel, y compris celle de Wise, le programme prend une chaîne, en fait x copies avec des mutations de lettres uniques sur une ou plusieurs copies, puis choisit la meilleure chaîne et en fait x copies avec des mutations, puis choisit la meilleure chaîne parmi ces copies, et en fait x copies ad infinitum jusqu’à ce que la chaîne cible soit atteinte. Dans beaucoup de ces programmes, la valeur x est une variable saisie par l’utilisateur appelée « nombre de descendants » ou une formulation similaire.

La chose importante à noter est que dans le programme de Wise, celui original de Dawkins, le weasel.pl de Wesley Elsberry et mon WEASEL4.BAS (voir sig), le « taux de reproduction », c’est-à-dire le nombre de descendants, EST AUSSI LA TAILLE DE POPULATION ! Bien sûr, vous n’observerez qu'un changement lent dans n'importe lequel de ces programmes quand vous n'avez que 5 descendants, car il n'existe qu'une population TOTALE de 5 chaînes à chaque instant ![1]

Bien sûr, dans le monde réel, la plupart des organismes ont des populations de plus de 5 individus :-). Tenter de comparer le taux de substitution dans une population de 5 individus à celui d'une population de 10 000 à 100 000 individus est une méprise assez grave, même en tenant compte des autres problèmes posés par la comparaison de ce programme avec une population réelle. L'information sur le nombre de « descendants » n'est pas cachée, elle est claire dans la description donnée par Dawkins et dans la documentation de David Wise.

L'argument de ReMine s'effondre complètement, sans même avoir à mentionner les autres problèmes évidents.

À votre santé ! Ian
[1] Réfléchissez : si vous faisiez vraiment comme M. ReMine pense que les chaînes sont reproduites, alors en quelques générations un nombre exponentiellement croissant de chaînes dépassera l'espace de chaînes de tout programme.
=========================================================================
(Annexe : sous-programme de Wise qui génère la « population » à partir du nombre de descendants)

PROCEDURE spawn;

{  SPAWN copies the "parent" string (index 0) into each 
       "offspring" string and then performs the selected "mutation".
NOTE:  in each case, the letter position to be changed is selected at
       random AND the letter to be placed there is also selected at
       random.   }

VAR
  i, j, k :INTEGER;

BEGIN
  FOR i:=1 TO num_copies DO
    BEGIN
    s[i] := s[0];                { Copy the "parent" }
    IF (option <> 3) OR (i > 1)  { Do not change if first child and option }
      THEN                       { is 3(one child remains unchanged) }
        CASE method OF
          1 : s[i,(Random(msg_size)+1)] := letter_pool[Random(pool_size)];
          2 : FOR k:=1 TO num_changes DO
                  s[i,(Random(msg_size)+1)] := letter_pool[Random(pool_size)];
          3 : FOR j:=1 TO msg_size DO
                IF Random < mut_prob
                  THEN
                    s[i,j] := letter_pool[Random(pool_size)];
        END;  {CASE}
    diffs[i] := diff(s[i]);
    END;  {FOR i:=1 TO num_copies DO}
  i := min_diff;                  { find offspring closest to target }
  s[0] := s[i];                   { make the offspring the next parent }
  diffs[0] := diffs[i];           { save its difference for display  }
END;
=========================================================================
--
Ian Musgrave, Peta O'Donohue, Jack Francis et Michael James Musgrave
reynella@werple.mira.net.au http://werple.mira.net.au/~reynella/
une collection de programmes weasel inspirés de Dawkins http://www-personal.monash.edu.au/~ianm/whale.htm
Southern Sky Watch http://www.abc.net.au/science/space/default.htm

[Retour aux articles du mois de 1999]