(PostScript 16/08/2017)
Cet article est basé sur cette connaissance de l'époque. Il contient des erreurs évidentes, j'espère donc que vous pourrez vous y référer modérément.
Il est encore un peu tôt à la mi-février, mais c'est une température à deux chiffres chaque jour et c'est le printemps. Je pense que les nouvelles de "Sakurasaku" ont commencé à atteindre les gens qui regardent ici. ~~ D'un autre côté, j'ai perdu 5 emplois consécutifs. ~~
À propos, il y a environ trois semaines, "Google's Go AI'AlphaGo' remporte le joueur de jeu professionnel pour la première fois de l'histoire" Des nouvelles choquantes sont arrivées. Le Go est considéré comme un problème non résolu, et je venais de parler de «cela pourrait être utilisé pour l'évaluation» l'autre jour, j'ai donc été très surpris d'apprendre qu'il avait déjà été réglé en octobre de l'année dernière. Et en même temps, j'y ai pensé.
«N'y a-t-il pas beaucoup de problèmes qui ont déjà été résolus simplement parce que nous ne savons pas? 』\
Cela peut paraître surprenant, mais en fait, certains jeux ont déjà apprendre un meilleur comportement que les humains. .. (Ici est très détaillé) Le Deep Q-Network utilisé dans cette vidéo est une méthode de 2013, et le document à l'époque utilisait un modèle très simple. En revanche, dans le domaine du traitement d'images, les recherches ont progressé ces dernières années, et l'efficacité d'un modèle bien plus difficile que celui utilisé dans le Deep Q-Network a été reconnue. Le résultat d'AlphaGo est également la rétroaction d'un tel traitement d'image. Donc, «Si vous apportez une technologie de traitement d'image comme AlphaGo, ou même plus avancée qu'AlphaGo, il peut être possible de capturer des jeux d'action compliqués qui n'ont pas été essayés sans utiliser d'informations privilégiées. J'ai pensé.
Il s'agit d'une trajectoire de deux semaines d'un étudiant qui a réfléchi à cela et a agi.
Deep Q-Network et des études similaires utilisent principalement le jeu Atari 2600 sorti en 1977 comme référence. C'est en partie parce que la bibliothèque est complète, mais la raison principale est qu'il est difficile de capturer des jeux plus complexes que l'Atari 2600. Les jeux d'action 3D sont considérés comme difficiles, notamment en raison de la difficulté du traitement de l'information en trois dimensions.
Par conséquent, je me suis concentré sur les jeux de tir 2D comme étant plus difficiles qu'Atari 2600, plus faciles et plus appropriés que la 3D. Les jeux de tir 2D sont en 2D et ne nécessitent pas autant d'informations que la 3D, mais ils nécessitent plus de complexité et de vitesse que les jeux Atari 2600. Parmi eux, cette fois, la version d'essai est publiée gratuitement et est facile à obtenir Toho Konjuden ~ Legacy of Lunatic Kingdom. A été ciblé pour la capture.
~~ En fait, la raison pour laquelle j'aime le projet Toho est plus grande ~~
En gros, il s'agit d'un mécanisme qui échange des captures d'écran de l'écran de jeu entre Windows et Ubuntu et renvoie l'opération au jeu.
Simple video est disponible sur Twitter.
Les principaux programmes hors modèle sont publiés sur github ... Cependant, il est toujours dans le cadre de pointe à l'état de prototype. Je ne pense pas qu'il soit approprié d'écrire quelque chose sur cette base.
Le client prend une capture d'écran avec PIL, la numpy et envoie l'image avec socket.
Lorsque le serveur le reçoit avec socket, il le formate avec numpy et OpenCV, et Chainer prend un jugement de mort et une décision d'action. Si aucune mort n'est déterminée, l'action sera retournée avec socket. Si une décision de mort est prise, une méta-phrase est renvoyée et l'épisode se termine. De plus, selon le cas, nous commencerons à apprendre avec Chainer.
En réponse à la réponse, le client envoie une action correspondant à Direct Input (système d'entrée de jeu DirectX) avec Send Input. Lorsque la méta-déclaration du jugement de mort est renvoyée, l'opération est mise en pause et attend. Il attend toujours si l'apprentissage a lieu et reprend le fonctionnement dans le cas contraire.
Dans Toho Konjuden, les mots «Échec de capture» sont affichés au moment de la mort. Par conséquent, cela est utilisé pour déterminer la mort. Plus précisément, le côté serveur spécifie que la zone où ce personnage est affiché est découpée, et que ce soit une image de jeu ou non est jugé par un modèle simple à trois couches. Cela pourrait être jugé avec une performance de 99% ou plus. (Cependant, c'est une balle qui fonctionne parfois mal)
Sélectionnez l'action avec la note la plus élevée pour une seule image, comme indiqué ci-dessus. Il existe au total 18 modèles de comportement, et ils sont les suivants.
z (bouton de prise de vue) z (bouton de prise de vue) + 8 directions z (bouton de prise de vue) + SHIFT (mouvement lent) z (bouton de prise de vue) + SHIFT (mouvement lent) + 8 directions
De plus, l'évaluation a pris la forme d'un apprentissage et d'une estimation en combinant le comportement et le temps de survie.
J'ai essayé différentes combinaisons basées sur Lunatic (difficulté la plus élevée), mais je n'ai pas pu passer le premier chapitre.
Comme vous pouvez le voir sur la Simple video, si ce n'est pas RANDOM, l'action est décidée de manière unique. Avec cela, il est inévitable d'attaquer le personnage opérationnel et vous mourrez. Cela est probablement dû à un mauvais apprentissage.
Dans la vidéo ci-dessus, j'ai essayé d'apprendre l'évaluation en prenant en sandwich l'apprentissage chaque fois que j'ai terminé l'action dans une certaine mesure. Ce qui précède est le résultat de l'apprentissage en utilisant en fait environ 2000 images 5 fois chacune. C'est une quantité qui ne peut pas être considérée comme un apprentissage suffisant, même dans le traitement d'image général.
Cependant, une quantité considérable de calculs est nécessaire pour s'entraîner avec le modèle de 100 couches ou plus actuellement utilisé dans le traitement d'image. Dans mon environnement, il a fallu près d'une heure pour traiter toutes les images une fois, même s'il n'y en avait que quelques milliers. Cependant, même si vous le gérez une fois, vous pouvez le résoudre suffisamment s'il s'agit d'un simple problème de classification, mais pour autant que j'ai essayé cette fois, il semble que ce n'était pas si facile.
Pour approfondir vos connaissances, utilisez une bibliothèque de calcul GPU parallèle telle que "Distributed TensorFlow" qui sera bientôt disponible. Je pense que c'est nécessaire. Dans l'article ci-dessus, un exemple de réalisation de 300 fois plus de traitement parallèle avec 500 unités est présenté. Si ce traitement de 300 fois peut être utilisé, le problème ci-dessus peut être résolu. (Si vous l'utilisez réellement, AlphaGo, qui nécessite près de 700 jours de calcul, peut être appris en seulement 2 jours.) [^ 1]
[^ 1]: J'avais un peu de temps, donc je vérifiais divers documents, mais j'étais sceptique sur le fait que "c'était un malentendu, et cela faisait deux ans que j'étais dispersé au départ". Je le posterai dans le texte original pendant un moment jusqu'à ce que je puisse le confirmer. (Ajouté le 2016/3/13)
Cependant, si vous achetez 500 TitanX, les GPU les plus puissants du marché aujourd'hui, cela dépassera à lui seul 70 millions. Ce n'est pas un montant qui peut être payé aux étudiants pauvres, mais ce montant de calcul n'est-il pas gérable?
~~ Je veux trouver un emploi avant cela, mais je me demande si cela peut être fait ... ~~
Histoire de DQN + Deep Q-Network écrite dans Chainer Prendre une capture d'écran avec Pillow pour Python Transférer des images de Raspberry Pi avec OpenCV Simulate Python keypresses for controlling a game
AlphaGo utilise une technique appelée Deep Q-Network.
Dans le premier projet, la phrase ci-dessus a été publiée au début. Cependant, on m'a fait remarquer que "bien que l'apprentissage par renforcement soit effectué dans le processus d'optimisation du modèle, Deep Q-Network n'est pas utilisé et c'est une erreur évidente", et je l'ai corrigée.
Nous aimerions profiter de cette occasion pour nous excuser d'avoir publié des informations incorrectes.
Recommended Posts