My resume Home page| See Git project| Summary| Contact logo Itch.io logo Github logo Linkedin

flag france
arrow
image machine learning
Durant l'été 2023, j'ai eu l'occasion de travailler sur plusieurs projets : SFTX2U , MiniCarGame, mais aussi un projet de machine learning. Lors de
ce projet, j'ai voulu apprendre à une IA a retrouver et atteindre un but en passant des obstacles. Ce projet me servait de test afin de réaliser une IA de machine learning sur le projet Unity SFTX2U (n'a pas été réalisé au final).

Pour ce projet, j'ai décidé de me fournir du toolkit ML-agents car c'etait la solution officielle de Unity-Technologies pour réaliser du machine learning sur Unity. Le toolkit fournit un réseau neuronal, sur lequel on peut agir grace a un fichier de configuration .yaml. Une fois configuré, il est possible de lancer l'entrainement de l'IA via un powershell. Ceci lance un environnement virtuel python qui se connecte à Unity au lancement de la scène et récupère les inputs et renvoie des outputs vers l'agent.
config
Cependant, il ne suffit pas de lancer la simulation pour que tout marche, il faut aussi créer, dans Unity un agent capable de recevoir des inputs et de renvoyer des outputs. Tout ça se fait très facilement techniquement avec des composants d'objet et des méthodes à Override, cependant il faut réflechir à ce qu'on ajoute dedans, car les inputs/outputs de l'agent (IA) et l'environnement sont ce qui fait réussir/rater un entrainement.

Un agent qui prend plus d'inputs que nécessaire ou qui renvoie des outputs inutiles ralentira l'entrainement ou le rendra inefficace car trop complexe.Aussi, un agent avec un environnement trop compliqué pour son nombre de neurone ou de layers l'empechera de réussir, et inversement un environnement trop simple rendrait juste inutilement long l'entrainement.

Dans mon cas, j'ai fait plusieurs étapes avec un agent qui prend en compte de plus en plus d'inputs et avec de plus en plus d'aleatoire dans l'environnement. Au départ, l'agent ne connaissait que sa position et celle de son but (toujours a sa droite). Ensuite, l'agent ne connaissait plus les positions mais pouvait voir en face de lui grace a 10 capteurs à hauteur d'oeil sur 80 degrés, et tourner sur lui-même, et le but à atteindre etait positionné aléatoirement dans les environs. Pour finir, j'ai ajouté des trous aléatoires dans le terrain et la capacité de voir au sol grace a d'autres capteurs.
Lvl3training lvl5training
Finalement, j'ai réussi a atteindre mon but et faire un agent qui arrive très régulièrement (plus de 9 fois sur 10) à atteindre un but dans un environnement avec des obstacles aléatoires, et ce dans un temps un minimum optimisé.

RÉSUMÉ DU PROJET :

OUTILS UTILISÉS

COMPÉTENCES ACQUISES / AMÉLIORÉES