Vous avez rencontré un problème courant dans les implémentations de Q-Learning : les valeurs état-action deviennent trop élevées. Explorons ce problème et proposons une solution.
Comprendre le problème
Votre agent tente de maximiser la récompense totale attendue. Cependant, votre fonction de récompense renvoie des récompenses positives pour la poursuite du jeu (0,5). Cela incite l'agent à prolonger les jeux indéfiniment, ce qui entraîne une récompense totale attendue illimitée et des valeurs Q excessivement élevées.
Solution : ajuster la fonction de récompense
Pour résoudre ce problème , ajustez votre fonction de récompense pour fournir des récompenses négatives à chaque pas de temps. Cela pénalisera l'agent qui prolonge les jeux et l'encouragera à rechercher une stratégie gagnante. Par exemple, vous pouvez utiliser le système de récompense suivant :
Considérations d'implémentation
Dans votre code, vous utilisez agent.prevScore comme récompense pour l'action d'état précédente. Cependant, il devrait s'agir de la récompense réelle reçue, et non de la valeur Q. Effectuez cet ajustement dans votre code :
<code class="go">agent.values[mState] = oldVal + (agent.LearningRate * (reward - agent.prevScore))</code>
Comportement attendu
Après avoir mis en œuvre ces modifications, vous devez observer le comportement suivant :
Gardez à l'esprit que les algorithmes d'apprentissage par renforcement présentent parfois des comportements non intuitifs, et comprendre les principes sous-jacents est crucial pour développer des solutions efficaces.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!