Construire Bots pour jouer aux jeux d'apprentissage machine
Apprentissage par renforcement (RL) est un nouveau domaine passionnant de l'apprentissage de la machine, dans lequel les robots apprennent en jouant des jeux. La plus grande percée a été faite par Deepmind, qui a programmé une IA pour jouer en petits groupes.
Voici un exemple qui vient Bot appuie sur des boutons au hasard pour frapper la balle:
Il est différent de l'apprentissage machine traditionnelle (surveillé ou non surveillé) en ce qu'il n'y a pas d'échantillons de formation avec les résultats attendus.
Dans RL, les bots sont jetés dans un jeu d'ordinateur (et le jeu est un domaine dans lequel ils sont le plus largement testées), puis formés pour apprendre en observant leurs actions et récompenses.
Ceci est la chose la plus radicale à propos de RL: Nous, en tant que programmeurs, disons que l'algorithme ce que nous attendons, comme la finition du jeu avec un score d'au moins 100. L'algorithme essaie alors au hasard des combinaisons différentes, l'apprentissage comme il va, jusqu'à ce qu'il atteigne notre objectif souhaité (ce qui peut prendre des heures ou jours).
Enseigner l'ordinateur comment jouer à des jeux
La formation d'un jeu moderne, même quelque chose 2D comme Pacman ou en petits groupes peut prendre des jours, voire des semaines, sur les machines GPU haute puissance. Pour rendre notre tâche facile, nous apprendrons par les jeux de jouets.
Certains seront à base de texte, d'autres seront GUI simple basée.
Des jeux comme cartpole, où vous devez équilibrer un cartpole sur un fil:
Une autre voiture sera Mountain, où vous devez conduire une voiture sur une colline en acier:
Stuff nous irons plus
- Un jeu simple texte pour apprendre les concepts de RL. Ce sera un composé échapper à la salle de jeux de type
- Q L'apprentissage est un algorithme de RL populaire. Nous allons voir comment mettre en œuvre l'utilisation de nos jeux de jouets
- Apprentissage en profondeur avec les réseaux de neurones
- Une introduction à OpenAI.
Apprentissage en profondeur avec les réseaux de neurones
Q L'apprentissage est bonne, mais le problème est qu'il stocke tout dans un tableau. Ce qui est bien pour les jeux simples avec les États limités, mais dès que vous commencez à entrer dans des choses complexes, vous pouvez avoir des millions d'états, ce qui signifie que vous aurez besoin de beaucoup de mémoire.
Pour résoudre ce problème (et d'autres), les réseaux de neurones ont été amenés. Ils peuvent permettre à l'IA gérer les états plus complexes, mais d'introduire un autre niveau de complexité. Nous examinerons ces derniers.
Introduction à OpenAI
Une fois que vous comprenez les bases de RL, vous pouvez l'essayer sur des jeux plus avancés. Je vais vous présenter OpenAI.
OpenAI est un nouveau cadre de travail qui vous permet de former vos algorithmes sur des jeux comme Pacman:
Et même des jeux flash (en utilisant un serveur VNC et un navigateur local):
Vous devez savoir Python, bien sûr, mais vous devez aussi avoir quelques connaissances de base des réseaux de neurones et Keras. Si vous ne le faites pas, mon cours précédent construire votre réseau de neurones à partir de zéro peut aider, et est inclus dans les récompenses.
Bonus 1: une machine virtuelle pour exécuter le code
La plupart de ce code (en particulier des choses OpenAI) ne fonctionne que sur Linux, et même là, il y a une douleur à installer. Je vais vous fournir une machine virtuelle avec tous les outils installés, vous pouvez commencer à coder (et jouer!)
Bonus 2: Introduction à VizDoom
VizDoom est une autre bibliothèque qui vous permet de programmer les robots collecteurs de jouer à Doom, et cela fonctionne également sous Windows (et Mac, Im a dit).
Je vais vous donner une rapide introduction à VizDoom, vous pouvez donc comprendre qu'il est essentiel.