Cela fait longtemps, mais c'était incroyable qu'AlphaGo remporte le Champion du Monde trois fois de suite. Inspiré par ça, cette fois j'ai fait une IA pour Othello, le même jeu de société.
La raison pour laquelle j'ai choisi Othello est que je n'ai pas assez de ressources informatiques! !! Parce que. Dans le développement d'AlphaGo, 50 GPU représentent une quantité énorme de 3 semaines, mais c'est absolument impossible pour un tel individu. J'ai donc choisi Othello, qui a un petit go board et des règles simples.
J'ai parlé d'AlphaGo, mais la technologie utilisée est différente d'AlphaGo. AlphaGo combine un apprentissage profond supervisé, un apprentissage par renforcement profond et une exploration d'arbre de Monte Carlo, mais cette fois, nous n'utilisons que l'apprentissage profond supervisé. Il ne fonctionne pas bien, mais au contraire, l'algorithme est si simple que même ceux qui ne connaissent pas les deux derniers je viens d'entendre (je comprends l'apprentissage par renforcement profond, mais pas la recherche d'arbre de Monte Carlo), l'apprentissage en profondeur. Vous ne pouvez le comprendre qu'avec la connaissance de! Dans l'explication suivante, on suppose qu'il y a une certaine compréhension de l'apprentissage profond (j'ai lu l'apprentissage profond fait à partir de zéro).
J'ai utilisé les données du Site de l'Association Française d'Othello comme données de partition musicale d'Othello. Depuis que j'ai utilisé un format mystérieux appelé WTHOR, il était assez difficile de traiter les données.
Le réseau neuronal a utilisé l'état de la partition musicale (0: aucun, 1: pierre propre, 2: pierre de l'adversaire) pour les données d'entrée et la probabilité de chaque mouvement pour les données de sortie. Pour les données de l'enseignant, j'ai utilisé la position de la main que j'ai frappée. Je pense que c'est difficile à comprendre avec juste des mots, alors je vais vous montrer un diagramme.
Comme AlphaGo, j'ai utilisé uniquement la couche de convolution ** et non la couche entièrement connectée. En effet, la sortie est des données bidimensionnelles, il est donc préférable de la laisser sous la forme CNN. ** Softmax ** a été utilisé pour la couche de sortie, et Conv-> BN-> ReLU ** pour les autres couches. Il est recommandé d'introduire la normalisation par lots (BN) car l'apprentissage sera stable.
Pour la fonction de perte, nous avons utilisé l'erreur d'entropie croisée pour orthodoxe. J'ai utilisé ** Adam ** comme algorithme d'optimisation. L'apprentissage est plus rapide et le résultat final est meilleur que SGD.
Le code source tant attendu est répertorié sur github. Voir le code source pour les paramètres détaillés.
La performance de l'IA est ... Il semble que les règles soient généralement comprises, mais malheureusement elles ne sont pas devenues très strictes. La cause a probablement été supervisée et n'a utilisé que l'apprentissage profond.
Cependant, en raison de contraintes de temps, je n'ai étudié que pendant environ deux heures et demie sur un PC avec seulement un processeur, donc il peut encore être plus fort.
Alors, ** Vous cherchez quelqu'un qui a un GPU! ** **
Cela pourrait être plus fort si vous étudiez avec GPU pendant environ une journée.
Recommended Posts