Outils pour utilisateurs

Outils du site


apprentissage_par_renforcement

Ceci est une ancienne révision du document !


Apprentissage Par Renforcement

Le Hello World de l'Apprentissage Par Renforcement

Linéaire:

Rotatif:

Flying:

Double pendule:

Documenté mais sans RL

Apprentissage par renforcement

  • Apprentissage par renforcement @ fr.wikipedia.org. En intelligence artificielle, plus précisément en apprentissage automatique, l'apprentissage par renforcement consiste, pour un agent autonome (robot, etc.), à apprendre à partir d'expériences, de façon à optimiser une récompense quantitative au cours du temps, positive ou négative. En répétant les expériences, le robot progresse.

Directeur Semour Skinner

Le directeur de l'école des enfants Simpson s'appelle Seymour Skinner, inspiré de Burrhus Frederic Skinner, inventeur de la Boîte de Skinner

Ressources

Frameworks

Q-learning

Ressources

Frameworks possibles

Gym de OpenAI

OpenAI

fr.wikipedia.org OpenAI est une entreprise à « but lucratif plafonné » en intelligence artificielle, basée à San Francisco. En 2019, OpenAI a reçu a 1 000 000 000 $ de Microsoft. OpenAi utilise le super Calculateur de Micro$ pour ses apprentissages.
Avant mars 2019, elle était reconnue association à but non lucratif. L'objectif de cette société était de promouvoir et développer une intelligence artificielle à visage humain qui bénéficierait à toute l'humanité. L'objectif actuel est de se faire des $.

Gym

Gym is a toolkit for developing and comparing reinforcement learning algorithms.

  • Gym @ en.wikipedia.org
  • Gym @ github.com/openai
  • Gym @ gym.openai.com/docs

Baselines vs Stable-baselines vs Stable-baselines3

OpenAI Baselines is a set of high-quality implementations of reinforcement learning algorithms. “Chef, Le meilleur des meilleurs, chef”

Baselines

Baselines est un projet OpenAI. Les dépendances sont anciennes, l'installation est quasi impossible et Stable-baselines est mieux!

Stable-baselines

Main differences with OpenAI Baselines. This toolset is a fork of OpenAI Baselines, with a major structural refactoring, and code cleanups:

  • Unified structure for all algorithms
  • PEP8 compliant (unified code style)
  • Documented functions and classes
  • More tests & more code coverage
  • Additional algorithms: SAC and TD3 (+ HER support for DQN, DDPG, SAC and TD3)
git clone https://github.com/hill-a/stable-baselines && cd stable-baselines
pip install -e .[docs,tests,mpi]
sudo pip3 install -e .[docs,tests,mpi]
sudo pip3 install tensorflow==1.15

Stable-baselines3

Stable Baselines3 (SB3) is a set of reliable implementations of reinforcement learning algorithms in PyTorch. It is the next major version of Stable Baselines.

sudo pip3 install stable-baselines3
sudo pip3 install stable-baselines3[extra]

Le jeu du pendule dans Blender

La modélisation d'un pendule dans Blender avec le moteur physique intégré (Bullet) est délicate.

Un axe static et un cube Rigid Body avec un trou

Le pendule fini rapidement par se décrocher de l'axe, si un vertex du trou est dans l'axe sur une frame, la physics va le faire tomber dans l'infini de l'espace.

Constraint Rigid Body Joint

Axe

Rigid Body Joint

Pendule

Cette 2ème solution permet de bien faire tourner le pendule, par contre le stabiliser verticalement est corriace.

Le Empty a été remplacer par un Cube en Dynamic avec une masse de 1 et le pendule une masse de 0.1

Source sur Github

Remarque: Ce premier projet est construit en modifiant des fichiers sources de gym, dans une copie nommée my_gym, importée dans les fichiers avec:

import sys sys.path.append('my_gym') import gym

gym n'est pas installé dans le système.

Visualisation dans blender

Dans le dossier du projet

blenderplayer ./balance/balance.blend

Le fps est défini à 120 dans le panneau de rendu, le script once.py défini bge.logicsetLogicTicRate(120)
Cela devrait faire tourner le rendu et le moteur physique à 120 !

Lancement de l'apprentissage

Définition de mon environnement dans:

python3 ./balance/my_gym/gym/envs/classic_control/my_cartpole.py

Le fichier d'apprentissage est à: acktr_blender_250000_1.zip

Utilisation

Lancer blender comme ci-dessus et le script blender_baselines_acktr.py

python3 blender_baselines_acktr.py

Résultat du 1er essai

Gym CartPole Ressources

Observation

Liste de 4 items:

Num Observation Min Max
0 Cart Position -2.4 2.4
1 Cart Velocity -Inf Inf
2 Pole Angle ~ -41.8° ~ 41.8°
3 Pole Velocity At Tip -Inf Inf

pybullet

Mais les exemples de RL appelle baselines, qui a été remplacé par stable-baselines3

Création de votre propre environnement

apprentissage_par_renforcement.1611254614.txt.gz · Dernière modification : 2021/01/21 18:43 de serge