[PYTHON] Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]

Ceci est une suite de cet article. Cette fois, Othello sera fini.

Othello-De la troisième ligne de "Implementation Deep Learning" (1) http://qiita.com/Kumapapa2012/items/cb89d73782ddda618c99 Othello-De la troisième ligne de "Implementation Deep Learning" (2) http://qiita.com/Kumapapa2012/items/f6c654d7c789a074c69b Othello-De la troisième ligne de "Implementation Deep Learning" (3) http://qiita.com/Kumapapa2012/items/3cc20a75c745dc91e826

Dans l'article précédent, lorsque Leaky ReLU était utilisé, le taux de victoire était stable pour la carte 6x6 Othello, mais il y avait une grande fluctuation dans la carte 8x8 et le taux de victoire était sur une tendance à la baisse. J'ai de nouveau changé la pente de Leaky ReLU et je l'ai fait cette fois.

Le code est ici. ~~, mais le code que j'ai mis n'est pas la version Leaky ReLU. Je le mettrai à jour ultérieurement (^^; ~~ Ajouté. https://github.com/Kumapapa2012/Learning-Machine-Learning/tree/master/Reversi

Changement de pente Leaky ReLU

Pour la carte Othello 8x8, le résultat de l'exécution avec Leaky ReLU avec pente = 0,2 affiché la dernière fois est le suivant. image

Cette fois, le résultat de l'exécution avec Slope = 0,1 est le suivant. image

En définissant Slope = 0,1, il semble qu'il a convergé, mais la forte baisse du taux de gain autour de Eps.20000 n'est pas résolue. Ceci n'est [pas vu dans les résultats du tableau 6x6](http://qiita.com/Kumapapa2012/items/3cc20a75c745dc91e826#leaky-relu-%E3%82%92%E4%BD%BF%E3%81%A3% E3% 81% A6% E3% 81% BF% E3% 81% 9F), une situation intéressante.

Quelle est la cause de la dépression?

Pour être honnête, vous ne pouvez pas le dire simplement en regardant les fluctuations du taux de gain. Je ne sais pas si c'est un problème de taux d'apprentissage. Tracez la sortie de perte (erreur carrée entre les données de l'enseignant et les données calculées) après 5000 étapes pour obtenir des indices. image

Cela semble être lié au taux de victoire. Je vais le répéter. image

En regardant le graphique, il semble qu'il y ait un lien entre l'augmentation de la perte et la forte baisse du taux de gain. Si vous essayez d'interpréter et de classer cette image en amateur:

a) Environ 16 000 (480 000 pas): la perte est très faible, mais le taux de gain est également faible (50%). À partir de là, le taux de gain commence à augmenter. À ce stade, ε de ε-Greedy est déjà la valeur la plus basse de 0,001, et la position de la trame est déterminée par la valeur Q. b) Près de 16000-22000 (660k pas): la perte augmente légèrement à mesure que le taux de victoire augmente. Et à partir du milieu, le taux de victoires a fortement chuté. Dans le modèle à ce stade, plus vous apprenez, plus vous perdez. Le modèle semble s'effondrer. c) Environ 22000-27000 (720k étapes): Une valeur de perte relativement faible se produit constamment, et l'état de taux de victoire faible continue. Si vous ne gagnez pas, il n'y a pas de récompense, donc il n'y a presque pas de récompense pendant cette période. d) Près de 27000-30000 (900k étapes): la perte augmente à nouveau. L'apprentissage semble bien se dérouler cette fois, et le taux de réussite augmente. e) Près de 30000-35000 (1050k étapes): une fois que la perte diminue, le taux de victoire continue d'augmenter. Il semble que l'apprentissage se déroule bien. f) Près de 35000-45000 (1350 000 pas): la perte augmente à nouveau. La dernière fois, c'était la vallée du deuxième taux de victoire. Cependant, cette fois, le taux de gain ne diminuera pas. La perte fonctionne-t-elle dans une direction positive pour la formation ou la correction de modèle? g) Près de 45000-48000 (1440k pas): perte réduite. Le taux de gain est également stable. h) Après 48000: la perte augmente à nouveau. Cependant, il y a un signe que le taux de gain convergera.

L'expansion des pertes est un signe que le modèle va changer, c'est-à-dire que l'agent grandira. Si l'interprétation de cette situation est correcte, on peut dire que l'agent grandissait dans la mauvaise direction autour de b). Cette fois, j'ai enregistré tous les aspects sous forme de texte, alors revenons sur cette hypothèse. Au début, examinons les aspects suivants, qui sont susceptibles de faire la différence entre la victoire et la défaite.

[[ 0  0  0  0  0  0  0  0]
 [ 0  0  0 (0) 0 (0)(0) 0]
 [ 0 (0)(0)-1 (0)-1  0  0]
 [(0)-1 -1 -1 -1  1  0  0]
 [ 0  0  0  1  1  0  0  0]
 [ 0  0  0  0  1  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]]

C'est la phase dans laquelle l'agent placera une pièce. Dans cette phase, l'agent (bien que difficile à voir) peut placer les pièces entre parenthèses. Une recherche de cet aspect avec pcregrep l'a trouvé dans 622 épisodes sur 50000 [^ 1].

Entre 20000 et 30000 épisodes, qui ont atteint la vallée des taux de victoire, cette phase s'est produite cinq fois: Les chiffres entre parenthèses sont les victoires et les pertes de cet épisode.

21974(win) 22078(lose) 22415(lose) 29418(lose) 29955(win)

Dans la situation ci-dessus, les quatre sauf 29955 ont frappé comme suit. Que ce soit déplacer A.

[[ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0 -1  0 -1  0  0]
 [(1) 1  1  1  1  1  0  0]
 [ 0  0  0  1  1  0  0  0]
 [ 0  0  0  0  1  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]]

29955 frappé: Appelons ce mouvement B.

[[ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0 -1 (1)-1  0  0]
 [ 0 -1 -1 -1  1  1  0  0]
 [ 0  0  0  1  1  0  0  0]
 [ 0  0  0  0  1  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]]

Je n'ai pas vu tous les épisodes depuis 29955, mais j'ai touché B à chaque phase que j'ai vue, jusqu'à 50000, où le taux de victoire est élevé et stable.

Strike A est le coup qui peut prendre le plus de pièces dans cette situation. Lorsque le taux de gain était le plus bas, l'action pour prendre cette pièce s'est produite 4 fois sur 5, il est donc probable que l'agent à ce moment-là était plus susceptible de prendre l'action de toujours prendre plus de pièces. .. Cependant, l'action de prendre beaucoup de cadres au début n'est pas bonne pour la stratégie d'Othello. Dans les premiers stades, les pièces qui peuvent être prises sont les plus petites, comme le déménageur B, et la pièce aussi éloignée que possible du «bord» sera efficace plus tard. Cependant, l'action de «prendre beaucoup de cadres» était une action que l'agent d'Othello autodidacte a mis en œuvre pour qu'elle soit toujours effectuée à un taux de 80%. [^ 2] L'agent semble avoir appris ce mouvement.

Puisque Othello est un jeu qui part du centre du plateau, on pense que l'action de toujours prendre beaucoup de pièces conduit à prendre activement le "bord" loin du centre dans les premiers stades. Il est probable que le fait de prendre activement le "bord" a déclenché une chance de prendre le "klaxon", l'environnement a pris le "klaxon", et l'agent a continué à perdre. En effet, avant que la perte ne continue, la probabilité que l'agent et l'environnement prennent le «coin» était presque la même pendant la période d'environ 50% de taux de victoire, mais dès que l'agent avait tendance à prendre le «bord», l'environnement Cependant, on peut dire que la probabilité de prendre le «coin» a augmenté et que l'environnement est devenu plus facile à gagner. Plus la planche est large, plus il est probable que les "coins" seront supprimés lorsque les "bords" seront supprimés. Par conséquent, il est probable que la planche 6x6 n'ait pas eu de creux, et seule la planche 8x8 a eu un creux. ..

Par conséquent, je voudrais conclure que cette diminution du taux de gain est due au fait que l'agent a été influencé par des comportements spécifiques dans l'environnement et est tombé dans un état similaire au «sur-ajustement» et a appris la mauvaise stratégie. .. Mais comment interpréter l'effet de la pente de Leaky ReLU? .. .. J'aimerais continuer à étudier et à réfléchir.

Quoi qu'il en soit, pour éviter une telle situation, comme Alpha Go, il est nécessaire d'étudier avec supervision à l'avance et d'étudier suffisamment avant de jouer contre l'environnement, et cela pousse dans la mauvaise direction et la récompense diminue. Si c'est le cas, il peut être utile de dire, par exemple, d'augmenter le ε de ε-Greedy afin d'accélérer le métabolisme du modèle.

À la fin

J'aimerais faire autre chose, alors je vais terminer Othello cette fois.

Que se passe-t-il si Othello crée un problème par lui-même et le met dans l'apprentissage par renforcement? J'ai commencé par l'intérêt. Comme ce n'est pas le but de créer un agent Othello fort, nous ne faisons aucun apprentissage avec un enseignant pour l'agent, mais uniquement pour l'environnement que nous avons créé de manière appropriée. A partir de cet état «vierge», le comportement environnemental a une forte influence sur le modèle d'apprentissage intensif qui ne traite que de l'environnement. Au contraire, cela n'a rien à voir avec cela. Pour cette raison, nous avons vu le résultat que si la mise en œuvre de l'environnement est un peu mauvaise comme cette fois, l'apprentissage de l'agent peut temporairement aller dans une direction involontaire. Cependant, on peut voir que l'agent se corrige et augmente finalement le taux de gain. Cette auto-correction est-elle la vraie valeur d'un apprentissage amélioré? [^ 3] C'est un peu une interprétation émotionnelle, mais même avec des parents (environnements) étranges, les enfants (agents) peuvent grandir correctement. J'ai l'impression que (^^;. [^ 4]

Dans cet Othello, il a fallu plus de 10 heures pour la carte 6x6 et plus de 24 heures pour la carte 8x8 pour exécuter 50000 épisodes. De plus, la carte 8x8 ne fonctionne pas chez moi Pascal GeForce 1050GTX (2 Go) à cause d'un manque de mémoire, je dois donc l'exécuter sur le Maxwell Tesla M60 (8 Go) sur Azure NV6, qui est un peu plus lent que chez moi, grâce à Azure ce mois-ci. Le montant facturé a déjà dépassé 10 000 yens. Il est difficile d'essayer plus. C'est aussi l'une des raisons pour lesquelles on quitte Othello cette fois.

Oh, je veux un 8 Go 1070 ou 1080 GTX. .. .. [^ 5]

Les références

● Méthode gagnante Othello / Reversi ○ http://mezasou.com/reversi/top27.html

[^ 1]: Tous les aspects sont d'environ 1,6 million. Il semble que la même situation se reproduira davantage si elle est tournée ou transposée, mais pour l'instant. [^ 2]: 2nd [^ 3]: La prémisse principale est que la récompense est raisonnable. [^ 4]: Cette façon de penser peut être un jet d'un point de vue professionnel, mais pardonnez-moi de ne pas avoir été étudiée (transpiration) [^ 5]: Ce serait génial!

Recommended Posts

Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]
Othello-De la troisième ligne de "Implementation Deep Learning" (3)
Othello-De la troisième ligne de "Implementation Deep Learning" (2)
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
Visualisez les effets de l'apprentissage profond / de la régularisation
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
Notes d'apprentissage depuis le début de Python 2
Chapitre 2 Implémentation de Perceptron Ne découpez que les bons points de Deeplearning à partir de zéro
Python vs Ruby "Deep Learning from scratch" Chapitre 4 Implémentation de la fonction de perte
L'histoire de l'apprentissage profond avec TPU
Implémentation du modèle Deep Learning pour la reconnaissance d'images
Apprentissage profond appris par mise en œuvre (segmentation) ~ Mise en œuvre de SegNet ~
Apprentissage profond à partir de zéro
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Application de Deep Learning 2 à partir de zéro Filtre anti-spam
Techniques pour comprendre la base des décisions d'apprentissage en profondeur
Apprendre en profondeur à partir des bases mathématiques Partie 2 (pendant la fréquentation)
Pip la bibliothèque d'apprentissage automatique à partir d'une extrémité (Ubuntu)
Apprentissage profond à partir de zéro 1 à 3 chapitres
Deep running 2 Réglage de l'apprentissage profond
[Partie 4] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 3] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Apprendre des bases Manuel sur l'intelligence artificielle Chapitre 5 Problèmes de fin de chapitre
[Partie 2] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
À en juger par l'image du chien Shiba en apprenant en profondeur si c'est mon enfant (1)
Chapitre 3 Réseau de neurones Ne découpez que les bons points de Deeplearning à partir de zéro
J'ai considéré la méthode d'apprentissage automatique et son langage d'implémentation à partir des informations de balise de Qiita
Deep learning / Deep learning from scratch 2 Chapitre 4 Mémo
Deep learning / Deep learning made from scratch Chapitre 3 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 5 Mémo
Capturer GeneratorQuitter et détecter la fin de l'itération du côté du générateur
Existence du point de vue de Python
Chapitre 1 Introduction à Python Découpez uniquement les bons points de Deeplearning à partir de zéro
Apprentissage profond appris par l'implémentation 1 (édition de retour)
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 8 Mémo
Écrivez vos impressions sur l'édition du framework Deep Learning 3 créée à partir de zéro
Deep learning / Deep learning made from scratch Chapitre 5 Mémo
Deep learning / Deep learning made from scratch Chapitre 4 Mémo
Implémentation du modèle de reconnaissance d'images d'apprentissage en profondeur 2
Deep learning / Deep learning from scratch 2 Chapitre 3 Mémo
Mémo d'apprentissage profond créé à partir de zéro
[Détection d'anomalies] Essayez d'utiliser la dernière méthode d'apprentissage à distance
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 10-2) Valeur initiale du poids
Évaluer la précision du modèle d'apprentissage par test croisé de scikit learn
Résumé des pages utiles pour étudier le framework d'apprentissage profond Chainer
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 6 Mémo
J'ai essayé de créer Othello AI avec tensorflow sans comprendre la théorie de l'apprentissage automatique ~ Implémentation ~
Tutoriel d'apprentissage en profondeur de la construction d'environnement
Déterminer s'il s'agit de mon enfant à partir de l'image du chien Shiba par apprentissage profond (3) Visualisation par Grad-CAM
À propos de l'ordre d'apprentissage des langages de programmation (de débutant à intermédiaire) Partie 2
Graphique de l'historique du nombre de couches de deep learning et du changement de précision
J'ai essayé d'appeler l'API de prédiction du modèle d'apprentissage automatique de WordPress
Traitement de la voix par apprentissage profond: identifions qui est l'acteur vocal à partir de la voix
[Deep Learning from scratch] Implémentation de couche de la fonction softmax à l'erreur d'entropie croisée
J'ai essayé l'histoire courante de l'utilisation du Deep Learning pour prédire la moyenne Nikkei
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2