ou la vie quotidienne d'un chercheur à Tokyo

Articles tagués ‘Technologie’

Intelligence artificielle et StarCraft

Mine de rien j’ai pas mal de chose à dire, alors comme ça risque d’être un petit peu long, pour plus de clarté je divise le post en 3 chapitres : Algo génétique pour build order, Concours d’IA pour Starcraft 1 et Appel à participation (à ne pas rater).

Algorithme génétique pour build order

StarCraft est bourré de termes techniques, et comme je pense que la plupart d’entre vous ne les connaissent pas, je vais les définir au fur et à mesure. Alors, c’est quoi un build order (BO) ? Comme son nom l’indique, c’est une séquence ordonnée de constructions. Rappelez-vous, j’en parle dans le billet précédent : un BO est une séquence d’ouverture dans StarCraft, c’est-à-dire les actions à faire en début de parties afin de pouvoir appliquer le plus rapidement possible la ou les stratégies choisies (je rappelle que SC est un jeu temps réel : être plus rapide que son adversaire est la clé de la victoire).

L’un des lecteurs de ce blog (JIM pour ne pas le nommer), également joueur de SC1 et 2, m’avait envoyé le lien d’un billet très intéressant sur un programme optimisant le BO de la race Zerg (l’une des trois races disponibles) en utilisant un algorithme génétique. En gros un algo génétique, c’est un algorithme d’optimisation qui va reproduire le schéma de sélection naturel. Pour cela, vous prenez une population d’individus (ici des BO satisfaisant le but à atteindre, à savoir une certaine stratégie donnée). Chaque individu est par nature plus ou moins fort (plus un BO se termine tôt, plus il est « fort »), cette force innée étant caractérisée par des propriétés génétiques (la séquence d’actions du BO). On garde les individus les plus forts et qui satisfont le but à atteindre, puis on renouvelle avec eux la population par croisements génétiques (la reproduction) où intervient parfois une modification aléatoire (mutation génétique). On répète l’opération (sélection, croisements, mutations) un certain nombre de fois, et on peut espérer arriver au bout d’un temps t à un super poulain pure race.

Pour info, c’est cet algo génétique qui a découvert le BO optimal pour la stratégie 7-Roaches sur SC2 (je vais pas rentrer dans les détails), l’une des stratégie les plus redoutable lorsque l’on joue Zerg. Et le BO trouvé par cet algo demande d’appliquer des séquences d’actions contre-intuitives (comme produire 2 overlords de suite), qui sont reconnue être en général sous-optimales. Bref, pas sûr qu’un être humain aurait trouvé ce BO par lui-même, ou alors il aurait fallu une bonne dose d’intuition et de créativité.

J’ai moi-même lancé cet algo sur mon PC. C’est un programme en java pas rapide (pléonasme) mais efficace qui a mis 1h30 à trouver le BO optimal 7-Roaches (et même une seconde plus optimal que le BO connu) en testant près de 3 millions de BO différents (555 BO par seconde) sur un dual core 2,66Gh avec 3Go de ram. Pour les curieux, le BO est le suivant :

@0:00    M:50    G:0    L:3    S:6/10    BuildDrone
@0:13    M:51    G:0    L:2    S:7/10    BuildDrone
@0:15    Spawned:    Larva+1
@0:17    Spawned:    Drone+1
@0:24    M:52    G:0    L:2    S:8/10    BuildDrone
@0:30    Spawned:    Drone+1
@0:30    Spawned:    Larva+1
@0:34    M:54    G:0    L:2    S:9/10    BuildDrone
@0:41    Spawned:    Drone+1
@0:45    Spawned:    Larva+1
@0:51    Spawned:    Drone+1
@1:00    Spawned:    Larva+1
@1:05    M:204    G:0    L:3    S:10/10    BuildSpawningPool
@1:13    M:55    G:0    L:3    S:9/10    BuildDrone
@1:28    Spawned:    Larva+1
@1:28    M:100    G:0    L:3    S:10/10    BuildOverlord
@1:30    Spawned:    Drone+1
@1:43    Spawned:    Larva+1
@1:43    M:105    G:0    L:3    S:10/10    BuildOverlord
@1:46    M:26    G:0    L:2    S:10/10    BuildExtractor
@1:53    Spawned:    Overlord+1
@1:54    M:52    G:0    L:2    S:9/18    BuildDrone
@1:58    Spawned:    Larva+1
@2:08    Spawned:    Overlord+1
@2:10    Spawned:    Spawning Pool+1
@2:11    Spawned:    Drone+1
@2:13    Spawned:    Larva+1
@2:16    Spawned:    Extractor+1
@2:17    M:152    G:0    L:3    S:10/26    BuildRoachWarren
@2:17    M:2    G:0    L:3    S:9/26    MineGas
@2:17    M:2    G:0    L:3    S:9/26    MineGas
@2:19    Mining:     +1 on gas
@2:19    Mining:     +1 on gas
@2:27    M:51    G:12    L:3    S:9/26    BuildDrone
@2:42    Spawned:    Larva+1
@2:44    Spawned:    Drone+1
@3:12    Spawned:    Roach Warren+1
@3:12    M:241    G:75    L:3    S:10/26    BuildRoach
@3:12    M:166    G:50    L:2    S:12/26    BuildRoach
@3:12    M:91    G:25    L:1    S:14/26    MineGas
@3:12    M:91    G:25    L:1    S:14/26    BuildRoach
@3:14    Mining:     +1 on gas
@3:27    Spawned:    Larva+1
@3:27    M:91    G:28    L:1    S:16/26    BuildRoach
@3:39    Spawned:    Roach+1
@3:39    Spawned:    Roach+1
@3:39    Spawned:    Roach+1
@3:42    Spawned:    Larva+1
@3:42    M:90    G:32    L:1    S:18/26    BuildRoach
@3:54    Spawned:    Roach+1
@3:57    Spawned:    Larva+1
@3:57    M:89    G:35    L:1    S:20/26    BuildRoach
@4:09    Spawned:    Roach+1
@4:12    Spawned:    Larva+1
@4:12    M:88    G:39    L:1    S:22/26    BuildRoach
@4:24    Spawned:    Roach+1
@4:27    Spawned:    Larva+1
@4:39    Spawned:    Roach+1
Satisfied.
Number of actions in build order: 32
—Final Output—
At time: 4:39
Minerals: 147    Gas:      65    Supply:   24/26
Drones: 10
Overlords: 3
Roaches: 7
Hatcheries: 1
Gas Extractors: 1
Spawning Pools: 1
Roach Warrens: 1

Concours d’IA pour Starcraft 1

À la mi-novembre de cette année était organisé un concours d’IA de StarCraft 1, à l’Université de Santa Cruz, Californie, lors de la conférence Artificial Intelligence and Interactive Digital Entertainment (AIIDE 2010). La page du concours est ici. Ce concours ouvert à tout le monde proposait 4 types de tournois : deux de micro-gestion, un de matchs à actions limitées et enfin un tournoi de matchs classiques, ce dernier étant bien entendu le plus intéressant car le plus complet et complexe. Les IA étaient tous différents, certains se focalisant sur la même stratégie (très mauvaise idée, et pourtant…), d’autres cherchant à s’adapter en fonction de la situation à travers de l’analyse et de l’apprentissage automatique. Le vainqueur du tournois est l’IA nommée « Overmind » de l’Université de Berkeley (même si le concours est ouvert à tous, c’est a priori les universitaires travaillant dans l’IA qui sont les mieux placés pour le remporter). Mais franchement, je trouve qu’ils ne méritait pas de gagner. Il y a un gros travail dessus, là c’est clair : il s’agit toute de même d’un projet de 10 personnes, plus un chef de projet épaulé par deux chefs adjoints. Mais leur IA a remporté tous ses matchs en appliquant la même technique qu’aucune IA n’a su contrer (harass mutalisks puis mass muta), sauf lors d’un match qu’il a perdu dû à une close position de son adversaire qui lui a rasé sa base par un run-by zealots avant qu’Overmind n’ait eu le temps de faire sa spire. Bref, rien de bien excitant au final. En plus, leur projet est complètement fermé : pas de code source disponible, ce qui je trouve est un comble pour ce genre de compétition, le but premier étant quand même de faire avancer la recherche en appliquant des résultats d’IA sur un « environnement commercial robuste » qu’offre StarCraft (pour reprendre les termes de la conf.) Pas d’articles ni de pre-print (pré-article si vous préférez) pour exposer à la communauté de chercheurs comment ils ont procédé et choisi les diverses facettes de leur IA. J’ai écris au chef du projet pour lui demandé s’il avait des pre-prints à m’envoyer ; je n’ai reçu aucune réponse. Tout ça sent à plein nez la licence propriétaire pour leur programme. Ils espèrent quoi ? Vendre leur IA à Blizzard ?

Franchement, on peut mieux faire. Et comme disait un autre lecteur de ce blog qui se reconnaitra, « si on peut, on doit ».

Appel à participation

L’année prochaine, la conf AIIDE 2011 sera organisée à l’Université d’Alberta au Canada, et inclura une nouvelle édition du concours d’IA pour SC 1. Je suis sans doute un peu fêlé de m’intéresser de si près à ce concours (celui de type 4, le plus complet) alors que j’ai déjà assez peu de temps libre, mais je me sens vraiment motivé. Question : il y a t-il quelques autres fêlés qui voudraient se lancer dans l’aventure ? On a un an pour faire une « kick-ass AI ».

J’ai quelques idées, notamment pour injecter de l’optimisation à travers des méthodes de recherche locale stochastiques (c’est-à-dire aléatoires), ce sur quoi je travaille. D’où mon projet Aiur (Artificial Intelligence Using Randomness). Avec un nom comme ça, je pense que la race choisie sera Protoss. ^^

Si comme moi vous sentez que ce projet vous enflamme, écrivez-moi un mail (plutôt qu’un commentaire sur ce billet) à l’adresse suivante : florian.richoux_arobase_gmail.com (en remplaçant bien sûr _arobase_ par le fameux symbole). Le projet est ouvert à tout le monde. Si jamais je ne vous connais pas, merci de me préciser en quelques mots vos compétences en IA théorique et/ou en algorithmique et/ou en programmation C++ (car oui, ça sera en C++). Je me réserve tout de fois le droit de rejeter une candidature si j’estime que vous n’avez pas le profil (mais j’accepte tous mes potes, car ça peut être délire de faire ça tous ensemble).

Que l’on soit bien d’accords, j’ai quelques idées de comment faire (et j’ai un plan de bataille pour l’organisation, en fait tout est déjà prêt), mais il reste quasiment tout à définir. Toutes idées sont les bienvenues, alors j’espère vous voir nombreux à répondre à cet appel ! (NB : je suis sur Kyoto aujourd’hui et demain, mais pas d’affolement je répondrai aux mails à partir de mercredi)

Publicités

My life for Aiur

Comme vous le savez, j’ai plein de choses en retard dont je dois vous parler. La cérémonie du thé, le petit parc mignon juste à côté de chez nous, les magnifiques couleurs d’automne dont le Japon est en train de se vêtir, les pâtisseries de Mari, …

Je ne vais vous parler de rien de tout ça. Du moins, pas maintenant ni la prochaine fois. Ce post est une première partie d’une chose dont j’aimerai parler et qui est en train de me passionner en ce moment, et ça va au delà du jeu.

Le lecteur averti aura compris de quoi je vais parler grâce au titre. C’est bel et bien de StarCraft, jeu dont j’ai déjà parlé à une occasion (à savoir ici). Aujourd’hui on va se concentrer sur StarCraft 2 (disons SC2). J’ai craqué fin septembre, me suis pris la version US du jeu (il n’est pas vendu au Japon), n’est pas le temps d’y jouer mais apprécie beaucoup de regarder des parties commentées de joueurs renommés, voire de professionnels. Car oui, il y a des professionnels de SC, (essentiellement des Coréens, ce jeu étant un phénomène de société là-bas) s’entraînant quotidiennement comme les sportifs de hauts niveaux, reçoivent un salaire par un sponsor, et deviennent entraîneurs / managers lorsqu’ils ne peuvent assurer le rythme des compétitions.

Je sais que faire d’un jeu vidéo son métier est considéré comme incongru (pour rester soft) par beaucoup de personnes, là où personne ne s’offusque de voir des joueurs professionnels d’échecs par exemple. On me dit : « la comparaison est mal choisie, c’est exagéré ». Ben pas du tout. De mon point de vue, StarCraft est le jeu d’échecs moderne.

Ou plutôt, je trouve SC plus proche du jeu de go (où il existe également des pros principalement au Japon, en Corée et en Chine). Il y a de flagrantes différences entre ces deux jeux, à commencer par le fait que le premier est en temps réel (les deux joueurs jouent simultanément), le second est du tour par tour. Et aussi, SC est un jeu à l’information incomplète (on ne sait pas en permanence ce que fait l’adversaire) alors que chaque joueur d’échecs et de go voit l’intégralité du plateau de jeu. Nous avons donc deux jeux de nature complètement opposée à première vue.

Là où SC rejoint les échecs, et surtout le go, c’est par la stratégie. Comme au go, il y a une notion de gestion locale et de stratégique globale (appelé micro-gestion et macro-gestion pour SC). La première concerne la gestion du combat, à savoir le placement des pierres (des unités) au go (à SC). La seconde, plus complexe, correspond à l’occupation spatiale du plateau (de la carte). Comme au go, les parties dans SC sont divisées en trois différentes phases de stratégie : le début, le milieu et la fin de partie. Comme au go, pour le début de partie il existe des ouvertures, suites d’actions optimales suivant la et les stratégies que l’on pense appliquer.  En général on apprend ces ouvertures (appelées build orders) par cœur. Ces ouvertures existent car, comme au go, ces mouvements optimaux sont plus faciles à étudier en début de partie (situation de départ identique, stratégie à court terme identique), ils sont donc bien connus. Comme au go, StarCraft demande de l’anticipation, de lire dans le jeu de l’adversaire, de l’adaptation, ainsi que de la créativité à partir d’un certain niveau. Une composante supplémentaire dans SC est la réactivité, puisqu’il s’agit d’un jeu en temps réel. Plus je m’intéresse à ce jeu, et plus je constate le potentiel infini qui se cache derrière…

J’ai déjà exposé ce point de vue à certains d’entre vous qui m’ont judicieusement demandé « Ok, mais en quoi SC2 est plus le go moderne qu’un autre jeu récent de stratégie, que Civilisation 5 par exemple ? ». Très bonne question. D’un point de vue stratégique, rien en fin de compte. Mais ce qui fait la différence entre SC2  et d’autres jeux comme Civ. 5, c’est la communauté. On a vu se développer  en une dizaine d’année pour SC des tournois nationaux et internationaux, des ligues professionnels, des équipes nationales et internationales dirigées par un manageur et coachées par un entraîneur, ainsi qu’une véritable structure d’e-sport (comme ça s’appelle), animée par des joueurs qui ont préféré se tourner vers l’analyse et se sont imposés comme commentateurs de matchs, à l’instar des journalistes sportifs que nous entendons à la TV pour les matchs de foot, de rugby. Certains de ces commentaires sont tellement  reconnu par Blizzard (l’entreprise qui développe SC) et la communauté qu’on fait appel à eux pour commenter en live des matchs de  grands tournois. Toute cette effervescence au départ d’amateurs commence à se cristalliser vers un professionnalisme cadré. Pour vous dire que ça devient bien au delà d’un simple jeu.

Comme annoncé, le prochain post (lundi prochain) sera sur le même sujet. Mais il devrait être plus long, et surtout croyez-moi, beaucoup plus intéressant. Mais aussi, il débouchera sur un appel à participation pour un projet. :-p

Le théorème de StarCraft

A l’occasion de la sortie internationale de StarCraft 2 aujourd’hui même, j’avais envie de vous faire partager la petite découverte de la semaine.

StarCraft est l’un des jeux auquel j’ai le plus joué durant mon adolescence. Certains lecteurs de ce blog se souviendront sans doute de nos combats épiques à travers ce jeu à l’occasion de nuits voire weeks-end organisés de jeux en réseau.

Il y a une semaine à peine, je suis tombé sur ce court article en science cognitive faisant un parallèle entre les mathématiques et StarCraft (ainsi que Final Fantasy X), voulant illustrer de manière plus globale les similitudes de comportements intellectuels et d’apprentissage qu’impliquent les maths et les jeux vidéos, et propose d’utiliser ces derniers afin de renforcer les capacités et l’appétit mathématique des étudiants. Autant vous le dire tout de suite, cet article est d’une vacuité affligeante. Mais j’ai trouvé néanmoins l’idée assez amusante pour vous en parler ici et vous proposer de perdre 5 minutes de votre vie à le lire (ne prenez pas peur, l’article commence par un résumé en anglais mais le reste est en français) : « mon prof de maths est un zerg ».

Beaucoup plus fun encore (et juste en plus !), mais bien moins accessible aux non-avertis, un article démontrant que le jeu « Lemmings » est NP-complet : « je ne verrai plus ces bestioles de la même manière ».

Enjoy!

Les oreilles de Mickey

Un bail que je n’avais rien écris ici ! Il est grand temps d’y remédier.

Il y a deux mois (ah ouais, déjà quand même), Mari et moi nous sommes allés à Disney Sea, juste à côté de Disneyland Tokyo, parc de la célèbre souris qui a l’eau comme thème principal. Ceux qui me connaissent bien savent que je ne suis pas un grand fan des parcs d’attraction, mais Mari si, donc on y est quand même allé. ^^’ Et puis c’était à 30 minutes en bus de notre ancien logement, donc on (elle) voulait en profiter avant que l’on ne déménage.

On y a donc passé toute une journée, pratiquement de l’ouverture à 10h jusqu’à pratiquement la fermeture à 22h. Et ben je dois avouer que c’était pas mal du tout, et plusieurs choses m’ont impressionné.

(suite…)

La recherche et les nouveaux moyens de communication

Je constate aujourd’hui, mardi 30 mars, à quel point les nouveaux moyens de communication changent non seulement l’accès aux récentes découvertes mais également notre manière de faire de la recherche.

Aujourd’hui est le grand jour pour le super collisionneur LHC du Cern, qui va propulser l’une contre l’autre deux particules subatomiques et mesurer les conséquences de cet impact. Tous les physiciens de la planète (et pas qu’eux) sont en ébullition et retiennent leur souffle devant leur écran, en suivant en direct la progression des étapes de l’expérience via une vidéo live sur la page web du Cern et en lisant les nouveaux commentaires sur twitter apparaissant toutes les 10 minutes. C’est comme si on était en Suisse avec eux.

Autre exemple : il y a 5 jours, Lance Fortnow mettait en live sur twitter les résultats d’une démonstration constructive concernant une nouvelle borne inférieure du lemme local de  Lovasz. J’ai donc eu connaissance de ce résultat 3 heures après son exposition lors d’un séminaire qui s’effectuait à l’autre bout de la planète.

Enfin, l’existence de nombreux blogs de chercheurs parlant de leurs nouvelles découvertes et proposant parfois une mise en commun des efforts. C’est le cas du blog de Terry Tao (voir ma liste) et du projet Polymath regroupant de nombreux mathématiciens réfléchissant ensemble sur des problèmes plutôt que chacun dans leur coin, et proposant non plus de publier nominativement mais sous le label « Polymath ».

La recherche en Mathématiques il y a 100 ans, c’était des mathématiciens qui s’envoyaient entre eux des lettres, à travers le monde (enfin, l’Europe à l’époque), sur leurs réflexions personnelles. Aujourd’hui la communication instantanée permet d’être informé en temps réel et de travailler ensemble quelque que soit la distance. Inutile de dire que cette communication change à jamais le visage de la recherche et permet de déployer un potentiel jusque là inaccessible.

Le début de la gloire

Souvenez-vous, il y a presque 2 mois j’avais exposé la liste des blogs et sites que je consultais le matin en arrivant au bureau, et parmi eux se trouvait le webcomic « PhD Comics » dessiné par Jorge Cham, ancien chercheur en robotique reconverti dans le dessin, faisant des petites histoires courtes sur le doctorat et la recherche en général. Il vit principalement en donnant des exposés dans des universités sur la vie en thèse, en dédramatisant tous les soucis et problèmes que l’on peut rencontrer durant cette période. Ses visites d’universités donnent souvent lieu à une petite BD.

En décembre 2008, j’ai co-organisé sa première venue en France, à l’X. Et nous n’avons pas échappé à la règle : il nous a croqué, y compris votre serviteur ! Vous pourrez retrouver la première partie de la BD ici. Facile de me reconnaitre, vous verrez ^_^ (indice pour ceux qui me connaissent mal physiquement : je n’ai pas beaucoup de cheveux…). La seconde partie est ici. Cette fois il y a carrément mon prénom, donc si vous ne me reconnaissez toujours pas je ne peux rien faire pour vous…

Blogs du matin

Le matin, j’ai mon petit rituel de vérifier mes mails (mais ça maintenant je le fais dans le métro ; vive l’iphone ^^) et de parcourir rapidement mes blogs et sites pour voir ce qu’il y a de nouveau. Je fais donc un « tout ouvrir dans des onglets » sur mon répertoires « blogs » dans mes marques-pages firefox, et voici de qui s’affiche dans l’ordre alphabétique :

(suite…)