De Markov, Processus de prise de Décision: la valeur de l'itération, comment ça fonctionne?
J'ai lu beaucoup de choses sur De Markov, Processus de Décision (à l'aide de la valeur de l'itération) dernièrement, mais je ne peux pas obtenir ma tête autour d'eux. J'ai trouvé beaucoup de ressources sur Internet /livres, mais ils ont tous l'utilisation de formules mathématiques qui sont bien trop complexe pour mes compétences.
Puisque c'est ma première année au collège, j'ai trouvé que les explications et les formules fournies sur le web, utiliser les notions et les termes qui sont trop compliqué pour moi et ils supposent que le lecteur sait certaines choses que je n'ai tout simplement jamais entendu parler.
Je veux l'utiliser sur une grille 2D (rempli avec des murs(inaccessible), des pièces de monnaie(souhaitable) et les ennemis qui se déplacent(qui doit être évité à tous les frais)). L'objectif est de collecter toutes les pièces sans toucher les ennemis, et je veux créer une IA pour le joueur principal à l'aide d'un Processus de Décision de Markov (MDP). Voici comment il a partiellement ressemble (à noter que le jeu liés à l'aspect n'est pas tellement un souci ici. J'ai juste très envie de comprendre MDPs en général):
De ce que je comprends, une grossière simplification de MDPs est qu'ils peuvent créer une grille qui tient dans quelle direction nous devons aller (une sorte de grille de "flèches" pointant vers où nous devons aller, départ à une certaine position sur la grille) pour arriver à certains objectifs et d'éviter certains obstacles. Spécifique à ma situation, cela voudrait dire qu'il permet au joueur de savoir dans quelle direction aller ramasser les pièces et éviter les ennemis.
Maintenant, à l'aide de la MDP termes, cela voudrait dire qu'il crée un ensemble d'états(la grille) qui détient un certain nombre de politiques(l'action à exécuter -> en haut, en bas, à droite, à gauche) pour un certain état(position sur la grille). Les politiques sont déterminées par l ' "utilité" des valeurs de chaque etat, qui sont eux-mêmes calculés en évaluant combien y arriver serait bénéfique à court et à long terme.
Est-ce correct? Ou suis-je complètement sur la mauvaise voie?
J'aimerais au moins savoir ce que les variables de l'équation suivante représenter dans ma situation:
(tiré du livre "l'Intelligence Artificielle - Une Approche Moderne" de Russell & Norvig)
Je sais que s
serait une liste de tous les carrés de la grille, a
serait une action spécifique (haut /bas /droite /gauche), mais quid du reste?
Quelle serait la récompense et les fonctions de l'utilitaire de mise en œuvre?
Ce serait vraiment génial si quelqu'un connaissait un simple lien qui montre le pseudo-code pour implémenter une version de base avec des similitudes avec ma situation dans un très lent, parce que je ne sais même pas par où commencer ici.
Je vous remercie pour votre temps précieux.
(Note: n'hésitez pas à ajouter /supprimer des balises ou me dire dans les commentaires si je devrais donner plus de détails à propos de quelque chose ou quelque chose comme ça.)
- Puis-je vous demander pourquoi le downvote? Je voudrais savoir quel est le problème avec la question. Je vous remercie.
Vous devez vous connecter pour publier un commentaire.
Oui, la notation mathématique peut le faire paraître beaucoup plus compliqué qu'il ne l'est. Vraiment, c'est une idée très simple. J'ai mis en place un la valeur de l'itération applet de démonstration que vous pouvez jouer avec pour faire une meilleure idée.
En gros, disons que vous avez une grille 2D avec un robot en elle. Le robot peut essayer de se déplacer vers le Nord, le Sud, l'Est, l'Ouest (ceux sont les actions a) mais, parce que sa roue de gauche est glissante, lorsqu'il tente de progresser vers le Nord, il y a seulement un .9 probabilité qu'il va finir à la place Nord de celui-ci alors qu'il y est un .1 probabilité qu'il va finir à la place de l'Ouest de celui-ci (de même pour les 3 autres actions). Ces probabilités sont capturés par le T() fonction. À savoir, T(s,A,s') ressemble à:
Vous définissez ensuite la Récompense à 0 pour tous les etats, mais 100 pour l'objectif de l'état, qui est, à l'emplacement où vous voulez que le robot pour obtenir de.
Ce que la valeur de l'itération n'est sa commence par donner un Utilitaire de 100 à l'objectif de l'état et de 0 à tous les autres etats. Ensuite, à la première itération de cette 100 de l'utilité est distribué 1-l'étape de l'objectif, de sorte que tous les états qui peuvent arriver à l'objectif de l'état en 1 étape (tous les 4 places juste à côté) permettra d'obtenir une certaine utilité. À savoir, ils auront une Utilité égale à la probabilité qu'à partir de cet état, nous pouvons arriver à l'objectif déclaré. Nous continuons ensuite itération, à chaque étape, nous déplacer l'utilitaire dos 1 pas de plus loin de l'objectif.
Dans l'exemple ci-dessus, disons que vous commencez avec R(5,5)= 100 et R(.) = 0 pour tous les autres états. Donc, le but est d'arriver à 5,5.
Sur la première itération nous avons mis
R(5,6) = gamma * (.9 * 100) + gamma * (.1 * 100)
parce que sur 5,6 si vous allez plus au Nord il y a un .9 probabilité de se retrouver à 5,5, tandis que si vous allez à l'Ouest il y a un .1 probabilité de se retrouver à 5,5.
De même pour (5,4), (4,5), (6,5).
Tous les autres états rester avec U = 0 après la première itération de la valeur de l'itération.
Je recommande l'utilisation de Q-learning pour votre mise en œuvre.
Peut-être vous pouvez utiliser ce post que j'ai écrit comme une source d'inspiration. C'est un Q-l'apprentissage de la démo avec le code source Java. Cette démo est une carte avec 6 champs et l'IA apprend d'où il devrait aller de chaque etat pour obtenir la récompense.
Pas une réponse complète, mais de clarifier les remarque.
La état est pas une seule cellule. L'état contient les informations ce qui est dans chaque cellule pour toutes les parties concernées cellules à la fois. Cela signifie un état de l'élément contient les informations dont les cellules sont solides et qui sont vides; ceux qui contiennent des monstres, où sont les pièces de monnaie; où est le joueur.
Vous pourriez peut-être utiliser une carte à partir de chaque cellule de son contenu comme de l'état. Ce n'est ignorer le mouvement de monstres et les joueurs, qui sont probablement très importants, aussi.
Les détails dépendent de la façon dont vous voulez le modèle de votre problème (décider de ce qui appartient à l'état et qui, par la forme).
Alors une politique des cartes à chaque état, à une action comme à gauche, droite, saut, etc.
Vous devez d'abord comprendre le problème qui est exprimé par un MDP avant de penser à la façon dont les algorithmes comme la valeur de l'itération de travail.
Je sais que c'est un assez vieux post, mais je suis tombé sur elle lors de la recherche pour les MDP des questions, je ne veux noter (pour les gens à venir ici) un peu plus de commentaires sur lorsque vous avez déclaré que "s" et "a" ont été.
Je pense que pour un vous avez absolument raison, c'est votre liste de [haut,bas,gauche,droite].
Cependant, pour s c'est vraiment l'emplacement de la grille et de s' agit de l'emplacement, vous pouvez aller à.
Ce que cela signifie est que vous chercher un etat, et ensuite, vous choisissez un particulier s' et passer par toutes les actions que vous pouvez prendre pour que sprime, que vous utilisez pour déterminer ces valeurs. (ramasser un max de personnes). Enfin, vous allez pour la prochaine s' et faire la même chose, lorsque vous avez épuisé toutes le s' valeurs alors vous trouver le max de ce que vous venez de terminer la recherche.
Supposons que vous avez choisi une cellule de la grille dans le coin, vous voudriez en avoir seulement 2 états, vous pourrait éventuellement passer à (en supposant coin en bas à gauche), en fonction de la façon dont vous choisissez de le "nom" de votre état, nous pourrions, dans ce cas, supposons qu'un état est une coordonnée x,y, de sorte que votre état actuel s est de 1,1 et votre s' (ou s le premier) de la liste est x+1,y et x,y+1 (pas de diagonale dans cet exemple) (La Somme de la partie qui va sur tous les s')
Aussi vous ne l'avez indiqué dans votre équation, mais le max est de l'un ou de l'action qui vous donne le max, donc tout d'abord à vous de choisir le s " qui vous donne le maximum et puis à l'intérieur de vous de choisir l'action (au moins c'est ma compréhension de l'algorithme).
Donc, si vous aviez
Vous allez choisir x,y+1 comme s', mais alors vous aurez besoin de choisir une action qui est maximisée, ce qui est dans ce cas gauche pour x,y+1. Je ne sais pas si il y a une subtile différence entre juste de trouver le nombre maximum et de trouver de l'état, puis le nombre maximum mais peut-être quelqu'un un jour peut préciser que pour moi.
Si vos mouvements sont déterministes (sens si vous dire d'aller de l'avant, vous aller de l'avant avec 100% de certitude), alors il est assez facile, vous avez une action, mais s'ils sont non déterministes, vous avez un mot à dire 80% de certitude, alors vous devriez envisager d'autres actions qui pourrait vous y arrivez. C'est le contexte de glissement de la roue que Jose mentionnés ci-dessus.
Je ne veux pas porter atteinte à ce que les autres ont dit, mais juste pour donner quelques informations supplémentaires.