Outils pour utilisateurs

Outils du site


apprentissage_par_renforcement

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
apprentissage_par_renforcement [2021/02/10 17:37] – [Modélisation d'un système physique] sergeapprentissage_par_renforcement [2022/02/10 07:52] (Version actuelle) – [Apprentissage Par Renforcement] serge
Ligne 23: Ligne 23:
 </WRAP> </WRAP>
 </WRAP> </WRAP>
 +  * Rotary Inverted Pendulum: Swing Up and Stabilization https://www.youtube.com/watch?v=2koXcs0IhOc 
 +  * Double Inverted Furuta Pendulum https://www.youtube.com/watch?v=lwJ2jzVexaI 
 +  * Furuta Pendulum avec une belle finition https://www.youtube.com/watch?v=VVQ-PGfJMuA
 =====Apprentissage par renforcement===== =====Apprentissage par renforcement=====
   * **[[https://fr.wikipedia.org/wiki/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.   * **[[https://fr.wikipedia.org/wiki/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====+====Directeur Seymour Skinner====
 {{ youtube>0cmklEiZFYI?medium }} {{ youtube>0cmklEiZFYI?medium }}
 Le directeur de l'école des enfants **[[https://fr.wikipedia.org/wiki/Les_Simpson|Simpson]]** s'appelle **[[https://fr.wikipedia.org/wiki/Seymour_Skinner|Seymour Skinner]]**, inspiré de **[[https://fr.wikipedia.org/wiki/Burrhus_Frederic_Skinner|Burrhus Frederic Skinner]]**, inventeur de la **[[https://fr.wikipedia.org/wiki/Bo%C3%AEte_de_Skinner|Boîte de Skinner]]** Le directeur de l'école des enfants **[[https://fr.wikipedia.org/wiki/Les_Simpson|Simpson]]** s'appelle **[[https://fr.wikipedia.org/wiki/Seymour_Skinner|Seymour Skinner]]**, inspiré de **[[https://fr.wikipedia.org/wiki/Burrhus_Frederic_Skinner|Burrhus Frederic Skinner]]**, inventeur de la **[[https://fr.wikipedia.org/wiki/Bo%C3%AEte_de_Skinner|Boîte de Skinner]]**
Ligne 42: Ligne 44:
   * [[https://github.com/aidudezzz/deepbots|commande de robots]]   * [[https://github.com/aidudezzz/deepbots|commande de robots]]
  
-====Principe vulgarisé==== +====Principe vulgarisé d'une boucle PID===
-===Boucle PID===+
   * [[https://fr.wikipedia.org/wiki/R%C3%A9gulateur_PID|Régulateur PID]] sur Wikipedia. 2 images de l'article:   * [[https://fr.wikipedia.org/wiki/R%C3%A9gulateur_PID|Régulateur PID]] sur Wikipedia. 2 images de l'article:
  
Ligne 51: Ligne 52:
 {{ :media_14:correcteurpidclassique.jpg?500 |}} {{ :media_14:correcteurpidclassique.jpg?500 |}}
  
-===Apprentissage par renforcement===+====Principe vulgarisé de l'Apprentissage par Renforcement===
 +**RL = Reinforcement Learning = Apprentissage par Renforcement**
 {{ :media_14:apprentissage-par-renforcement.png?400 |}} {{ :media_14:apprentissage-par-renforcement.png?400 |}}
- +L'IA (Intelligence Artificielle) dont nous parlons ici n'est pas intelligente, par contre l'auteur est intelligent sinon il n'aurait jamais réussi à faire un truc pareil!\\
-L'IA (Intelligence Artificielle) dont nous parlons ici n'est pas intelligente, par contre l'auteur est intelligent sinon il n'aurait jamais réussi à faire un truc pareil! +
 Dans l'exemple du pendule: Dans l'exemple du pendule:
 L'**agent** est le programme de RL de l'**IA**.\\ L'**agent** est le programme de RL de l'**IA**.\\
Ligne 61: Ligne 61:
 L’**environnement** est l'installation du pendule, le capteur de mesure de l'angle du pendule, le moteur droite gauche. Il retourne l'**état** soit la position et la vitesse du chariot, l'angle et la vitesse de rotation du pendule, mis à jour un peu après l'application d'une action.\\ L’**environnement** est l'installation du pendule, le capteur de mesure de l'angle du pendule, le moteur droite gauche. Il retourne l'**état** soit la position et la vitesse du chariot, l'angle et la vitesse de rotation du pendule, mis à jour un peu après l'application d'une action.\\
 La **récompense** est calculée en fonction de l'état.\\ La **récompense** est calculée en fonction de l'état.\\
-Une nouvelle action est calculée par l'agent. L'agent s'optimise pour avoir la plus grande récompense possible.\\+Une nouvelle **action** est calculée par l'agent. L'agent s'optimise pour avoir la plus grande récompense possible.
 [[https://ressources.labomedia.org/apprentissage_par_renforcement#comment_est_definit_l_objectif_a_atteindre|Des explications]] sur le calcul de la récompense.\\ [[https://ressources.labomedia.org/apprentissage_par_renforcement#comment_est_definit_l_objectif_a_atteindre|Des explications]] sur le calcul de la récompense.\\
- 
 Dans [[https://ressources.labomedia.org/apprentissage_par_renforcement#le_jeu_du_pendule_dans_blender|Le jeu du pendule dans Blender]], l'environnement est Blender, l'IA sont gym, baselines, les scripts. La communication entre l'IA et Blender se fait en OSC: l'action est envoyée, Blender retourne le résultat de cette action. Dans [[https://ressources.labomedia.org/apprentissage_par_renforcement#le_jeu_du_pendule_dans_blender|Le jeu du pendule dans Blender]], l'environnement est Blender, l'IA sont gym, baselines, les scripts. La communication entre l'IA et Blender se fait en OSC: l'action est envoyée, Blender retourne le résultat de cette action.
  
Ligne 72: Ligne 71:
  
 ===Gym=== ===Gym===
-Gym is a toolkit for developing and comparing reinforcement learning algorithms+Gym is a toolkit for developing and comparing reinforcement learning algorithms[[https://en.wikipedia.org/wiki/OpenAI#Gym|Gym]] @ en.wikipedia.org[[https://github.com/openai/gym|Gym]] @ github.com/openai[[http://gym.openai.com/docs/|Gym]] @ gym.openai.com/docs
-  * [[https://en.wikipedia.org/wiki/OpenAI#Gym|Gym]] @ en.wikipedia.org +
-  * [[https://github.com/openai/gym|Gym]] @ github.com/openai +
-  * [[http://gym.openai.com/docs/|Gym]] @ gym.openai.com/docs+
  
 ====Baselines vs Stable-baselines vs Stable-baselines3==== ====Baselines vs Stable-baselines vs Stable-baselines3====
Ligne 82: Ligne 78:
  
 ===Stable-baselines=== ===Stable-baselines===
-Le code de Stable-baselines est nettoyé, amélioré, documenté. **[[https://stable-baselines.readthedocs.io/en/master/index.html|Documentation de stable-baselines]]** @ stable-baselines.readthedocs.io+Le code de Stable-baselines est le code de Baselines nettoyé, amélioré, documenté. **[[https://stable-baselines.readthedocs.io/en/master/index.html|Documentation de stable-baselines]]** @ stable-baselines.readthedocs.io
  
    sudo pip3 install stable-baselines    sudo pip3 install stable-baselines
  
 ===Stable-baselines3=== ===Stable-baselines3===
-**[[https://stable-baselines3.readthedocs.io/en/master/|Stable-Baselines3]]** est la prochaine version. Mais les exemples ne sont plus compatibles. **[[https://stable-baselines3.readthedocs.io/en/master/guide/examples.html|Documentation de stable-baselines3]]** @ stable-baselines3.readthedocs.io+**[[https://stable-baselines3.readthedocs.io/en/master/|Stable-Baselines3]]** est la prochaine version. Mais beaucoup d'exemples ne sont plus compatibles. **[[https://stable-baselines3.readthedocs.io/en/master/guide/examples.html|Documentation de stable-baselines3]]** @ stable-baselines3.readthedocs.io
  
   sudo pip3 install stable-baselines3 stable-baselines3[extra]   sudo pip3 install stable-baselines3 stable-baselines3[extra]
Ligne 94: Ligne 90:
 Pour les exemples de la doc du pendule, compris dans gym, les calculs physiques sont quelques lignes Pour les exemples de la doc du pendule, compris dans gym, les calculs physiques sont quelques lignes
 dans le fichier de "env". Le rendu est effectué avec [[http://pyglet.org/|pyglet]], [[pyglet_cross-platform_windowing_and_multimedia_library|présenté ici]]. Un step [[https://github.com/sergeLabo/balance/blob/main/cartpole_doc_baselines.py|ici]] dure 1 ms avec 4 CPU, dans Blender un step dure 20 ms.\\ dans le fichier de "env". Le rendu est effectué avec [[http://pyglet.org/|pyglet]], [[pyglet_cross-platform_windowing_and_multimedia_library|présenté ici]]. Un step [[https://github.com/sergeLabo/balance/blob/main/cartpole_doc_baselines.py|ici]] dure 1 ms avec 4 CPU, dans Blender un step dure 20 ms.\\
-Un fichier le tester: [[https://github.com/sergeLabo/balance/blob/main/cartpole_doc_baselines.py|cartpole_doc_baselines.py]]+Un fichier pour le tester: [[https://github.com/sergeLabo/balance/blob/main/cartpole_doc_baselines.py|cartpole_doc_baselines.py]]
  
 Dans le § suivant, un pendule est modélisé dans un moteur de rendu 3D qui représente ce que serait un vrai pendule de la vie réelle: il n'est pas possible d'accélérer la simulation.\\ Dans le § suivant, un pendule est modélisé dans un moteur de rendu 3D qui représente ce que serait un vrai pendule de la vie réelle: il n'est pas possible d'accélérer la simulation.\\
Ligne 100: Ligne 96:
  
 =====Le jeu du pendule dans Blender===== =====Le jeu du pendule dans Blender=====
 +  * **[[https://github.com/sergeLabo/balance|Balance]]** Sources sur Github
 +====Installation====
 +  * Debian 10 Buster
 +  * python 3.7
 +  * blender game engine 2.79
 +  * stable-baselines [[apprentissage_par_renforcement#Baselines vs Stable-baselines vs Stable-baselines3|]] qui installe gym
 +  * [[https://ressources.labomedia.org/kivy_oscpy|oscpy de kivy super pratique]] pour la com entre le BGE et le script python
 +  * CUDA: Pour une carte graphique, [[https://ressources.labomedia.org/debian_installation_configuration#installation_de_xubuntu_1804_pour_du_calcul_d_ia|Installation de cuda sur Xubuntu 18.04]]. Il faut configurer la gestion de l'alimentation en définissant la veille à jamais, et éteindre votre écran avec le bouton on/off.
 +
 +===gym===
 +gym est installé dans le système avec l'installation de stable-baselines. Balance 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
 +
 +Il faut désinstaller gym
 +  sudo pip3 uninstall gym
 +
 +===Modification de my_gym===
 +Définition de mon environnement dans: **[[https://github.com/sergeLabo/balance/blob/main/my_gym/gym/envs/__init__.py|__init__.py]]** **[[https://github.com/sergeLabo/balance/blob/main/my_gym/gym/envs/classic_control/__init__.py|__init__.py]]** **[[https://github.com/sergeLabo/balance/blob/main/my_gym/gym/envs/classic_control/my_cartpole.py|my_cartpole.py]]**\\
 +Un fichier obtenu avec un apprentissage est à: [[https://github.com/sergeLabo/balance/blob/main/weights/ppo2_cartpole250000.zip|ppo2_cartpole250000.zip]]
 +
 +====Modélisation====
 La modélisation d'un pendule dans Blender avec le moteur physique intégré (Bullet) est délicate. 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=== 
-====Un axe static et un cube Rigid Body avec un trou==== +{{:media_14:axe_axe_1.png?240|}} 
-{{:media_14:axe_axe_1.png?150|}} +{{:media_14:axe_axe_2.png?140|}} 
-{{:media_14:axe_axe_2.png?150|}} +{{:media_14:axe_pendule_1.png?110|}}
-{{:media_14:axe_pendule_1.png?150|}}+
 {{:media_14:axe_pendule_2.png?150|}} {{:media_14:axe_pendule_2.png?150|}}
 +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 partir dans l'infini de l'espace.
  
-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===
- +
-====Constraint Rigid Body Joint====+
 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 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
- 
 <WRAP group> <WRAP group>
 <WRAP third column> <WRAP third column>
 **Axe** **Axe**
-{{:media_14:balance_1.png?150|}} +{{ :media_14:balance_1.png?100 |}} 
-{{:media_14:balance_4.png?220|}}+{{ :media_14:balance_4.png?220 |}}
 </WRAP> </WRAP>
 <WRAP third column> <WRAP third column>
 **Rigid Body Joint** **Rigid Body Joint**
-{{:media_14:balance_2.png?300|}}+{{ :media_14:balance_2.png?300 |}}
 </WRAP> </WRAP>
 <WRAP third column> <WRAP third column>
 **Pendule** **Pendule**
-{{:media_14:balance_3.png?220|}}{{:media_14:balance_5.png?150|}}+{{ :media_14:balance_3.png?200 |}}{{ :media_14:balance_5.png?130 |}}
 </WRAP> </WRAP>
 </WRAP> </WRAP>
- 
-==== Source sur Github ==== 
-  * **[[https://github.com/sergeLabo/balance|Balance]]** sur Github 
- 
-===Installation=== 
-  * Debian 10 Buster 
-  * python 3.7 
-  * blender game engine 2.79 
-  * gym modifié dans my_gym 
-  * stable-baselines 
-  * [[https://ressources.labomedia.org/kivy_oscpy|oscpy de kivy super pratique]] pour la com entre le BGE et le script python 
- 
-===CUDA=== 
-Pour une carte graphique, [[https://ressources.labomedia.org/debian_installation_configuration#installation_de_xubuntu_1804_pour_du_calcul_d_ia|Installation de cuda sur Xubuntu 18.04]]. Il faut configurer la gestion de l'alimentation en définissant la veille à jamais, et éteindre votre écran avec le bouton on/off. 
- 
-===gym=== 
-gym est installé dans le système avec l'installation de stable-baselines. Balance 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 
- 
-Il faut désinstaller gym 
-  sudo pip3 uninstall gym 
      
 ===Bullet dans blender=== ===Bullet dans blender===
 Le moteur physique de Blender est Bullet. Il vit sa vie en parallèle du moteur de jeu, une commande demandée dans un script python sur une frame agit dans le moteur physique lors des frames suivantes mais en interaction avec la physique en cours. Le script python n'est pas un dictateur qui donne des ordres strictes à Bullet. \\ Le moteur physique de Blender est Bullet. Il vit sa vie en parallèle du moteur de jeu, une commande demandée dans un script python sur une frame agit dans le moteur physique lors des frames suivantes mais en interaction avec la physique en cours. Le script python n'est pas un dictateur qui donne des ordres strictes à Bullet. \\
- 
 Il est important d'ajouter des substeps dans **Blender Properties Scene Physics** Il est important d'ajouter des substeps dans **Blender Properties Scene Physics**
-{{ :media_14:scene_physics.png?250 | }}+{{ :media_14:scene_physics.png?250|}}\\
  
-Exemple d'un reset position et orientation sur 25 frames: [[https://github.com/sergeLabo/balance/blob/53be00649dc93820e1e95e8536b0149e5d0a63e2/redressement/redressement/always.py#L70|def reset():]]+Exemple d'un reset position et orientation sur 25 frames: [[https://github.com/sergeLabo/balance/blob/main/balance/always.py#L71|def reset():]] \\ 
 +Le fps est défini à 120 dans le panneau de rendu, le script once.py défini bge.logicsetLogicTicRate(120). Le FPS affiché est calculé avec time().
  
-===Visualisation dans blender=== +====Lancement du jeu==== 
-Dans le dossier du projet +Lancer blender comme ci-dessus et le script **[[https://github.com/sergeLabo/balance/blob/main/my_cartpole_ppo2_rendu.py|my_cartpole_ppo2_rendu.py]]**
-  blenderplayer ./balance/balance.blend +
-   +
-Le fps est défini à 120 dans le panneau de rendu, le script once.py défini bge.logicsetLogicTicRate(120). Le FPS affiché est calculé avec time(). +
  
-===Apprentissage=== 
-Définition de mon environnement dans: **[[https://github.com/sergeLabo/balance/blob/main/my_gym/gym/envs/__init__.py|__init__.py]]** **[[https://github.com/sergeLabo/balance/blob/main/my_gym/gym/envs/classic_control/__init__.py|__init__.py]]** **[[https://github.com/sergeLabo/balance/blob/main/my_gym/gym/envs/classic_control/my_cartpole.py|my_cartpole.py]]** 
-Le rendu et le script, dans le dossier des sources, 
   blenderplayer ./balance/balance.blend   blenderplayer ./balance/balance.blend
-et [[https://github.com/sergeLabo/balance/blob/main/my_cartpole_ppo2_train.py|my_cartpole_ppo2_train.py]]+et dans un autre terminal, pour l'apprentissage:
   python3 my_cartpole_ppo2_train.py   python3 my_cartpole_ppo2_train.py
-Le fichier d'apprentissage est à: [[https://github.com/sergeLabo/balance/blob/main/weights/ppo2_redressement_1000000.zip| ppo2_redressement_1000000.zip]] +ou pour le rendu
- +
-===Utilisation=== +
-Lancer blender comme ci-dessus et le script **[[https://github.com/sergeLabo/balance/blob/main/my_cartpole_ppo2_rendu.py|my_cartpole_ppo2_rendu.py]]** +
- +
-  blenderplayer ./balance/balance.blend+
   python3 my_cartpole_ppo2_rendu.py   python3 my_cartpole_ppo2_rendu.py
  
 ===Remarque=== ===Remarque===
 Le jeu (avec blenderplayer ...) ne doit être lancé qu'une seule fois! On peut lancer ou stopper le script python ou Blender, à son bon vouloir, la reconnexion est automatique. Çà c'est trop fort et super génial! Le jeu (avec blenderplayer ...) ne doit être lancé qu'une seule fois! On peut lancer ou stopper le script python ou Blender, à son bon vouloir, la reconnexion est automatique. Çà c'est trop fort et super génial!
 +
 ====Résultat du 1er essai==== ====Résultat du 1er essai====
 +
 +{{ :media_14:cartpole_avec_blender_game_engine.mp4?500 |}}
 +
 Avec un apprentissage de quelques heures .... Avec un apprentissage de quelques heures ....
- 
-{{ vimeo>503157923?medium }} 
  
 =====Comment est définit l'objectif à atteindre===== =====Comment est définit l'objectif à atteindre=====
Ligne 209: Ligne 193:
 Ici, il y a une récompense si le pendule est au-dessus du diamètre horizontal. Plus il est près de la position verticale, plus la récompense est grande. Sinon la récompense est nulle. Ici, il y a une récompense si le pendule est au-dessus du diamètre horizontal. Plus il est près de la position verticale, plus la récompense est grande. Sinon la récompense est nulle.
 ===== Relèvement du pendule appelé Swing-up===== ===== Relèvement du pendule appelé Swing-up=====
- 
 Les [[https://gym.openai.com/envs/Pendulum-v0/|exemples de Gym]] proposent Pendulum, il faut redresser le pendule en applicant un couple sur l'axe. Ici nous déplaçons le chariot pour le Swing. Cet exemple est construit à partir de[[https://github.com/TTitcombe/CartPoleSwingUp|CartPoleSwingUp]]. Il y a beaucoup d'autres dépôts sur GitHub sur ce problème.\\ Les [[https://gym.openai.com/envs/Pendulum-v0/|exemples de Gym]] proposent Pendulum, il faut redresser le pendule en applicant un couple sur l'axe. Ici nous déplaçons le chariot pour le Swing. Cet exemple est construit à partir de[[https://github.com/TTitcombe/CartPoleSwingUp|CartPoleSwingUp]]. Il y a beaucoup d'autres dépôts sur GitHub sur ce problème.\\
-Les sources sont dans le dossier **[[https://github.com/sergeLabo/balance/tree/main/redressement|redressement]]** de balance. [[https://github.com/sergeLabo/balance/blob/main/redressement/swing_avec_reprise.py|Training ou Rendu]] en modifiant le script ligne 47.\\+Les sources sont dans le dossier **[[https://github.com/sergeLabo/balance/tree/main/redressement|redressement]]** de balance. [[https://github.com/sergeLabo/balance/blob/main/redressement/swing_avec_reprise.py|Training ou Rendu]] en modifiant le script ligne 47.L'import de my_gym est réalisé avec un chemin absolu, pour tester il faut adapter ce chemin à votre cas.\\
 Ce pendule a été construit dans l'**Atelier du C01N de mon salon**: Ce pendule a été construit dans l'**Atelier du C01N de mon salon**:
-{{ vimeo>510756033?large }} + 
-L'apprentissage a duré 88 heures, 17 millions de steps, plus plusieurs semaines de recherche et d'ordinateurs qui calcule 24h/24h.\\ +{{ :media_14:swingup_dans_le_blender_game_engine.mp4?500 |}} 
-Le fichier de poids fonctionne sur Xubuntu 18.4 mais pas sur Debian 10: il doit y avoir une version d'une des librairies qui diffèrent. + 
 +L'apprentissage a duré 88 heures, 17 millions de steps, plus plusieurs semaines de recherches et d'ordinateurs qui calcule 24h/24h. Le fichier de poids fonctionne sur Xubuntu 18.4 mais pas sur Debian 10: il doit y avoir une version d'une des librairies qui diffèrent. 
  
 =====Quelques explications===== =====Quelques explications=====
Ligne 241: Ligne 225:
  
 ===Algorithme d'apprentissage=== ===Algorithme d'apprentissage===
-L'algorithme d'optimisation est **[[https://stable-baselines.readthedocs.io/en/master/modules/ppo2.html|PPO2]]** dans les 2 cas. De longs essais avec **[[https://stable-baselines.readthedocs.io/en/master/modules/ddpg.html|DDPG]]** n'a rien donné de bien. D'autres algorithmes sont possibles.+L'algorithme d'optimisation est **[[https://stable-baselines.readthedocs.io/en/master/modules/ppo2.html|PPO2]]** dans les 2 cas. De longs essais avec **[[https://stable-baselines.readthedocs.io/en/master/modules/ddpg.html|DDPG]]** n'a rien donné de bien. D'autres algorithmes sont possibles. L'objectif de l'auteur était d'y arriver, **quoiqu'il en coûte**. Que le training dure longtemps ne donne pas une mauvaise note !
  
 ===Récompense revue pour les débuts des calculs==== ===Récompense revue pour les débuts des calculs====
Ligne 271: Ligne 255:
  
 =====Ressources complémentaires===== =====Ressources complémentaires=====
 +====Quels sonts les défauts de Gym ?====
 +Gym impose un cadre pour tous les chercheurs de RL, ce qui permet de faire des comparaisons entre les solutions.\\
 +Mais cela empêche de trouver des solutions originales. En Intelligence Artificielle, trop de méthodes sont empiriques et pifométriques. Il y a certainement des solutions innovantes à inventer. 
 +
 ====Réflexions philosophiques==== ====Réflexions philosophiques====
   * Ce type d'apprentissage s'appelle la carotte **et** le bâton: management très pratiqué. On promet des carottes mais on ne donne que des coups de bâtons.   * Ce type d'apprentissage s'appelle la carotte **et** le bâton: management très pratiqué. On promet des carottes mais on ne donne que des coups de bâtons.
   * Encore pratiqué dans l'enseignement en France, alors que les pays nordiques considèrent les apprenants comme des êtres humains responsables.   * Encore pratiqué dans l'enseignement en France, alors que les pays nordiques considèrent les apprenants comme des êtres humains responsables.
-  * ... 
 ====Gym CartPole Ressources==== ====Gym CartPole Ressources====
  
-  * [[https://github.com/openai/gym/wiki/CartPole-v0|CartPole-v0]] wiki @ github.com +  * [[https://github.com/openai/gym/wiki/CartPole-v0|CartPole-v0]] 
- +
-Définition des Observations = 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===== ====pybullet=====
Ligne 291: Ligne 271:
 Bullet est le moteur physique de Blender Bullet est le moteur physique de Blender
  
-==== Création de votre propre environnement ==== 
-  * [[https://github.com/openai/gym/blob/master/docs/creating-environments.md|How to create new environments for Gym]] @  openai / gym\\ 
  
-L'étape suivante de la visualisation dans blender serait de créer un environnement spécifique pour ce my_cartpole et l'installer en dur. Puis d'utiliser gym en l'installant et supprimant les imports locaux de gym. 
  
 ====Un cartpole réel documenté mais sans RL==== ====Un cartpole réel documenté mais sans RL====
apprentissage_par_renforcement.1612978648.txt.gz · Dernière modification : 2021/02/10 17:37 de serge