Le vénérable algorithme théorique du graphe du chemin le plus court A * et les améliorations ultérieures (par exemple, Hierarchical Annotated A *) est clairement la technique de choix pour la recherche de chemin dans le développement de jeux.
Au lieu de cela, il me semble simplement que RL est un paradigme plus naturel pour déplacer un personnage dans un espace de jeu.
Et pourtant, je ne connais aucun développeur de jeu qui ait mis en œuvre un moteur de recherche de cheminement basé sur l'apprentissage par renforcement. (Je ne déduis pas de cela que l'application de RL dans le pathfinding est 0, juste qu'elle est très petite par rapport à A * et à ses amis.)
Quelle que soit la raison, ce n'est pas parce que ces développeurs ne connaissent pas RL, comme en témoigne le fait que RL est fréquemment utilisé ailleurs dans le moteur de jeu.
Cette question n'est pas un prétexte pour donner un avis sur la RL en matière d'orientation; en fait, je suppose que la préférence tacite pour A * et al. sur RL est correct - mais cette préférence n'est pas évidente pour moi et je suis très curieux de savoir pourquoi, en particulier de quiconque a essayé d'utiliser RL pour trouver le chemin.
Réponses:
J'imagine que c'est parce que, comme vous ne tirerez aucune généralisation utile de la politique de tout autre problème que les problèmes de jouets, et que la fonction de récompense va ressembler étrangement à une heuristique A *, la perspective d'utiliser RL tend à ressembler à une véritable manière trop complexe et inefficace d'obtenir des résultats qui sont au mieux identiques à ceux d'A *, mais qui ne seront probablement pas aussi bons.
Cela peut être injuste pour RL, et si c'est le cas, j'aimerais savoir pourquoi, mais je ne vois vraiment rien pour indiquer cela.
Beaucoup d'entre nous se souviennent également de ce qu'était le pathfinding dans les jeux avant l'adoption généralisée de A *, et ne sont pas désireux d'infliger quoi que ce soit ressemblant à ces jours aux joueurs, ou d'en subir les conséquences sur le marché.
la source
Sans en savoir beaucoup sur RL, je vais essayer de répondre à votre question par d'autres questions:
À l'aide de RL, pouvez-vous déterminer s'il est possible d'atteindre le point A à partir du point B?
RL peut-il garantir un comportement de navigation reproductible / cohérent / testable?
Comment les besoins en temps d'exécution de la mémoire et du processeur se comparent-ils à A *? De même, combien pouvez-vous précalculer par rapport, disons, aux maillages de navigation?
Comment RL se comporte-t-il dans un environnement avec collision dynamique?
Dans quelle mesure est-il plus difficile de comprendre et de mettre en œuvre correctement la RL par rapport, par exemple, aux comportements de pilotage?
Existe-t-il de bons fournisseurs de middleware pour RL?
Peut-être que ces questions peuvent vous aider avec votre réponse.
la source
Je suis confus par la suggestion que RL est "un paradigme plus naturel". Je ne vois pas comment l'apprentissage par renforcement correspond au domaine problématique de manière aussi nette ou précise que la recherche graphique. Généralement, vous ne voulez pas qu'un agent apprenne - vous supposez qu'il connaît déjà l'itinéraire. Au lieu de cela, vous voulez qu'ils choisissent et utilisent l'itinéraire le plus direct disponible, et la recherche de graphiques facilite cela de manière presque optimale. Si vous deviez utiliser RL hors ligne pour calculer la meilleure direction à prendre à n'importe quel nœud donné pour une destination donnée, cela finirait par apporter largement l'équivalent de A *, sauf qu'il nécessiterait beaucoup plus de mémoire * et que les développeurs feraient très attention à s'assurer que tous les nœuds ont été explorés de manière adéquate pendant la formation. Et cette formation donnera juste une valeur que nous pouvons déjà très bien approcher avec l'équation de Pythagore, car nous savons à l'avance que le graphique obéit aux règles de distance euclidiennes. (Ce n'est bien sûr pas le cas pour toutes les situations où la recherche de graphes et / ou l'apprentissage par renforcement peuvent être utilisés.)
(En ce qui concerne le problème de mémoire: si vous aviez 1000 positions quantifiées possibles sur une carte, cela représente 1000 nœuds plus 1000 * M bords (où M est le nombre moyen de nœuds accessibles à partir de tout autre nœud.) Cela, plus l'heuristique, est suffisant pour A * pour fonctionner. Pour que l'apprentissage par renforcement fonctionne, au moins de la façon dont je l'envisage, vous auriez également besoin de 1000 entrées pour chacun de ces 1000 * M bords, pour marquer la valeur de récompense de suivre ce bord pour l'un des 1000 Cela représente beaucoup de données - et chaque bit doit être raisonnablement précis pour éviter les boucles, les détours ou les impasses.
la source
L'orientation est un problème relativement «résolu», RL ne l'est pas.
Avec A *, les développeurs peuvent créer des heuristiques rapidement et les améliorer au fil du temps. RL (je parle de Q-Learning, lorsque je fais référence à RL ici), prend le temps de calculer les meilleurs taux d'apprentissage et les meilleurs facteurs de réduction (temps qui vaut la peine d'être consacré à d'autres aspects du jeu).
la source
Cela dépend vraiment des types de jeu. Si tout dans le jeu est statique, il est plus efficace d'utiliser la recherche A *. Cependant, s'il y a d'autres joueurs humains se déplaçant dans la même zone, la recherche A * est un échec garanti. Une recherche * n'a aucune idée de la direction que prennent les autres joueurs. D'un autre côté, RL peut modéliser le comportement des autres joueurs et trouver un meilleur chemin qui prend en considération les mouvements des autres joueurs.
la source