• Aucun résultat trouvé

Nos connaissances en modèles de semi-Markov cachés nous permettent de faire un constat en ce qui concerne les travaux de Hladky. La matrice sous-jacente, estimée à l’aide des journaux de 50 parties, est ce qui guide majoritairement l’estimation et celle-ci n’est peut-être pas parfaite. Entre autres, elle ne s’adapte pas à tous les adversaires. Quelqu’un jouant de manière hors norme va flouer complètement une intelligence utilisant une matrice estimée à partir de joueurs plus traditionnels.

De plus, l’intelligence artificielle se fera berner partie après partie sans jamais changer sa stratégie. Il serait intéressant que l’intelligence artificielle puisse mettre

à jour ses connaissances a priori, la matrice sous-jacente, au fil des duels contre un certain joueur. L’intelligence pourrait donc apprendre sur le long terme le comportement d’un agent en particulier. Les estimations pour cet agent seraient ainsi plus spécialisées et, par le fait même, plus précises.

Nos travaux consistent principalement à implanter une méthodologie permettant à une intelligence artificielle de s’adapter au comportement d’un agent au fil du temps. Si nous observons plusieurs fois le déplacement d’un agent, nous désirons que l’intelligence artificielle utilise cette expérience additionnelle pour adapter ses estimations en fonction de cet agent en particulier. Nous appellerons le fait de conserver l’information du passé concernant un agent pour s’adapter à ce dernier une mémoire adaptative. N’oublions pas que l’objectif premier de la recherche en intelligence artificielle est de reproduire le plus fidèlement possible le processus de la réflexion humaine. Doter notre intelligence programmable d’une mémoire et lui permettre d’apprendre de ces expériences est une avancée importante et nécessaire dans l’objectif d’imiter le raisonnement humain qui utilise ses expériences passées pour tenter de prédire le futur.

Encore une fois, les jeux vidéo nous serviront de cadre d’expérimentation puisqu’il existe une problématique en ce qui a trait à l’intelligence artificielle dans les jeux PvP. Malgré tout, les travaux effectués pourraient très bien s’appliquer à l’intel-ligence artificielle dans d’autres circonstances. Dans le contexte d’un jeu vidéo, plus précisément le FPS décrit au chapitre 2, Counter-Strike, il est raisonnable de croire qu’après chaque partie, un joueur connaît un peu plus son adversaire et peut mieux prévoir ses déplacements. On souhaiterait donc qu’un bot fasse de même.

De la sorte, nous désirons trouver une manière d’utiliser nos observations,

par-ties après parpar-ties, dans l’objectif d’accroître nos connaissances sur l’agent, notre adversaire, et ainsi d’améliorer progressivement notre estimation de sa position.

Comme nous savons que la matrice de transition sous-jacente utilisée par l’algo-rithmefoward représente en quelque sorte cette connaissance que possède l’intelli-gence artificielle au sujet des habitudes de déplacement de son adversaire, il serait intéressant que celle-ci soit mise à jour au fil du temps. Notre objectif est de se servir de l’algorithme de Baum-Welch afin de réestimer cette matrice sous-jacente au fil du temps et améliorer l’estimation fournie par l’algorithme foward.

Le défi à utiliser l’algorithme de Baum-Welch sur un ensemble de parties, soit sur plusieurs séries d’observations et non une longue série d’observations. Rappelons que l’algorithme détaillé aux chapitres 2 et 3 se rapprochait de sa contrepartie pour des chaînes de Markov standards où l’on estime ˆai,j par la somme du nombre de fois où le processus fait une transition vers j lorsque ce dernier part de i sur le nombre de départs total de i. Dans un contexte de modèle de Markov standard, l’estimation serait exactement la même. Par contre, dans un contexte de modèle caché, comme nous ne savons pas exactement l’état subséquent, les algorithmes mis au point utilisent le maximum d’informations disponibles, dont le vecteur de probabilités initiales. En considérant cela, il y a ainsi une grande différence entre une longue séries d’observations et plusieurs séries d’observations indépendantes.

Nous allons considérer les parties indépendantes, ce qui revient à considérer les séries d’observations comme étant indépendantes. Bien que cela ne soit pas exac-tement le cas, un agent intelligent favorisera les stratégies gagnantes au fil du temps. Ceci n’est pas exactement faux non plus puisqu’un joueur ne change pas complètement sa stratégie en fonction de la partie précédente. De la sorte, nous pourrons, d’une certaine manière, faire la somme pour toutes les parties de la somme du nombre de fois où le processus fait une transition vers j lorsque ce

dernier part de i sur le nombre de départs total de i comme estimateur de ai,j, tout en considérant à chaque fois notre vecteur de probabilités initiales. En ayant joué m parties, nous utiliserons l’algorithme de Baum-Welch tel que décrit dans les chapitres précédents mais nous utiliserons cette estimation de la matrice de transition :

ˆ ai,j =

PmPT

t=2αt(i)ai,jβt(j) PmPn

j

PT

t=1αt(i)ai,jβt(j). (4.5) Cette matrice sera réestimée à la fin de chacun des duels en y ajoutant la nouvelle partie. Considérant que quelques parties sont insuffisantes pour offrir plus d’in-formations que 50 journaux de matchs professionnels, nous devons déterminer à partir de quand la matrice mise au point sera plus informative.

À partir de ce moment, c’est cette nouvelle matrice qui sera soumise à l’intelli-gence artificielle lorsque cette dernière utilisera l’algorithme foward en temps réel pour estimer la position de son adversaire. Considérant que cette matrice est la composante principale de l’estimation de la position d’un adversaire, nous croyons donc que cette estimation, faite à partir d’une matrice construite suite à une série de matchs contre le même adversaire, sera plus adaptée à cet adversaire. Nous tenterons de démontrer l’efficacité de notre algorithme au chapitre 6.

ALGORITHMIE ET PROGRAMMATION

Dans ce chapitre, nous expliquerons la programmation réalisée afin de mettre au point l’intelligence artificielle, la mettre à l’épreuve et en tirer des conclusions vérifiables statistiquement.

Après avoir choisi et élaboré nos algorithmes, nous avons décidé d’utiliser C++

comme language de programmation. Ce language est un choix courant dans la recherche en statistique puisque ce dernier offre toute la puissance nécessaire aux calculs d’algorithmes complexes. La programmation fut effectuée en collaboration avec Louis-Alexandre Vallières-Lavoie et Guillaume Racicot, deux étudiants au baccalauréat en génie informatique à l’École de technologie supérieure de Mont-réal. Alors qu’ils ont surtout travaillé sur la plateforme de tests, nous nous sommes concentrés sur la programmation des divers algorithmes d’inférences. Dans ce cha-pitre, nous décrirons comment le choix des algorithmes a été effectué et comment ceux-ci furent implémentés. Par la suite, nous décrirons comment fut effectuée la programmation du petit jeu vidéo nous servant de plateforme de tests. Les règles et objectifs seront décrits, en plus de certains détails quant à la programmation concrète de ce jeu et de l’intelligence artificielle servant d’adversaire au joueur.