Aujourd’hui sur le blog du webdesign, on va s’intéresser au concept d’algorithme génétique.
Petit point sur l’IA
Tout d’abord, introduisons le concept d’intelligence artificielle : ce terme a été employé pour la première fois que très récemment par John McCarthy, mais le principe d’expliquer et d’imiter le cerveau humain date de l’antiquité. Le philosophe Aristote a tenté de formuler logiquement l’argumentation afin d’en faire une « méthode » applicable de manière systématique (donc comme un algorithme).
Au début du XIXe siècle, c’est le mathématicien George Boole qui a repris l’idée en imaginant une logique algébrique binaire : l’algèbre de Boole.
Plus tard, le mathématicien Alan Turing, qui a travaillé dans un contexte de guerre contre le nazisme et fait partie des pionniers de l’informatique, a mis en place un test permettant de détecter la force d’une intelligence artificielle. Ce test consiste simplement à mettre en relation à l’aveugle un cobaye avec un ordinateur et une autre personne, le but du cobaye est de déterminer qui est l’ordinateur et qui est l’humain. S’il échoue, le test est réussi pour la machine.
L’intelligence artificielle s’est donc développée principalement au cours de ces dernières années, au travers de différentes technologies, comme les réseaux neuronaux ou bien le point qui nous intéresse aujourd’hui : les algorithmes génétiques.
Les algorithmes génétiques
Un algorithme génétique est un type d’intelligence artificielle reprenant le concept de la théorie de l’évolution de Darwin, d’où le nom. Il fait partie de l’ordre des algorithmes évolutionnistes, qui ont la particularité de s’inspirer de l’adaptation de la nature.
Les algorithmes génétiques reprennent donc point par point le principe de l’évolution d’une espèce, mais à une échelle différente, pour une population d’éléments quelconques :
La sélection naturelle, traduite ici par la sélection des meilleurs éléments
L’hérédité, traduite ici par le croisement des éléments pour en donner un ou des meilleurs
Les variations entre individus, traduite ici par la mutation et l’utilisation des particularités des éléments
Un algorithme génétique reprend donc un schéma très simple :
Utilisations pratiques
Ce système peut aussi être utile dans des conditions plus professionnelles, voire dans la vie de tous les jours : on peut utiliser un algorithme génétique pour résoudre un sudoku, pour générer des plannings complexes, pour coder un bruteforce ou encore pour aider la robotique dans les tâches les plus complexes telles que le maintien en équilibre.
Ce système est par ailleurs souvent couplé avec un réseau neuronal pour résoudre les tâches les plus complexes comme par exemple dans la vidéo ci-dessous où deux « gladiateurs » apprennent d'eux-mêmes à combattre.
Conclusion
Voilà, on a donc vu que le fonctionnement d’un algorithme génétique s’inspirait de la façon dont la nature s’adapte à son environnement, mais aussi qu’ils étaient principalement utilisés pour résoudre des tâches complexes et qu’on pouvait les exploiter afin de générer des choses auxquelles l’humain n’aurait pas forcément pensé.
On peut donc citer quelques avantages, comme la bonne gestion des imprévus, ou le fait que la machine se débrouille par elle-même pour obtenir des bons résultats à partir de rien, ce qui se rapproche du « machine learning », qui désigne le fait qu’une machine apprenne d’elle-même.
Bien sûr, comme tout système quel qu’il soit, il y a aussi des inconvénients, comme le fait que ce type d’algorithme est relativement complexe à mettre en place, que les temps de calculs peuvent être très longs et que les résultats restent incertains.