• Aucun résultat trouvé

3.3 Évolution d’algorithmes d’évitement d’obstacles efficaces

3.3.3 Évolution guidée

Un problème récurrent en programmation génétique est que l’espace de recherche est très grand par rapport à la taille de la population. En effet cette dernière est limitée par le temps nécessaire à l’évaluation de tous les individus, alors que l’espace de recherche a potentiellement une dimensionnalité infinie si l’on ne limite pas la taille des arbres. De plus, le “paysage” de la fonction de fitness est généralement très irrégulier et chaotique, un changement mineur dans l’algorithme pouvant avoir des répercutions drastiques sur le résultat. De ce fait, la fonction de fitness présente beaucoup d’optima locaux ce qui rend la recherche d’un optimum global d’autant plus complexe.

Il peut donc être intéressant de mettre en œuvre des techniques pour guider le processus d’évolution afin de restreindre la recherche à des zones plus prometteuses. Les techniques exis-tant pour cela sont de deux types :

• Celles qui vont guider explicitement l’évolution en introduisant des individus créés ma-nuellement dans la population initiale (techniques dites d’ensemencement ou seeding). • Celles qui vont guider implicitement l’évolution en découpant le problème à résoudre en

Nous présentons ici une nouvelle technique basée sur l’imitation afin de guider l’évolution. Dans cette section, nous allons tout d’abord détailler les techniques existantes de seeding et d’évolution incrémentale, puis nous expliciterons notre méthode d’évolution en deux phases basée sur l’imitation.

L’utilisation des techniques de seeding suppose que l’on dispose ou que l’on a conçu ma-nuellement une ou plusieurs solutions acceptables pour le problème donné. Ces solutions vont être utilisées pour guider le processus d’évolution. En pratique, cela consiste simplement à insé-rer dans la population initiale ces solutions particulières. Le reste de la population est constitué comme d’habitude de solutions générées aléatoirement et le processus se déroule ensuite nor-malement. L’avantage de cette technique est de permettre à l’évolution de produire rapidement de bonnes solutions et ce même avec de très petites populations. Par contre, cela va rendre plus difficile la découverte de solutions originales car celles-ci seront dominées par les solutions manuelles au début de l’évolution et vont généralement disparaître rapidement. Cette technique introduit donc un a priori très fort sur le type de solution attendu. Au final, le seeding est plus utile pour optimiser une solution donnée que pour réellement découvrir de nouvelles solutions originales.

De ce point de vue, l’évolution incrémentale reste plus dans la philosophie des algorithmes évolutionnaires qui est de limiter les a priori afin de découvrir des solutions originales. Elle consiste à décomposer le problème posé en plusieurs problèmes de difficulté croissante [Gomez 97]. L’idée sous-jacente est qu’un processus évolutionnaire classique ne sera pas toujours capable de résoudre un problème complexe. Dans de nombreux cas, les solutions aléatoires seront toutes à peu près aussi mauvaises, et leur recombinaison ne permettra pas de progresser rapidement vers de meilleures solutions. Il sera dans ce cas plus facile de résoudre une instance plus simple de ce problème, et à partir des solutions trouvées d’évoluer vers des solutions au problème initial. L’évolution incrémentale repose ainsi principalement sur une bonne décomposition du pro-blème. L’évolution va se dérouler au début en utilisant comme fonction d’évaluation l’instance la plus simple du problème. Cette première phase peut durer un nombre fixe de générations ou jusqu’à ce que la fitness des meilleurs individus ait atteint un certain seuil. On remplace ensuite la fonction d’évaluation par une instance plus complexe du problème, et l’évolution continue à partir de la population évoluée précédemment. On procède ainsi jusqu’à la résolution du pro-blème initial.

L’efficacité de cette méthode dépend essentiellement de la qualité de la décomposition du problème. Le postulat de base est qu’un individu efficace sur une instance simple du problème sera plus adapté à une instance plus complexe qu’un individu généré aléatoirement. Si ce pos-tulat se révèle faux à cause d’une augmentation trop rapide de la complexité ou d’une trop grande différence entre les instances simples et les plus complexes, les solutions obtenues au final ne seront pas meilleures qu’avec un processus d’évolution classique. Cette décomposition du problème en instances de difficulté croissante est donc loin d’être triviale.

Notre méthode d’évolution en deux phases basée sur l’imitation est pour cela nettement plus simple à mettre en œuvre. Elle s’inspire à la fois des méthodes de seeding et de l’évo-lution incrémentale. Comme pour le seeding l’évol’évo-lution va être “guidée manuellement”, mais pas par l’insertion de solution préconçues dans la population. Comme pour l’évolution incré-mentale le processus va être découpé en plusieurs phases mais celles-ci ne correspondent pas à différentes instances du même problème. Nous nous basons principalement sur le concept d’imitation dont l’utilité a largement été prouvée aussi bien pour l’apprentissage dans le monde

vivant que pour l’apprentissage artificiel (voir [Schaal 03] par exemple). Notons toutefois que le terme d’imitation englobe généralement le processus complet d’observation du comportement du “professeur”, de transformation du point de vue et de reproduction de ce comportement par l’“élève”. Ici, nous ne nous intéressons qu’à la dernière phase de reproduction d’un comporte-ment. Il s’agit donc plus d’apprentissage supervisé que d’imitation à proprement parler.

En pratique, nous allons commencer par enregistrer un comportement de référence. Dans notre cas, cela consiste à guider manuellement le robot dans l’environnement pour atteindre le point cible tout en évitant les obstacles. Durant ce déplacement nous enregistrons toutes les données d’entrée (image de la caméra, distance et direction du but à chaque pas de temps) ainsi que les commandes données au robot. La première phase de l’évolution va consister à développer des algorithmes qui “imitent” cette trajectoire enregistrée. Pour cela, nous utilisons les fonctions d’évaluation 3.3 et 3.4 décrites au §3.2.2. Cette première phase dure la moitié de l’évolution, soit 50 générations. Pour la deuxième phase, nous gardons la population évoluée précédemment et nous changeons la fonction d’évaluation. Les individus vont ici être évalués plus objectivement sur leurs capacités d’évitement d’obstacles et leur rapidité en utilisant les fonctions 3.1 et 3.2.

L’idée est que la première phase va guider l’évolution vers des individus relativement effi-caces, qui arrivent à atteindre le point cible. La deuxième phase va quant à elle optimiser ces algorithmes et les rendre plus génériques. Nous montrerons au §4.2 les résultats obtenus avec cette méthode par rapport au seeding et à l’évolution incrémentale. Notons déjà que cette mé-thode est particulièrement intéressante dans le domaine de la robotique évolutionnaire. Il est en effet beaucoup plus facile dans ce type d’application d’enregistrer des comportements de réfé-rence que de concevoir manuellement des contrôleurs efficaces ou des instances simplifiées du problème.

3.4 Bilan

Nous avons décrit dans ce chapitre la méthode employée pour faire évoluer les algorithmes de vision dont la structure a été décrite au chapitre 2. Nous utilisons pour cela des méthodes évolutionnaires et plus précisément la programmation génétique basée sur une grammaire. Nous avons également décrit les aspects plus spécifiques à notre système comme les méthodes d’éva-luation et de sélection des algorithmes ainsi que la structure utilisée pour la population d’algo-rithmes.

La description de notre système étant à présent complète, nous allons présenter dans le chapitre 4 plusieurs expériences que nous avons réalisé afin de mettre en évidence l’adaptation des algorithmes au contexte, d’évaluer leurs capacités de généralisation et la possibilité de les utiliser dans un environnement réel.

Chapitre 4

Principaux résultats et enseignements

Ce chapitre a pour but de présenter et d’analyser les principaux résultats obtenus lors de cette thèse. Certains aspects seront décrits de manière plus complète et détaillée en annexe B. Nous allons tout d’abord vérifier l’adaptation des algorithmes évolués au contexte visuel. Nous tenterons pour cela de mettre en évidence les particularités des algorithmes évolués dans différents environnements et de faire le lien entre l’environnement utilisé et ces spécificités al-gorithmiques. Nous montrerons que ces contrôleurs évolués utilisent des primitives visuelles cohérentes mais présentent des performances médiocres, souvent en deçà de ce qui peut être obtenu avec des contrôleurs conçus manuellement. Nous présenterons donc ensuite les résultats obtenus en guidant l’évolution artificiellement pour avoir de meilleures performances, notam-ment en utilisant une méthode basée sur l’imitation d’un comportenotam-ment pré-enregistré. Nous testerons également les capacités de généralisation de ces contrôleurs et décrirons les adap-tations apportées à la grammaire pour améliorer le compromis entre évitement d’obstacles et déplacement vers la cible. Nous décrirons enfin les expériences que nous avons réalisées pour valider cette approche sur un robot réel. Pour conclure, nous présenterons plusieurs pistes pos-sibles pour améliorer ce système et l’appliquer à d’autres tâches.

4.1 Différenciation des algorithmes en fonction de

l’environ-nement

Cette section présente une première série d’expériences dont le but est de mettre en évidence l’adaptation des algorithmes évolués au contexte visuel. Nous utilisons pour cela les environ-nements de simulation décrits au §3.2.1.1, dont l’apparence visuelle est très différente, et nous comparons les algorithmes créés par notre système dans chaque environnement. Mais avant tout nous allons présenter les contrôleurs de référence qui ont été conçus manuellement pour chaque environnement afin de disposer d’un point de comparaison pour les algorithmes évolués.