Bonjour,
Je poste ici puisqu'il s'agit d'un sujet pluridisciplinaire.

Depuis quelque temps, j'expérimente plusieurs interfaces basé sur la wiimote. Je fait mes prototypes sous python avec un module qui utilise la liaison bluetooth. Depuis un moment je m'intéresse au réseaux de neurones. J'ai déjà utilisé des réseaux de neurones pour évaluer des grilles de puissance 4 pour un algorithme minimax.
Je souhaite utiliser cette technologie, non plus pour les intelligences artificielles, mais pour la coadaptation d'interface homme machine avec l'utilisateur.


Des études ont suggéré que le cerveau est capable d'utiliser un outil comme s'il appartenait au corps. Les aires motrices intègrent la position des membres, et plus particulièrement celle des mains, dans l'espace. Et si par exemple, on manie un bâton dans un espace limité, les aires motrices vont éviter les obstacles comme si le bâton appartenait au corps. Les manettes de jeux sont également maniées de manière "transparente" par le joueurs expérimenté : l'action anticipée sur l'avatar (voitures, ou autres) est inconsciemment traduite sur la manette.

La wiimote est intéressante pour cela car elle permet d'exploiter les mouvements dans l'espace grâce à ses accéléromètres. Sauf que vous l'aurez remarqué, la plupart des jeux n'utilisent pas toutes ses capacités. Les jeux extraient des données comme la norme de l'accélaration, l'inclinaison par rapport à l'accélération gravitationelle, et sans doute d'autres. Comme il n'y a pas de gyroscope dans la wiimote, il n'est pas possible de séparer simplement l'accélération réelle de la wiimote et celle du champ de gravité. En conséquence le gameplay est assez mécanique et limité.
Mon approche est donc d'insérer un système adaptatif entre la wiimote et la réalité virtuelle. Le but est que l'apprentissage coté machine et humain convergent tout deux vers un gameplay qui utilise au mieux les capacités de l'interface homme machine tout en contournant ses défauts.
La chaine neuromusculaire utilise des adaptations au niveau des aires motrices, en relation avec l'espace et l'intention de mouvement, et au niveau musculaire, en relation avec les contraintes squelettiques, la force à appliquer, etc. À l'opposé, en cas de blessures le cerveau est capable d'éviter les mouvements douloureux. Ces apprentissages à différents niveau évoluent ensemble et peuvent intégrer de nouveaux éléments comme une manette de jeux.
Plutôt que de contraindre le joueur à apprendre un gameplay préprogrammé, l'idée est d'utiliser ces mécanismes d'adaptation pour que le corps puisse conduire l'apprentissage du système adaptatif de l'IHM à l'extérieur de son système neuromusculaire comme si il en faisait partie intégrante. La réalitée physique de la manette de jeux est alors une "couche cachée" dont on ne connaît pas les caractéristiques.

C'est évidemment très subjectif comme concept, et c'est pourquoi je voudrais le tester. Pour commencer simplement je pensais à un cercle mobile dans lequel il faut placer le curseur en bougeant la wiimote.
Pour le système adaptatif, un réseau de neurone semble adapté. En entré, le réseau accepte le vecteur d'accélaration, et sort un vecteur de déplacement.
Le problème est d'avoir un réseau de neurone qui fonctionne en temps réel, c'est à dire que son état à un instant est déterminé par les entrées mais aussi par les états précédents. Je penssai à réinjecté des sorties de l'état précédent au niveau des entrés, mais cela pose problème pour l'apprentissage, et de plus je n'ai jamais vu cette solution utilisée. Il existe d'autres réseaux de neurones, comme ceux basé sur le modèle "integrate ans fire" qui semble plus adaptées, mais je les connais mal, et ils ne sont pas implémentés dans la bibliothèque que j'utilise (fann).
La technique d'apprentissage est délicate à choisir, car elle doit permette le coapprentisage en temps réel du réseaux de neurone et de l'utilisateur. La méthode d'évaluation de l'erreur est donc importante. On peut utilisé la progression vers le cercle (positive ou négative) mais aussi l'amplitude des mouvements du joueurs : plus ceci sont élevé, plus le joueur s'est énervé. Il faut aussi définir comment répartir l'erreur dans le temps : à quel instant l'erreur actuelle a été commise ? Et il faut la propager dans le réseau de neurone : quels neurones sont coupable de l'erreur, et quels neurones ont fait du bon travail ?

Bref, je connais pas suffisamment ce domaine pour faire les bons choix. Donc si vous avez des conseils (type de réseaux, situations et méthodes d'apprentisage, etc) et des avis, je suis preneur.
Je n'ai pas trouvé de réalisation de ce principe, mais peut-être que cela existe déjà ?


Merci