Familiarisez-vous à la programmation d'Intelligence Artificielle

STAY CONNECTED, FOLLOW CODINGAME NOW

Une définition simple de l'intelligence artificielle donnée par Scholkoff, R.J. (1990) est "un domaine d'étude qui cherche à expliquer et émuler un comportement intelligent sous la forme de process informatiques". Il y a beaucoup de domaines où l'IA est utile comme par exemple la robotique, le machine learning, la vision par ordinateur, etc.

Agents

Une approche technique courante de l'IA est le concept d'agent rationnel. Un agent est un programme qui évolue dans un environnement spécifique, qui peut percevoir à travers des capteurs et agir via des acteurs, et prendre des décisions en fonction du degré de connaissance qu'il a de son environnement, de manière rationnelle.



Représentation simple du fonctionnement d'un agent

Environnements

Chaque environnement a ses propres caractéristiques. Les plus courantes sont :
Connu vs Inconnu : le fait que vous sachiez ou non comment l'environnement peut réagir. Exemple : un nouveau-né évolue dans un environnement inconnu, qu'il n'a jamais vu (c'est pourquoi il teste absolument tout de cet environnement).

Accessible vs Inaccessible: le fait que les agents aient ou non accès à toutes les variables de l'environnement qui peuvent être utilisées pour prendre une décision. Exemple : quand vous jouez au poker, vous ne connaissez pas les cartes des autres joueurs, à moins que vous n'ayez triché ou que vous soyez Rain Man. Il s'agit ici d'un environnement inaccessible.

Déterministe vs Non-déterministe: le comportement de l'environnement est défini logiquement vs statistiquement. Quand vous jouez aux échecs, vous êtes sûr(e) qu'une action aura une conséquence donnée sur le jeu (déterministe). Lorsqu'il s'agit d'un robot qui se déplace, vous n'êtes absolument pas sûr(e) du comportement des moteurs (non déterministe).

Statique vs Dynamique : le fait que l'environnement change ou non alors que l'agent prend une décision. Dans le cas d'une voiture qui conduit toute seule, c'est typiquement le cas si quelqu'un surgit sur la route alors que la voiture réfléchissait à ses prochaines actions. C'est un environnement dynamique.

Discret vs Continu : c'est l'équivalent d'un nombre fini ou infini d'actions possibles pour un agent.

Pour créer un agent, il est très important de savoir à quel type d'environnement vous êtes confronté(e). Cela vous permettra d'être guidé(e) et d'éviter les erreurs les plus courantes. Assurez-vous toutefois d'avoir compris l'environnement à 100% avant d'écrire la moindre ligne de code.

CodinGame & l'I.A.

Nous sommes convaincus qu'on apprend mieux par la pratique (et mieux encore quand la pratique est aussi amusante). Toutefois, le processus de création d'un agent d'I.A. est complexe parce que vous devez programmer l'environnement en premier. Vous devez anticiper toutes les communications entre l'environnement et les agents (acteurs et capteurs). Vous devez développer tous les comportements possibles de l'environnement. Comme si vous deviez poser l'ensemble des règles des échecs, par exemple. Et si vous voulez montrer quelque chose qui a l'air sympa à regarder, vous devrez en plus développer une représentation graphique de l'environnement. Cela peut vite devenir une tâche lourde et complexe.

Nous avons créé un système qui permet aux développeurs de se concentrer sur la programmation d'un agent. L'objectif premier est de simplifier le processus de développement en passant directement de l'apprentissage à la pratique.

 PokerChip Race Multiplayer Game



L'agent CodinGame

Les acteurs et les capteurs sont simulés via des entrées et sorties standards (input et output). Un agent peut ainsi modifier l'environnement en affichant des actions dans la sortie standard. L'agent peut aussi accéder à tous ses capteurs en lisant l'entrée standard.

Voici le code d'un agent en Python, disponible sur CodinGame:
import sys, math


# read global information about the environment on sensors

LX, LY, TX, TY = [int(i) for i in raw_input().split()]


while 1:   #infinite loop of sense / act
   E = int(raw_input()) # Read new information on the environment on sensors before making a decision
   
   # Intelligent (or not) processing

   print "SE" # Act on the environment with actors (here move to south east)



Nous avons essayé de lever au maximum les barrières liées au langage de programmation en proposant plus de 20 langages de programmation différents sur la plate-forme.

L'environnement sur CodinGame


Nous avons créé un système abstrait capable de prendre en compte tous les cas possibles d'environnements. Cela nous permet de créer pour vous des environnements complets et de gérer leurs comportements. Vous avez accès à une description complète des réactions de chaque environnement. Nous nous occupons également de toutes les communications entre l'environnement et les agents. Pour mesurer la performance de votre agent, nous avons créé des jeux multijoueurs qui fournissent des classements automatisés en fonction des performances des IA des autres joueurs. Pour visualiser l'environnement,  nous avons développé un visualiseur qui propose une représentation graphique de l'environnement. Notre objectif est de rendre le débugging plus facile et la programmation d'IA encore plus agréable!

 Platinum Rift Multiplayer Game

Exemples

Sur CodinGame.com, nous proposons deux catégories de jeux:
  • Jeux Solo : 1 agent dans un environnement donné
  • Jeux Multijoueurs : 1 agent ou plus (multi-agents) et d'autres joueurs à battre

Jeux Solo :
  • Power of Thor : connu, accessible, déterministe, statique, discret
  • Mars lander Level 1 : connu, accessible, déterministe, statique, continu
  • The Last Crusade - Level 3 : connu, inaccessible, déterministe, statique, discret

Jeux multijoueurs :
  • The Great Escape : connu, accessible, déterministe, statique, discret, un seul agent
  • Platinum Rift 2 : connu, accessible, déterministe, statique, discret, agents multiples
  • Platinum Rift : connu, accessible, déterministe, statique, discret, agents multiples
  • Poker Chip Race : connu, accessible, déterministe, dynamique, continu, agents multiples
  • Games of Drones : connu, accessible, déterministe, statique, continu, agents multiples
  • Tron Battle : connu, accessible, déterministe, statique, discret, un seul agent

Le futur

Nous avons la volonté de créer toujours plus de jeux afin de couvrir toutes sortes d'environnements (non-déterministes, inconnus...). Toutes les idées qui nous permettraient de nous inspirer sont donc les bienvenues : n'hésitez pas à nous les communiquer !
Nous réfléchissons aussi à créer une plate-forme pour apprendre la programmation d'IA tout en s'entraînant en live. Est-ce qu'apprendre l'IA de cette manière vous intéresserait ?
Enfin, voici quelques liens pour en savoir plus sur l'IA et sur la programmation des agents :
https://www.udacity.com/
http://www.amazon.com/Artificial-Intelligence-Modern-Approach-Edition/dp/0136042597

1 commentaire :

  1. Et un excellent cours sur edX : https://www.edx.org/course/artificial-intelligence-uc-berkeleyx-cs188-1x-0

    RépondreSupprimer