Dans la continuité d'un sujet précédemment abordé sur notre blog nous allons discuter de l'applicabilité de l'apprentissage automatique à ce domaine et sous quelle forme. En partageant son expérience et les solutions qu'il a choisies l'expert en IA chez Apex Game Tools, Jakob Rasmussen.

Ces dernières années, de nombreuses discussions ont eu lieu sur le fait que l'apprentissage automatique pourrait transformer radicalement l'industrie du jeu, car cette technologie a déjà prouvé son efficacité dans de nombreuses autres applications numériques. Mais il ne faut pas oublier que les jeux sont beaucoup plus complexes qu'un simulateur de conduite, un programme de gestion de drone ou des algorithmes de reconnaissance faciale sur une image.
Pour l'instant, l'industrie du jeu continue d'utiliser des méthodes traditionnelles d'IA, telles que les automates finis, les arbres comportementaux et — de plus en plus récemment — l'IA basée sur l'utilité (systèmes basés sur l'utilité). Ces IA sont également appelées design-based (intelligence de conception) ou systèmes experts. Cependant, il devient de plus en plus évident — et d'abord pour les joueurs — que ces systèmes conviennent de moins en moins à la création d'adversaires réellement avancés capables d'imiter le comportement des joueurs. En particulier, cela concerne les solutions créatives. Cela s'explique par le fait que les développeurs d'intelligence artificielle ne peuvent pas prendre en compte toutes les tactiques et stratégies comportementales possibles et les mettre en œuvre efficacement dans des systèmes d'IA traditionnels. Pour les joueurs, cela se traduit souvent par une expérience de jeu ennuyeuse et prévisible, face à un ennemi dont le comportement est facile à mémoriser.
Ce résultat est dû à de nombreuses raisons, mais l'une des principales est l'incapacité de l'IA à apprendre. Ainsi, lors de la création d'une intelligence artificielle pour un adversaire, il est naturel de vouloir passer à l'apprentissage automatique, qui a fait ses preuves dans de nombreuses autres applications. Cependant, plusieurs nuances doivent être prises en compte. L'IA de jeu doit être capable de s'adapter à toute situation et d'exploiter les avantages qu'elle présente, ainsi que de s'ajuster aux différents styles de jeu des adversaires — qu'il s'agisse de joueurs humains ou d'autres IA.
Où en est-on maintenant
La société britannique DeepMind, spécialisée dans le développement de l'intelligence artificielle, a récemment montré comment l'IA peut apprendre à jouer à des jeux de manière autonome, en assimilant leurs règles et en trouvant des moyens de terminer le jeu ou de gagner - pour l'instant, uniquement avec des jeux simples, tels que les premiers jeux. — par exemple, les échecs et le jeu de stratégie japonais go. Les résultats obtenus pour ces jeux montrent que l'intelligence artificielle est capable de se forger une évaluation adéquate de la situation sur le plateau. En ce qui concerne l'adaptation de l'IA aux différents styles de jeu de l'adversaire, les résultats ne sont pas encore très impressionnants.
De nos jours, les réseaux neuronaux ont déjà appris à reconnaître des images et à conduire des voitures. Mais ces fonctions peuvent également être réalisées avec des architectures relativement simples, même si le résultat est assez complexe et volumineux. Ainsi, l'IA de reconnaissance d'images sur Facebook a une profondeur d'environ 100 couches, ce qui la rend comparable au cerveau biologique - en termes de quantité et de complexité des interconnexions entre les neurones formant un grand réseau.
IA de jeu
En ce qui concerne l'application de l'apprentissage automatique dans l'industrie du jeu, il existe certaines limitations qui rendent impossible l'utilisation systématique de ce type d'architecture. Parmi celles-ci, on trouve les exigences système, en particulier celles relatives au CPU, qui définissent la capacité de l'ordinateur à traiter des structures de jeu complexes et son aptitude au storytelling et au gameplay.
Il en résulte que dans de nombreux jeux, il n'est pas possible de disposer de l'infrastructure matérielle nécessaire pour mettre en place un système d'intelligence artificielle complexe, et encore moins d'un cluster de serveurs, comme c'est le cas pour les réseaux de reconnaissance d'images de Facebook. Parfois, plusieurs IA doivent fonctionner simultanément — non seulement sur des ordinateurs, mais aussi sur des appareils mobiles et d'autres plateformes moins puissantes. Tout cela impose des contraintes sur la taille et la complexité de l'architecture d'apprentissage automatique, car tous les calculs doivent s'effectuer avec un temps de traitement d'environ 1 ou 2 millisecondes. Bien sûr, il est possible d'utiliser différentes technologies d'optimisation et de répartition de la charge entre les trames, mais il est tout de même impossible d'échapper complètement à ces limitations.
La complexité du jeu peut poser de sérieux problèmes à l'IA. Dans des jeux comme StarCraft II, la mécanique du jeu est de loin plus complexe que dans les jeux Atari. Il ne faut donc pas s'attendre à ce qu'à une certaine fréquence d'images et avec des exigences système connues, l'apprentissage automatique réussisse nécessairement à comprendre l'ensemble de l'état du jeu et à interagir avec lui. Tout comme un joueur s'oriente souvent grâce à son instinct dans les premières étapes du jeu, l'IA doit apprendre à traiter l'état du jeu pour simplifier son avancement ultérieur. Par exemple, dans l'un des derniers sur les cartes, seules les informations jugées importantes par les développeurs sont affichées : dans un cas, l'IA utilisait une vue réduite de l'ensemble de la carte, dans un autre, elle pouvait déplacer la caméra comme un joueur, et alors sa perception était limitée aux informations présentes à l'écran.

Visualisation du jeu de l'IA AlphaStar contre un joueur dans StarCraft II : sur la capture d'écran, on voit les observations « brutes », l'activité du réseau neuronal, certaines de ses actions possibles et ses coordonnées, ainsi que le résultat supposé du match.
C'est un aspect particulièrement pertinent dans le cas des jeux. Souvent, l'intelligence artificielle de jeu ne peut pas utiliser les méthodes traditionnelles de résolution de problèmes en apprentissage automatique. Par exemple, elle n'est généralement pas obligée de gagner ou de faire tout son possible pour triompher, comme c'était le cas avec les jeux Atari. Plus souvent, le rôle de l'IA est de rendre l'expérience de jeu plus engageante. Il peut être nécessaire qu'elle joue un rôle et se comporte comme le personnage qu'elle représente. Ainsi, les IAs de jeu sont davantage liées au design de jeu et à la narration, et doivent posséder les outils nécessaires pour gérer leur comportement afin d'atteindre les objectifs fixés. L'apprentissage automatique à l'état pur n'est pas toujours approprié pour cela, ce qui signifie qu'il faut chercher autre chose.
Problèmes pratiques de l'apprentissage automatique
Ces problèmes se sont présentés lors du développement d'une intelligence artificielle basée sur l'apprentissage automatique pour , où les IAs doivent se comporter comme des joueurs ordinaires, c'est-à-dire être aussi flexibles et astucieuses.
Tout comme Starcraft II, Unleashed est beaucoup plus complexe que les échecs et le go pour Atari. Le gameplay y est intuitif et facile à maîtriser, mais pour réussir véritablement, des compétences spécifiques en gestion de la méta sont nécessaires. Le joueur doit créer des labyrinthes, lâcher des monstres sur les ennemis et élaborer sa stratégie en matière d'économie, d'attaque et de défense des structures tout au long du jeu. Pour cela, il doit bluffer et anticiper les mouvements des autres, ainsi que gérer la psychologie de la méta — c'est ce qui rend le poker plus qu'un simple jeu statistique.

Capture d'écran de Unleashed
Dans la recherche de l'architecture la plus adaptée à ces objectifs, des technologies telles que et l'apprentissage profond ont d'abord été intégrées dans le jeu presque sans modification, pour voir comment elles se comporteraient à l'état brut en tant qu'IA ennemie.
C'était horrible.
Il est rapidement devenu évident qu'Unleashed devait résoudre de nombreux problèmes globaux auxquels l'apprentissage automatique est difficile à adapter.
L'une d'elles est la construction d'un labyrinthe efficace. Comme dans de nombreux jeux dont le but est de défendre une tour, ici, les joueurs doivent bâtir un labyrinthe autour d'elle, à travers lequel les monstres vont s'attaquer. Ces monstres doivent être éliminés avec les armes placées dans le labyrinthe. Idéalement, le labyrinthe doit être aussi long que possible pour pouvoir infliger suffisamment de dégâts aux monstres sans leur permettre d'atteindre la tour. Certains types d'armes sont plus efficaces contre certains monstres, il est donc judicieux de les placer dans le labyrinthe avant les autres. La particularité d'Unleash est qu'il n'existe pas de labyrinthe parfait : il y a tellement de types de monstres dans le jeu que, d'une manière ou d'une autre, l'un d'eux passera inévitablement par un segment du labyrinthe. Chaque labyrinthe doit être adapté aux nouveaux monstres lancés par d'autres joueurs. Par conséquent, il ne suffisait pas simplement d'apprendre à l'intelligence artificielle à construire des labyrinthes — il fallait lui enseigner à créer des labyrinthes efficaces pour divers scénarios, rencontrés aussi bien dans la version précoce que dans la version tardive du jeu.
L'IA devait également apprendre à anticiper les monstres qui apparaîtront dans le labyrinthe. Cela représente en quelque sorte un problème inverse par rapport à la construction du labyrinthe. Comme dans de nombreux autres jeux, dans Unleash, il ne suffit pas d'accroître une armée et de l'envoyer au camp ennemi : il est également nécessaire d'espionner les défenses ennemies et de structurer l'armée de manière à frapper aussi efficacement que possible les points faibles adverses. L'armée de monstres doit interagir entre eux de façon à percer le labyrinthe avec succès. Parfois, il est également nécessaire de libérer les monstres dans un certain ordre en fonction de leurs fonctions et rôles. Cela augmente également le nombre de combinaisons possibles.
Enfin, puisque le joueur doit à la fois créer des labyrinthes et rassembler une armée de monstres, l'IA doit également apprendre à équilibrer l'attaque et la défense. Il convient également de considérer qu'à mesure que le joueur augmente son armée de monstres et construit davantage de labyrinthes, il a besoin de plus de ressources pour cela. Par conséquent, une stratégie d'attaque bien pensée est cruciale tant pour l'économie du jeu que pour la victoire. Pour garantir la compétitivité, l'IA doit savoir gérer les ressources afin de créer une puissante armée de monstres sans compromettre la force du labyrinthe. Investir au maximum dans les monstres peut être économiquement avantageux, mais cela augmente le risque que le labyrinthe soit pris par les monstres de l'adversaire. D'autre part, parier sur le renforcement de la défense du labyrinthe peut affaiblir votre économie. Aucun de ces scénarios ne conduira à la victoire. Ainsi, le problème d'optimisation dans Unleashed s'avère plus complexe que dans le cas des échecs ou de Starcraft, et implique la nécessité de faire des sacrifices et d'anticiper son profit sur plusieurs étapes en avant.
Au fur et à mesure que l'intelligence artificielle apprend, de nombreux problèmes auparavant non pris en compte émergent. Au début, l'IA atteignait souvent un certain niveau de développement, où elle commençait à comprendre certains aspects du jeu — par exemple, quelles armes dans le labyrinthe sont efficaces contre certains types de monstres ou quels monstres passent le mieux dans certaines zones du labyrinthe. Mais l'apprentissage était lent et conduisait à la création de stratégies monotones.
La nécessité d'approches parallèles
Alors que l'apprentissage de l'intelligence artificielle basé sur le machine learning progressait lentement et sans succès particulier, les autres étapes de test et de développement nécessitaient une meilleure intelligence artificielle et des IA concurrentes plus fiables. Pour leur mise en œuvre, une architecture Utility a été utilisée, permettant de créer des IA spécifiques pour tester et vérifier la qualité du jeu, des tests in-game et l'équilibrage des armes et des monstres, ainsi que la création de labyrinthes et de monstres spécifiques. Cependant, dans le cadre du développement de Unleash, les créateurs ont également perfectionné leurs compétences en le parcourant, puis ont décidé d'utiliser les connaissances acquises pour créer une IA Utility plus complexe. Il est donc devenu évident que de nombreux problèmes rencontrés dans les systèmes d'intelligence artificielle basés sur le machine learning peuvent être facilement résolus grâce aux systèmes Utility qui exploitent les connaissances qui y sont intégrées, et vice versa.
Par exemple, il est plus efficace de construire des labyrinthes grâce à des IA Utility basées sur des bases de connaissances établies à partir des résultats de tests internes. On peut facilement décrire et programmer un algorithme de construction de labyrinthe et de placement d'armes de manière à simplifier la défense de la tour contre des monstres spécifiques pour un joueur vivant. En revanche, la création d'une armée de monstres basée sur des connaissances concernant la base adverse s'est avérée être un défi complexe pour ces IA, en raison du nombre d'conditions et de combinaisons diverses à prendre en compte, qui était impressionnant. Avec ce type d'architecture IA, la recherche de jeux de monstres appropriés prendrait un temps infini. Ainsi, dans des conditions de contraintes définies, l'apprentissage profond serait la solution idéale pour cette tâche.
Création d'IA hybrides
Il a donc été décidé de combiner deux approches pour créer un système hybride d'intelligence artificielle basé sur l'apprentissage automatique et l'Utility. L'idée était que, là où un grand nombre de combinaisons et d'états du jeu devaient être traités, ou où il fallait l'entraîner à quelque chose, l'apprentissage automatique était utilisé. Pour d'autres tâches, où il valait mieux s'appuyer sur l'expérience personnelle des développeurs, des systèmes Utility ont été impliqués. L'avantage de cette approche réside également dans le fait qu'il est possible de mieux contrôler le comportement de l'IA si nécessaire, afin d'assurer un suivi plus précis de l'objectif fixé. Par exemple, on peut utiliser l'IA Utility pour garantir un équilibre entre l'attaque et la défense, créant ainsi différents niveaux d'agressivité, ou créer différentes configurations de labyrinthes pour différentes IA afin de leur donner des styles de jeu individuels. Il est également possible de définir des systèmes de valeurs pour les réseaux neuronaux afin de former différentes préférences lors du choix de monstres aériens ou terrestres, ajoutant ainsi aussi de la personnalité à des IA spécifiques. Il y a encore de nombreuses autres options pour mettre en œuvre des solutions de projet, et toutes soulignent les forces de chaque type d'architecture d'IA.
L'approche hybride a également été une réponse à une autre question soulevée par l'équipe de développeurs pendant le processus de développement de l'intelligence artificielle pour Unleash : faut-il appliquer un unique réseau de neurones profond global basé sur l'apprentissage automatique pour prendre en compte toutes les données d'entrée et de sortie, ou est-il préférable de concevoir une IA avec une structure hiérarchique ?

Deux architectures ont été utilisées dans Unleash : à gauche, un grand réseau de neurones profond avec sa propre architecture unique, à droite, un système hiérarchique où chaque réseau a sa propre tâche.
Et pourtant, il serait souhaitable de créer une approche commune pour le système d'intelligence artificielle, dans l'architecture de laquelle les développeurs n'auraient pas intégré leur propre expérience. Cependant, plus il y avait d'entrées dans le jeu, plus le réseau neuronal se développait. Il était impossible de séparer l'entraînement de l'IA et de leur apprendre quelque chose de spécifique : soit la défense, soit l'attaque. Cela a suscité des inquiétudes selon lesquelles une approche plus générale entraînerait une augmentation significative du nombre de calculs.
C'est ainsi qu'est née l'idée de créer une architecture hiérarchique, dans laquelle chaque tâche spécifique serait exécutée par un réseau neuronal spécialisé. Selon cette idée, l'intelligence artificielle doit d'abord prendre une décision sur la répartition des ressources entre l'attaque (augmentation de l'armée de monstres) et la défense (construction d'un labyrinthe). Une fois cela fait, elle passe au niveau suivant en fonction de son choix et accède à la partie nécessaire de l'état du jeu, après quoi elle prend des décisions détaillées sur quels monstres choisir et quel équipement installer dans le labyrinthe.
Conclusion et prochaines étapes
Avec une approche hybride, l'IA Utility, comprenant des réseaux basés sur l'apprentissage automatique, ressemble à une architecture hiérarchique. Celle-ci, à son tour, ressemble au cerveau biologique, où différents centres nerveux sont chacun responsables de leur propre tâche.
Actuellement, l'IA adverse dans Unleash est très difficile à vaincre : elle est capable de s'adapter à n'importe quelle situation dans le jeu, mais les développeurs peuvent néanmoins modifier ses paramètres à leur guise. Selon l'auteur de l'article, avec le temps, l'approche hybride devrait se répandre davantage et apparaître dans de nombreux autres jeux. Peut-être qu'un jour, il sera possible d'intégrer une intelligence artificielle basée sur l'apprentissage automatique de manière pure dans le gameplay. Mais, il est évident que cela demandera encore du temps. En attendant, l'objectif est de trouver une architecture qui s'adapte elle-même aux défis qui se posent et trouve des moyens optimaux de les résoudre.
Source : habr.com
