[PYTHON] Démineur d'apprentissage automatique avec PyTorch

introduction

Après vous être entraîné, essayez d'utiliser PyTorch pour apprendre automatiquement votre propre balayeur de mines. Il y a tellement de choses que je ne comprends pas, alors je prends des notes en étudiant diverses choses. Créez un mémo une fois et, si nécessaire, formatez-le plus tard.

Cible

Pour pouvoir effacer de manière stable le niveau débutant de la norme Windows (était) Démineur. Pour l'instant, visez un taux de réussite d'environ 90%.

Constitution

J'ai copié le DQN de ici. Ce n'est pas assez, donc c'est facile.

Le réseau utilise un modèle séquentiel. Le nombre de neurones dans la couche d'entrée (état $ s ) et la couche de sortie ( Q_ {s, a} $) est le nombre d'yeux sur la carte. Il y a deux couches cachées, et le nombre de neurones dans chaque couche est le nombre d'yeux sur la carte x SIZE_MAG. Je me demande si je devrais mettre à l'échelle le nombre d'yeux sur le tableau pour le moment (approprié)

ReLU est utilisé comme fonction d'activation, et Adam (taux d'apprentissage 0,001) est utilisé comme méthode d'optimisation.

Le balayeur de mines est mon propre travail. J'ai pensé que je ferais de mon mieux en capturant les images, mais le sujet principal n'est pas là. L'algorithme est omis.

Les récompenses sont les suivantes.

variable conditions
reward_win Jeu clair
reward_failed Échec du jeu
reward_miss Essayer d'ouvrir un carré déjà ouvert

Le progrès

Première fois

Tout d'abord, essayez de régler la taille du plateau sur 6x6 et le nombre de mines sur 5 pour voir si vous pouvez apprendre.

param


GAMMA = 0.99
NUM_EPISODES = 1000
CAPACITY = 10000
BATCH_SIZE = 200
SIZE_MAG = 8

reward_failed = -100
reward_win = 100
reward_miss = -1

Je peux gagner très rarement, mais j'ai l'impression de gagner par hasard. En regardant l'erreur, elle a été époustouflée à environ 4 chiffres en environ 2000 étapes. Ouais ... Même si vous regardez la simple somme des récompenses, vous essayez d'ouvrir uniquement les cases qui sont déjà ouvertes, et est-ce un problème avec les récompenses?

Deuxième fois

Alors fixez la récompense.

reward


reward_failed = -100
reward_win = 100
reward_miss = -10
reward_open = 1

award_open est une récompense donnée quand une nouvelle case est ouverte. L'erreur était plus calme qu'avant, mais elle a tremblé vers 10 heures.

nième fois

J'ai joué avec, mais la vibration et la divergence ne se sont pas arrêtées. Même si vous regardez le comportement, il essaie toujours d'ouvrir le carré déjà ouvert. Le Q-Network cible fixe sera introduit ...

Après une nuit ...

J'ai envisagé les possibilités suivantes.

Même si vous sélectionnez une cellule qui est déjà ouverte en tant qu'essai, si le jeu est terminé, l'erreur elle-même deviendra inférieure à 1. Lorsque la valeur de ε a été réduite (valeur initiale 0,5 → 0,2), l'erreur est devenue encore plus petite. (Environ 0,1-0,01) Cependant, comme le problème de la création d'un mini-lot n'a pas été résolu, nous allons implémenter la rediffusion d'expérience prioritaire. Le code est tel qu'il est

Même si j'essaye, ça ne marche pas. Eh bien, j'aurais aimé avoir une erreur de codage ( Même la cible Q-Network était toujours la valeur par défaut ...

Donc, en raison de sa réparation, cela n'a pas fonctionné. La récompense est-elle trop grande?

reward


reward_failed = -1
reward_win = 1
reward_miss = -1
reward_open = 1

Après tout, c'était inutile bébé ...

Tout à coup

J'ai appris à chaque fois sur différentes planches, Est-il possible d'apprendre pour une seule planche ...? → J'ai pu le faire. Environ 200 à 300 épisodes avant que le taux de victoire n'atteigne 90%. Il est mignon que le taux de gain soit de 90% dès que vous pourrez l'effacer une fois.

Alors pourquoi ne pas le changer une fois en 150 épisodes? → Je ne peux pas du tout gagner. Il semble qu'il soit entraîné par les données d'apprentissage passées.

Eh bien, revenons en arrière pour changer la planche à chaque fois!

Recommended Posts

Démineur d'apprentissage automatique avec PyTorch
Apprentissage automatique avec Pytorch sur Google Colab
L'apprentissage automatique appris avec Pokemon
Apprentissage automatique avec Python! Préparation
Commencer avec l'apprentissage automatique Python
Essayez le machine learning à la légère avec Kaggle
Apprentissage automatique
[Tutoriel PyTorch ⑤] Apprentissage de PyTorch avec des exemples (Partie 2)
J'ai essayé l'apprentissage automatique avec liblinear
Apprentissage automatique par python (1) Classification générale
SVM essayant l'apprentissage automatique avec scikit-learn
[Tutoriel PyTorch ⑤] Apprentissage de PyTorch avec des exemples (Partie 1)
Machine learning d'inspiration quantique avec des réseaux de tenseurs
Démarrez avec l'apprentissage automatique avec SageMaker
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Prédire la demande de puissance avec l'apprentissage automatique, partie 2
Amplifiez les images pour l'apprentissage automatique avec Python
Sklearn de données déséquilibrées avec apprentissage automatique k-NN
Apprentissage automatique avec python (2) Analyse de régression simple
Jouez avec PyTorch
Une histoire sur l'apprentissage automatique avec Kyasuket
Apprentissage automatique avec docker (42) Programmation PyTorch pour l'apprentissage en profondeur par Ian Pointer
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
Validation croisée avec PyTorch
À partir de PyTorch
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Construction d'environnement AI / Machine Learning avec Python
Exemple d'apprentissage automatique
[Python] Introduction facile à l'apprentissage automatique avec python (SVM)
[Super introduction à l'apprentissage automatique] Découvrez les didacticiels Pytorch
Apprentissage automatique à partir de Python Personal Memorandum Part2
Apprentissage automatique à partir de Python Personal Memorandum Part1
[Super introduction à l'apprentissage automatique] Découvrez les didacticiels Pytorch
J'ai commencé l'apprentissage automatique avec le prétraitement des données Python
Créer un environnement d'apprentissage automatique Python avec des conteneurs
Résumé du didacticiel d'apprentissage automatique
Utilisez RTX 3090 avec PyTorch
Apprendre Python avec ChemTHEATER 03
"Orienté objet" appris avec python
Apprentissage automatique sur le surapprentissage
Apprendre Python avec ChemTHEATER 05-1
Apprentissage automatique: supervisé - AdaBoost
Régression logistique d'apprentissage automatique
Machine de vecteur de support d'apprentissage automatique
Apprendre Python avec ChemTHEATER 02
Régression linéaire d'apprentissage automatique
Mémo du cours d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprentissage automatique (TensorFlow) + Lotto 6
Installer la diffusion de la torche avec PyTorch 1.7
Apprenez en quelque sorte le machine learning
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?
J'ai essayé de déplacer l'apprentissage automatique (détection d'objet) avec TouchDesigner
Machine learning facile avec AutoAI (partie 4) Jupyter Notebook