Que cela soit dans la vie de tous les jours ou bien dans le cinéma de science-fiction, tout est prétexte à parler d’intelligence artificielle (IA), quitte à ne pas trop savoir concrètement ce qu’elle représente. Une chose est pourtant certaine avec l’IA : elle évolue ! Que cela soit sur le fond, avec la variété et la profondeur des réalisations, ou bien sur la forme avec les méthodes utilisées toujours plus innovantes, le monde de l’intelligence artificielle est un monde en mouvement. Plutôt que de nous intéresser aux enjeux globaux de ce domaine, nous allons ici nous intéresser à une nouvelle méthode impressionnante de par ses capacités. Faites place à l’algorithme génétique.
Vous l’aurez sans doute compris, cette technique s’inspire du domaine de la génétique et plus précisément du principe d’évolution développé par Darwin. Elle apparaît à une époque où le biomimétisme, méthode scientifique consistant à observer la nature et à en copier les innovations afin de les transposer à notre société, a le vent en poupe. Si vous souhaitez en savoir un peu plus, je vous conseille de regarder les vidéos d’Idriss Aberkane ou bien la vidéo de la chaîne DirtyBiology sur le sujet.
Maintenant, cessons de digresser et attaquons nous au cœur du sujet : les algorithmes génétiques.
Avant d’étayer le propos quant à la méthode de l’algorithme génétique, il est nécessaire de s’accorder sur certains concepts et définitions.
Tout d’abord sur l’intelligence artificielle. Conscience ou non, physique ou virtuelle, humanoïde ou robotique, il va falloir trancher. Nous allons considérer comme définition celle de Minsky qui voit dans l’intelligence artificielle “la construction de programmes informatiques qui s’adonnent à des tâches qui sont, pour l’instant, accomplies de façon plus satisfaisante par des êtres humains car elles demandent des processus mentaux de haut niveau tels que : l’apprentissage perceptuel, l’organisation de la mémoire et le raisonnement critique “.
Ici, c’est vraiment une vision utilitariste de l’intelligence artificielle qui est développée. Ce n’est somme toute qu’une automatisation de tâches plus complexes que celles effectuées depuis des années par les machines industrielles. Même s’il est évident que certaines questions éthiques subsistent comme cela est notamment le cas avec des voitures autonomes, le cœur du sujet ici n’est pas de construire une machine pouvant passer avec succès le test de Turing. Si ces questions vous intéressent, je vous conseille par ailleurs de regarder le film “Ex Machina”.
Une autre chose à bien comprendre lorsque l’on parle d’intelligence artificielle, c’est comment celle-ci devient véritablement intelligente. Et c’est là qu’intervient le machine learning, ou apprentissage automatique en français ! Vous l’aurez compris, le machine learning est donc un processus d’apprentissage qui permet à un algorithme ou à une machine (régie par de multiples algorithmes) d’être plus performant(e) quant à la tâche qui lui incombe. De nombreuses méthodes de machine learning existent et, spoiler, l’algorithmie génétique en est une.
Enfin, pour bien comprendre la suite de l’article, il est nécessaire de VRAIMENT bien comprendre le Darwinisme. NON, l’homme ne descend pas du singe ! NON, l’évolution n’est pas un processus d’adaptation ! Une majorité de personnes appréhende encore mal la théorie darwinienne en donnant un sens à l’évolution et à la nature. Pour Darwin, l’évolution des espèces est seulement issue de mutations aléatoires. Parce qu’elles ont apporté un avantage compétitif aux individus “mutants” et leur ont permis de se reproduire plus; à terme, les mutations se généralisent à l’ensemble de l’espèce et la font évoluer. C’est ce que l’on appelle de manière plus courante la sélection naturelle.
Prenons un exemple concret pour expliquer plus clairement. Si les ours polaires sont blancs, cela n’est pas parce qu’il se sont adaptés à la banquise qui est blanche. Non ! Selon Darwin, la couleur de ces ours provient ici d’une modification qui est apparue de manière aléatoire (la couleur blanche) et qui a permis à l’individu d’avoir un avantage compétitif par rapport à ses semblables (ici être moins visible par ses prédateurs et ses proies). De ce fait, l’ours blanc a pu mieux se reproduire et donc généraliser ce trait parmi l’espèce après de nombreuses générations. Ces modifications aléatoires seront expliquées a posteriori par la découverte de la génétique.
Maintenant que nous avons bien intégré l’ensemble de ces concepts, place aux algorithmes !
Si vous avez compris le darwinisme, le fonctionnement des algorithmes génétiques devrait être un jeu d’enfant pour vous. Pour faire court, l’algorithmie génétique, c’est Darwin appliqué à l’informatique ! Besoin d’un peu plus de détails ? Ok, c’est parti :
Le principe est simple et s’articule autour de trois principes fondamentaux :
Premièrement, nous avons besoin d’une population d’algorithmes qui doit être générée aléatoirement dans un univers défini.
Deuxièmement, ces algorithmes vont devoir interagir avec l’univers dans lequel ceux-ci ont été construits. Ils vont devoir pouvoir prendre en compte différents éléments/sources d’informations disponibles dans l’univers : ce sont les inputs. Ceux-ci ne sont ni plus ni moins que des variables mathématiques. À partir de celles-ci, l’algorithme doit donner un résultat, l’output. C’est le résultat de la fonction, prenant en compte les différentes variables.
Rappelons qu’à ce stade, nos algorithmes sont purement aléatoires : ils n’ont pas de but et n’ont pas été construits, réfléchis pour effectuer une tâche particulière. Il est donc primordial d’intégrer une notion d’objectif, de score.
Dès lors que ces trois éléments sont réunis, il ne reste plus qu’à appliquer le principe de notre très cher Darwin : la sélection naturelle. Et c’est là que le miracle commence avec un principe pourtant assez simple.
L’idée est ici de tester notre première population d’algorithmes (génération 1) et, à l’issue du test, on ne conserve que ceux ayant eu les meilleurs scores. A partir de ces algorithmes, une nouvelle population sera créée (génération 2). Afin que celle-ci soit de taille identique, de nouveaux algorithmes seront générés aléatoirement à partir de ceux que nous avons conservés. C’est comme si, d’un point de vue biologique, la population se reproduisait en introduisant de fait des variations génétiques.
En appliquant ce double process de sélection/mutation de manière répétée, on obtient assez rapidement des algorithmes très performants. Comme si ces algorithmes avaient finalement appris à jouer. Au fur et à mesure des générations, les algorithmes deviennent de plus en plus efficaces. Vous êtes sceptiques ? Je vous laisse regarder cette vidéo, vous montrant concrètement ce qu’un algorithme génétique donne sur Flappy Bird.
Vous pouvez bien sûr trouver de nombreux autres exemples d’utilisation assez ludique à regarder. Là où l’exemple de Flappy Bird se limite à un seul output, d’autres deviennent plus complexe. C’est le cas avec Mario (vidéo ci-dessous) . Dans ce cas, le nombre d’output s’élève à 7 !
Si vous ne l’avez pas encore remarqué, les algorithmes génétiques sont fascinants. En effet, ces algorithmes n’ont pas besoin d’exemples pour apprendre. Contrairement à du machine learning classique, expliqué en détail dans un de nos articles, aucune base n’est nécessaire à l’apprentissage. On dit ainsi qu’un algorithme génétique est un algorithme non-supervisé. Seuls les trois éléments, déjà cités plus haut, sont nécessaires :
L’algorithme génétique n’est pas, en soit, une révolution technologique. En effet, ce n’est pas un outil, c’est avant tout une méthode. Cependant, celle-ci ouvre une voie royale pour l’apprentissage non-supervisé. Pour résumer, cette méthode permet d’obtenir des algorithmes ultra-performants à partir de rien sur n’importe quelle tâche que l’on peut définir rationnellement. Et cette perspective peut laisser rêveur.
Si les algorithmes génétiques bouleversent le monde de l’intelligence artificielle, ils ne sont cependant pas exempts de certains défauts qui limitent leurs utilisations.
La première est inhérente au principe même de ces algorithmes. L’un des avantages de l’algorithme génétique est clairement de partir d’une population d’algorithmes complètement aléatoire. Pour faire simple, on part du chaos pour ordonner. Le problème est que pour certaines applications, notamment celles qui interfèrent avec des comportements humains, une base de connaissances est nécessaire. Imaginez le cas des voitures autonomes, avec une utilisation stricto sensu de cette méthode. Pour obtenir une première voiture autonome viable, de (très) nombreux accidents devraient avoir eu lieu en amont, incluant dégâts matériels et humains. Sans pour autant faire de dommages collatéraux, la traduction automatique nécessite elle-aussi l’intégration d’exemples préalables.
Aussi, même si cette méthode permet d’optimiser la performance des algorithmes, elle n’assure en rien le fait qu’ils soient optimaux. Même s’ils tendent à s’améliorer à chaque génération, rien ne garantit que les algorithmes sont les meilleures et les plus performants.
Il est certain que les algorithmes génétiques révolutionnent le monde de l’intelligence artificielle. Cependant, ceux-ci ne rebattent pas véritablement les cartes. Plus qu’une technologie miracle qui remplacerait l’ensemble des technologies liées au machine learning, c’est véritablement une méthode, une manière de construire et penser l’IA qui émerge depuis quelques années. Cette vision de l’algorithmie laisse ainsi penser à de nombreuses complémentarités avec l’ensemble des branches de la programmatique et présage aussi de beaux jours pour l’intelligence artificielle.