IFT3150 - Projet d'informatique Partitionnement des ...

17

Transcript of IFT3150 - Projet d'informatique Partitionnement des ...

Page 1: IFT3150 - Projet d'informatique Partitionnement des ...

IFT3150 - Projet d'informatique

Partitionnement des emplacements possibles des joueurs sur une

carte d'un jeu de type FPS

Xavier Frenette

FREX04048305

3 mai 2011

Page 2: IFT3150 - Projet d'informatique Partitionnement des ...

Table des matières

1 Introduction 1

1.1 Apprentissage automatique (AA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Application de l'AA aux jeux vidéos . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Description du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.5 Données utilisées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 A�nity propagation 4

2.1 Description et utilité pour le projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.2 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Di�cultés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 K-Means 6

3.1 Description et utilité pour le projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.2 Première caractéristique : indicateur temporel . . . . . . . . . . . . . . . . . . . . . . 8

3.2.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.2 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.3 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.3 Deuxième caractéristique : zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3.2 Développement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3.3 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 Conclusion 14

i

Page 3: IFT3150 - Projet d'informatique Partitionnement des ...

1 Introduction

Mon projet pour le cours IFT3150 se déroula au sein du LISA, le Laboratoire Informatique desSystèmes Adaptatifs, sous la supervision du Professeur Yoshua Bengio.

1.1 Apprentissage automatique (AA)

Ce laboratoire du DIRO se spécialise dans l'étude de l'apprentissage automatique (souvent appelémachine learning), une discipline de l'intelligence arti�cielle intéressée au développement, à l'analyseet à l'implémentation de méthodes permettant l'automatisation de l'apprentissage par une machinedans le but de lui faire exécuter des tâches qu'il serait autrement di�cile à implémenter par desalgorithmes plus classiques.

L'apprentissage automatique repose sur l'analyse de données et peut donc s'intégrer à toutes lesdisciplines nécessitant un traitement de données. Il est déjà très fortement utilisé dans plusieursdomaines comme la détection de pourriel, la prédiction boursière, la reconnaissance visuelle et dela parole, et, de plus en plus, dans les jeux vidéos.

1.2 Application de l'AA aux jeux vidéos

Le marché du jeu vidéo est un milieu extrêmement compétitif générant des revenus de plusieursmilliards de dollars par année. La féroce compétition que se livrent les compagnies productrices lesamène à constamment rechercher la nouvelle technologie qui leur permettra d'attirer et d'impres-sionner une clientèle de plus en plus di�cile à épater.

À chaque nouveau titre, l'équipe de production est confrontée à deux types de clientèles : les néo-phytes qui n'ont pas encore développé les ré�exes et les stratégies nécessaires pour bien pro�ter duproduit ; et les vétérans qui recherchent un niveau de dé� su�samment élevé. Les premiers aban-donneront le jeu s'il est trop complexe ou di�cile, les seconds le bouderont s'il est trop simple outrop facile. Les titres à succès ont toujours été un fragile équilibre entre simplicité et dé�, réussissantà satisfaire l'un sans négliger l'autre.

À cause de cette dualité de la clientèle, les concepteurs tentent de créer des jeux s'adaptant auniveau de compétence de l'utilisateur tout en cherchant à accentuer le sentiment d'immersion,c'est-à-dire l'impression de prendre part activement à l'histoire du jeu plutôt que d'être un simpleacteur passivement dirigé d'un point à l'autre selon une trajectoire prédéterminée. D'où l'intérêtde l'apprentissage automatique. En plus de permettre d'analyser la compétence d'un joueur etainsi d'ajuster la di�culté des épreuves, un apprentissage e�cace par le jeu peut permettre dechanger l'histoire et d'adapter le déroulement de l'aventure selon les actions passées de l'utilisateur.Les entreprises voient donc dans ce domaine une occasion de se démarquer en leur permettantd'améliorer considérablement l'expérience de jeu et ainsi o�rir un attrait supplémentaire à leursproduits.

Le mode multijoueur de ces logiciels n'est pas délaissé non plus ! L'analyse du type de jeu desutilisateurs par un algorithme d'apprentissage automatique peut permettre au serveur d'équilibrerles équipes lors de parties multijoueurs et ainsi atténuer le handicap de joueurs qui se retrouveraient

1

Page 4: IFT3150 - Projet d'informatique Partitionnement des ...

autrement placés au sein d'équipes beaucoup plus expérimentées. Également, toujours dans undessein d'éviter le découragement des débutants, le jeu pourrait assister le néophyte en lui désignantles zones dangereuses et les comportements à risque qui auraient été préalablement appris parl'analyse des parties antérieures.

M. Bengio, nouveau titulaire de la Chaire industrielle CRSNG-Ubisoft en apprentissage de repré-sentation pour les jeux immersifs, travail avec son équipe à développer de nouveaux algorithmesdestinés aux jeux vidéos, et c'est dans cet environnement que se déroula mon stage.

1.3 Description du projet

Une quantité incroyable de données peut être récupérée d'une partie multijoueur, même lorsquecelle-ci ne dure que quelques minutes. Chaque seconde, l'état du match et son issue éventuelle sontdéterminés par la position des joueurs, leur déplacement (sont-ils en attente, en mouvement), leurniveau de vie, le temps depuis leur dernière attaque, etc. Sont-ils actuellement en train de tirer oude se faire tirer ? Sont-ils dans la mire d'un ennemi ? L'ont-ils vu ? Sont-ils à découvert, accroupis,couchés ? Une telle quantité de renseignements doit être triée et pré analysée pour en retirer desinformations signi�catives. De plus, de nouvelles données peuvent être générées à partir des entréesbrutes, qui s'ajoutent ainsi aux autres.

Pour obtenir des algorithmes de prédiction e�cace, il est nécessaire de reconnaître et de regrouperensemble les données semblables. Par exemple, que je sois dans le coin nord-est d'une petite pièce oudans le coin sud-est, les calculs seront grandement plus performants si je ne considère que la pièceoù je me trouve, négligeant la position exacte. En revanche, il est important de ne pas se priverainsi de caractéristiques indispensables. D'où le but de mon projet.

La position d'un joueur est une information essentielle pour un algorithme d'apprentissage. Parcontre, étant une mesure continue, les valeurs possibles sont in�nies et une discrétisation est requise.Mon projet consista donc à explorer di�érents algorithmes permettant de partitionner

les positions possibles d'un joueur sur la carte d'un jeu multijoueur pour plus tard utilisercette discrétisation dans de futurs algorithmes de prédiction.

1.4 Environnement de travail

Python fut le langage de programmation utilisé pour tous les scripts. J'ai également fortementeu recours à la librairie de calculs numériques NumPy [3] pour optimiser et rendre e�caces lesalgorithmes. Les calculs ont été e�ectués sur des ordinateurs du LISA possédant 8 processeurscadencés à 2.66 GHz et munis d'une mémoire vive de 8 Go.

1.5 Données utilisées

Pour ses recherches, le LISA possède un jeu de données d'un peu plus de 58 000 échantillons. Cesinformations proviennent d'une séance multijoueur dans le jeu d'Ubisoft Rainbow 6:Vegas 2 qui aété jouée il y a quelques mois et qui opposait sur une même carte près d'une vingtaine d'employésde la compagnie. Chaque échantillon contient la valeur moyenne de plus de 700 caractéristiques

2

Page 5: IFT3150 - Projet d'informatique Partitionnement des ...

(la position de chaque utilisateur, sa vitesse, ses munitions, ses points de vie, etc.) sur une périoded'environ une seconde.

Rainbow 6:Vegas 2 est un jeu d'Ubisoft de type First Person Shooter (jeu de tir à la premièrepersonne) où le joueur incarne un soldat d'un commando d'élite. Le mode solo mise plus sur latactique que la fusillade simple, mais le mode multijoueur oppose quant à lui des équipes cherchantà s'éliminer et repose plus sur la vitesse.

Le décor de la partie est constitué de deux niveaux (�gure 1). Deux escaliers permettent de monterà l'étage supérieur, mais les concurrents peuvent également descendre au premier en sautant du toitou d'une fenêtre. Également, des cordes permettent de monter et de descendre le long des murs.

Fig. 1 � Le premier et le deuxième étage du niveau

La première partie du stage consista surtout à développer divers scripts en Python permettant decharger ces données et d'e�ectuer quelques opérations de bases : le tri, le groupement, la recherche,etc.

Par la suite, ayant été informé que le premier échantillon de chaque partie était peu �able, jedéveloppai un script éliminant les indésirables et sauvegardant l'ensemble dans un nouveau formatréutilisable. Le nouveau jeu de donnée contient 57 095 échantillons de 710 caractéristiques. La �gure2 montre toutes les positions enregistrées par le jeu pour tous les échantillons restants.

3

Page 6: IFT3150 - Projet d'informatique Partitionnement des ...

Fig. 2 � Les positions de tous les échantillons sur le premier et le deuxième étage

Une fois les di�érents outils permettant de travailler avec ces données complétés, je pus commencerl'analyse des algorithmes d'agrégation, dont le premier fut A�nity propagation.

2 A�nity propagation

2.1 Description et utilité pour le projet

L'algorithme d'A�nity Propagation [1] permet de trouver, parmi un ensemble de vecteurs (unensemble de points) les vecteurs exemplaires, c'est-à-dire que pour chaque échantillon, un échantillonmodèle est trouvé parmi ceux fournis en entrée. Donc le jeu de donnée peut se réduire à un sous-ensemble représentatif.

Pour e�ectuer son choix, l'algorithme nécessite en entrée une table de similarités. Cette table estconstituée, pour chacune des paires de points du jeu de données, d'une mesure indiquant le niveaude similarité entre les deux éléments. Plus cette valeur est grande, plus les points sont similaireset plus forte est la probabilité qu'un des points soit un représentant du second. Par exemple, pourpartitionner des positions selon leur emplacement spatial, une mesure de similarité pourrait être ladistance négative entre eux. Mais bien sûr, toute information peut être utilisée pour le calcul decette similarité. Le nombre de regroupements ne peut pas être spéci�é ni calculé avant l'exécutiondu script.

L'avantage de cette technique est que nous n'avons qu'à nous concentrer sur l'élaboration du calculde similarité. Également, contrairement au k-means, qui sera exploré plus tard, les emplacementsdes regroupements ne dépendent pas d'un pré positionnement initial des centroïdes.

4

Page 7: IFT3150 - Projet d'informatique Partitionnement des ...

2.2 Développement

L'implémentation de l'algorithme de A�nity Propagation utilisée fut celle du Probabilistic andStatistical Inference Group de l'University of Toronto. Ce programme binaire (les sources n'étantpas distribuées) prend en entrée un �chier de similarité et génère un �chier listant les exemplaires.Le �chier de similarité est un �chier texte où chaque ligne contient l'identi�cateur d'un point,l'identi�cateur d'un second et un nombre réel mesurant leur similarité. Le �chier généré contient pourchaque point une ligne contenant l'identi�cateur de son point exemplaire ; la ligne correspondant àun point exemplaire contenant son propre identi�cateur.

Ce programme implémente une variante particulièrement utile de l'algorithme : il accepte en en-trée une matrice creuse (sparse matrix ) de similarités, une matrice creuse étant une matrice danslaquelle de nombreux éléments sont identiques. Ceci permet de fournir un �chier texte ne conte-nant pas toutes les combinaisons de points possibles, les similarités manquantes étant considéréescomme −∞ (aucune similarité). À cause de la taille importante de mon jeu de données (plus de57 000 échantillons), un �chier texte composé de 57 0002 lignes aurait été trop volumineux pour lesystème de �chier et n'aurait pu être traité e�cacement par le programme (le programme exigeantla similarité entre A et B et celle entre B et A).

La similarité la plus simple pour des échantillons contenant un emplacement spatial est la distanceeuclidienne entre ceux-ci. En revanche, cette information seule n'est pas pertinente : on ignore ainsiles positions précédentes du joueur, son niveau de vie, s'il est blessé, en attaque, etc. Mais puisqu'ils'agissait d'une façon simple et relativement rapide de tester le programme et de véri�er l'utilité deses résultats, j'optai pour cette première mesure de similarité.

Je développai donc un script calculant la distance euclidienne entre chacun des points et générantun �chier qui servira d'entrée au programme. La librairie NumPy est extrêmement pratique ete�cace. Se voulant le plus possible un clone des fonctionnalités de Matlab, mais pour Python, letravail avec les vecteurs et les matrices est très simple et rapide. Par contre, même avec cet outil, ilm'était impossible de calculer la distance entre chaque paire de points d'une liste de plus de 57 000échantillons, la mémoire de l'ordinateur n'ayant pas de place pour une matrice de 57 000 x 57 000éléments (57 000 x 57 000 x 32 bits = environ 12 Go !).

J'ai donc dû trouver une solution pour calculer cette matrice de distances sans pénaliser les perfor-mances. Pro�tant du support des matrices creuses du logiciel, je décidai qu'il n'était pas nécessairede calculer la similarité entre deux points s'ils étaient séparés d'une distance plus grande qu'uncertain seuil. Je divisai donc la carte en carrés de la taille de ce seuil et, pour chacun des carrés, jecalculai la sous-matrice de distances de chacun des points de ce carré et des points des carrés adja-cents. Plusieurs de ces calculs étant redondants, j'optimisai comme il se doit le script a�n d'assurerles meilleures performances. Ces optimisations m'ont permis de calculer la distance entre toutes lespaires de points ayant à une distance inférieure au seuil en environ 40 secondes.

La deuxième partie du script génère le �chier de similarités, un �chier d'environ 17 000 lignes, cequi s'avéra être sans doute trop important pour obtenir des résultats pertinents, comme on le verradans la prochaine section.

5

Page 8: IFT3150 - Projet d'informatique Partitionnement des ...

2.3 Di�cultés

L'utilisation du logiciel ne fut pas comme je l'espérai.

Premièrement, je sou�ris du manque de documentations et de sa faiblesse des gestions d'erreurs. Lesrègles de formatage du �chier de similarité sont trop brièvement expliquées et il me fallut plusieurstests avec un ensemble de données réduit a�n de bien comprendre la structure attendue. Également,les concepteurs n'ont intégré qu'une faible gestion des erreurs et je me trouvai fréquemment confrontéà d'obscurs "segmentation fault". Je perdis donc beaucoup de temps avant d'obtenir les premiersrésultats.

Deuxièmement, le logiciel ne semble pas très stable avec un �chier de similarités de la taille obtenueci-dessus. Bien que les auteurs a�rment sur leur site internet avoir réussi à exécuter le programmesur des ensembles de données de l'ordre de celui que nous avons utilisé, je n'ai pas, de mon côté,réussi à obtenir un résultat utile avec le nôtre. Des résultats probants ont été obtenus sur des listesde points réduites, mais jamais sur le jeu complet.

L'algorithme est itératif et tente de faire converger une mesure de similarités entre les échantillons,mais l'implémentation abandonne lorsque le nombre d'itérations dépasse un certain seuil. Même enaugmentant considérablement ce seuil, je n'ai jamais réussi à le faire converger vers une solution.À cause d'un temps de calcul assez long pour chaque essai (environ 40 minutes) et des di�cultésexpliquées ci-dessus, je suggérai à M. Bengio d'abandonner cette voie et de commencer l'analysed'une autre solution. Je crois qu'il aurait été possible de faire fonctionner correctement le logiciel sij'avais eu plus de temps.

Avant de passer dé�nitivement à un autre algorithme, j'étudiai une implémentation en Python del'a�nity propagation. Malheureusement, celle-ci requérait de lui fournir une matrice de similaritésnon creuse de toutes les paires de points et nous avons vu plus haut qu'un tel tableau ne pouvaitêtre stocké dans la mémoire vive des ordinateurs du LISA. Il fut donc décidé de passer à l'analysede l'algorithme du k-means.

3 K-Means

3.1 Description et utilité pour le projet

L'algorithme de partitionnement k-means est une technique permettant de trouver K centroïdes, Kun entier fourni lors de l'initialisation, qui minimisent la somme des carrés de la norme de chaquevecteur au centroïde [2].

Une di�érence importante d'avec l'a�nity propagation est la possibilité de spéci�er le nombre deregroupements souhaités. Avec la technique précédente, le nombre de partitions était déterminéseulement durant l'exécution, alors que le k-means est initialisé avec cette valeur. Nous en tironsl'avantage de pouvoir facilement et directement contrôler la précision du partitionnement, ce quis'avère très utile pour déterminer le nombre optimal de groupes ainsi que pour optimiser les calculs.Par contre, une certaine automatisation est perdue : le nombre idéal de centroïdes pour une certainecarte ne sera sans doute pas le même pour une autre plus petite ou plus grande.

6

Page 9: IFT3150 - Projet d'informatique Partitionnement des ...

Les 710 caractéristiques déjà calculées pour chacun des échantillons ne sont pas toutes pertinenteset elles ne le sont sûrement pas toute avec le même poids, il fallait donc bien sûr sélectionner cellesqui seraient utiles pour ce que nous voulions faire. Encore une fois, j'ai e�ectué les premiers testsavec seulement les coordonnées spatiales de la position du joueur. La �gure 3 présente le résultatdu partitionnement pour 40 centroïdes en n'utilisant que la position comme vecteur. Le problèmeavec un vecteur uniquement composé de la position dans notre contexte est que l'algorithme departitionnement ne prend pas en compte les limites physiques du niveau : des murs empêchent ledéplacement direct entre certaines zones, les changements d'étage ne s'e�ectuent qu'à des endroitsprécis, etc. Donc deux emplacements peuvent être physiquement proches, mais étant séparés par unmur, ils ne devraient pas être considérés dans le même groupe.

Fig. 3 � K-means de 40 centroïdes en n'utilisant que la position spatiale

Il fallait donc fournir à l'algorithme d'autres caractéristiques. J'analysai deux possibilités.

7

Page 10: IFT3150 - Projet d'informatique Partitionnement des ...

3.2 Première caractéristique : indicateur temporel

3.2.1 Description

Pour rajouter une signi�cation supplémentaire aux regroupements, la trajectoire de l'utilisateurpeut être utilisée. Les positions précédentes d'un joueur et, lors de la "post" analyse, ses positionssubséquentes donnent beaucoup d'informations sur les régions semblables de la carte.

Pour ajouter du poids à cette information, j'ai tenté de créer une sorte d'indicateur temporel "rap-prochant" ensemble les échantillons d'une même trajectoire. Cette nouvelle caractéristique auraitdonc une valeur plus proche pour deux emplacements étant parcourus par le même joueur au coursd'une même partie.

3.2.2 Développement

Il est à noter que la trajectoire d'un joueur ne fait pas partie des 710 éléments du jeu de données etque j'ai dû développer un script déduisant cette information avant l'exécution du k-means.

Le script que je développai rajouta pour chacun des échantillons de l'ensemble une 711e carac-téristique : un indicateur de son rang dans la trajectoire. La première version n'associant qu'unevaleur séquentielle (0, 1, 2, 3) indiquant l'ordre du point dans la trajectoire, elle ne donna pas derésultats utiles, car le faible nombre moyen d'échantillons par trajectoire ne la rendait pas utile. Ladeuxième version incrémentait par bond de 1000 la valeur séquentielle à chaque nouvelle trajectoire.Par contre celle-ci restreignait trop les partitionnements résultants aux trajectoires. La troisièmeversion réduisait l'écart de chaque bond d'une trajectoire à l'autre à 10.

3.2.3 Résultats

Un des objectifs du projet était le découpage de la carte en "zone" d'emplacements. L'indicateurtemporel, dans la version que j'ai développée, n'a pas atteint ce but. En e�et, le regroupement despoints s'est e�ectué, mais dans une dimension qui n'était pas physique et qui négligeait trop lelien spatial qui unissait chaque échantillon. La représentation visuelle du partitionnement, telle quemontrée à la �gure 4, n'est qu'un nuage confus des groupes.

8

Page 11: IFT3150 - Projet d'informatique Partitionnement des ...

Fig. 4 � K-means de 40 centroïdes en utilisant l'indicateur temporel

Nous avons donc cherché à créer une nouvelle caractéristique pour le découpage qui serait plusproche des limites physiques de la carte.

3.3 Deuxième caractéristique : zone

3.3.1 Description

La façon la plus intuitive de séparer une carte en partitions est de la diviser selon ses zones "na-turelles". En e�et, il est logique de considérer que deux positions dans une même pièce peuventêtre réduites à seulement considérer la pièce en tant que telle, comme décrite dans l'introduction,certaines pièces plus grandes pouvant contenir plus d'une de ces aires logiques. Ceci permet derégler les problèmes rencontrés avec les méthodes précédentes : les points regroupés selon ces ré-gions respectent les limites physiques imposées par la carte et l'on obtient ainsi un regroupementvisuellement pertinent.

Le but était donc de rajouter à chaque échantillon, ainsi qu'à tout nouvel échantillon survenant en

9

Page 12: IFT3150 - Projet d'informatique Partitionnement des ...

temps réel, une nouvelle caractéristique indiquant la zone où le joueur se trouve. Par contre, unjoueur se trouvant dans l'embrasure d'une porte à la frontière de deux aires di�érentes apporte uneinformation supplémentaire : il se trouve dans une zone de transition entre les deux régions. Il fallaitdonc tenter de modéliser et d'ajouter ce renseignement aux caractéristiques, lorsque possible.

J'ai donc développé un script permettant de savoir la ou les zones actuelles d'un emplacement sur lacarte en respectant deux principales contraintes : il fallait que la détermination des aires en fonctionde la position soit très e�cace pour permettre l'utilisation en temps réel durant le jeu et il fallaitque ce soit développé dans le temps restant pour le stage !

3.3.2 Développement

La première étape fut de déterminer quelles étaient les zones logiques et leur délimitation. L'au-tomatisation de ce processus pour toute carte est un projet en elle-même, qui serait d'ailleurs uneexcellente utilisation de l'apprentissage automatique. Par contre, à cause du temps disponible, j'op-tai pour une dé�nition manuelle des zones.

Mon script utilise donc en entrée une image de format PNG indiquant toutes les aires pertinentesqu'un humain aura déterminées. Cette image possède une zone de couleur di�érente pour chacunedes régions. La �gure 5 montre l'image que j'ai générée pour les deux étages de la carte utilisée pourle projet.

Fig. 5 � Carte des aires du premier et du deuxième étage

Cette image est ensuite ajustée aux coordonnées réelles de la carte et une fonction retourne la zoneassociée à une position donnée. Bien qu'il ne faille pas négliger le temps requis pour le développement,cette étape ne fut pas complexe.

10

Page 13: IFT3150 - Projet d'informatique Partitionnement des ...

L'intérêt de cette caractéristique réside plus dans la possibilité de déterminer les zones de transitions.Ceci s'avère un peu plus compliqué. Encore une fois, nous aurions eu là un autre beau projet oùappliquer l'apprentissage automatique, mais pour la même raison, j'inclus cette information à l'imagePNG des aires. Des lignes noires (de un pixel de largeur) sont ajoutées à l'image aux endroits oùle changement de zone est possible, sur les portes par exemple (�g 6). Ceci est important, car nousvoulons restreindre les transitions aux emplacements où la carte permet e�ectivement de changerde zone : deux zones peuvent être voisines, mais le déplacement d'une à l'autre n'est peut-être paspossible.

Fig. 6 � Carte des aires incluant des zones de transition (lignes noires)

Les détails du script développé ne seront pas expliqués ici, car bien qu'un peu complexe à développer,il suit une logique assez simple. Disons seulement qu'il prend en paramètre cette image ainsi qu'unrayon pour la zone de transition et, qu'une fois l'image lue et analysée une première fois, il peutretourner en une fraction de seconde la ou les zones d'une position. Le calcul des zones pour unensemble de 31 000 échantillons prend moins de 10 secondes.

La �gure 7 montre les zones de transitions ainsi que leur poids relatif pour la carte de la �gure 6.

Par contre, ce script possède deux problèmes. Premièrement, il ne supporte pas totalement la dé-�nition de zones dans un environnement en trois dimensions. On pourrait enrichir le programmeen supportant di�érents étages à la fois, mais cela resterait une superposition de cartes en deuxdimensions. La carte possédant des cordes et des escaliers où un joueur peut se trouver à di�érenteshauteurs, un support 3D serait intéressant.

Deuxièmement, puisque cela ne s'appliquait pas pour la carte utilisée durant le projet et, encore unefois, par manque de temps, les zones de transitions ne modélisent que les changements entre seule-ment une ou deux zones, pas plus. Mais il est aisé d'imaginer une carte contenant des emplacementsdans une région transitant plus de deux aires di�érentes.

11

Page 14: IFT3150 - Projet d'informatique Partitionnement des ...

Fig. 7 � Zones de transitions et leur poids relatif (rayon de 10 pour la première image, rayon de 50pour la deuxième)

3.3.3 Résultats

Certains emplacements ne sont que dans une zone, d'autre dans deux. Pour pouvoir utiliser cetteinformation dans le k-means, un vecteur des zones fut rajouté au vecteur de la position a�n d'obtenirle vecteur des caractéristiques utilisé par l'algorithme. Le vecteur des zones contient, pour chaqueaire déterminée pour la carte, un nombre réel entre 0 et 1 indiquant à quelle proportion cette positionse trouve dans la zone. Les éléments de ce vecteur somment à 1. Le script possède un paramètrepermettant d'ajuster l'importance du vecteur des zones par rapport au vecteur de la position.

Les résultats obtenus correspondent plus aux résultats espérés. La �gure 8 montre le résultat d'unk-means avec 40 centroïdes sans utiliser les transitions, la �gure 9 montre le résultat en utilisant lestransitions.

12

Page 15: IFT3150 - Projet d'informatique Partitionnement des ...

Fig. 8 � Partitionnage avec k-means sans transitions

13

Page 16: IFT3150 - Projet d'informatique Partitionnement des ...

Fig. 9 � Partitionnage avec k-means avec transitions

4 Conclusion

Je n'ai malheureusement pas eu le temps de pousser plus à fond l'étude de ces méthodes de décou-page, et beaucoup resterait à faire. Les analyses suivantes pourraient porter sur le poids à donnerà la zone dans l'algorithme du k-means, le nombre optimal de centroïdes pour obtenir des zonespertinentes, le meilleur rayon des lignes de transitions, etc.

Il faudrait aussi véri�er l'utilité et l'e�cacité de l'apport de la zone dans d'autres algorithmesd'apprentissage automatique : une telle information ajoute-t-elle su�samment aux résultats ou n'est-elle qu'une complexité super�ue dans le calcul ? Également, a�nity propagation fut abandonné, maisseulement pour des raisons techniques. Une analyse plus profonde serait nécessaire pour déterminerles causes exactes des problèmes rencontrés et pour conclure si oui ou non cette technique s'appliquemal à un ensemble de données comme le nôtre.

Finalement, il pourrait être intéressant d'inclure en même temps les deux caractéristiques étudiéespour voir si des résultats intéressants pourraient être obtenus.

14

Page 17: IFT3150 - Projet d'informatique Partitionnement des ...

Références

[1] Brendan J. Frey and Delbert Dueck. Clustering by passing messages between data points.Science, 315 :972�976, 2007.

[2] Andrew Moore. K-means and hierarchical clustering - tutorial slides. http://www.autonlab.

org/tutorials/kmeans.html.

[3] Travis E. Oliphant. Guide to numpy. http://numpy.scipy.org/numpybook.pdf, 12 2008.

15