Outils pour utilisateurs

Outils du site


intelligence_du_pendule_de_furuta

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
intelligence_du_pendule_de_furuta [2022/05/24 19:09] – [Ressources] sergeintelligence_du_pendule_de_furuta [2022/10/07 10:11] (Version actuelle) – [Version avec ESP32] serge
Ligne 13: Ligne 13:
 Une Intelligence Artificielle n'est jamais intelligente.\\ Une Intelligence Artificielle n'est jamais intelligente.\\
 **C'est un programme informatique qui comprend à un moment donné un Apprentissage Statistique.** **C'est un programme informatique qui comprend à un moment donné un Apprentissage Statistique.**
- 
  
 =====Ressources===== =====Ressources=====
Ligne 21: Ligne 20:
   * **[[https://pythonprogramming.net/saving-and-loading-reinforcement-learning-stable-baselines-3-tutorial/?completed=/introduction-reinforcement-learning-stable-baselines-3-tutorial/|Reinforcement Learning in Python with Stable Baselines 3 : How to save and load models]]**   * **[[https://pythonprogramming.net/saving-and-loading-reinforcement-learning-stable-baselines-3-tutorial/?completed=/introduction-reinforcement-learning-stable-baselines-3-tutorial/|Reinforcement Learning in Python with Stable Baselines 3 : How to save and load models]]**
   * **[[https://stable-baselines3.readthedocs.io/en/master/guide/custom_env.html|Création d'un Environment particulier dans Gym de OpenAI]]**    * **[[https://stable-baselines3.readthedocs.io/en/master/guide/custom_env.html|Création d'un Environment particulier dans Gym de OpenAI]]** 
 +
 =====Principes===== =====Principes=====
 L'apprentissage se compose de cycles, un cycle comprend des steps.\\ L'apprentissage se compose de cycles, un cycle comprend des steps.\\
Ligne 27: Ligne 27:
   * Le serveur répond par une impulsion sur le moteur dans un sens ou dans l'autre, de combien à définir empiriquement.   * Le serveur répond par une impulsion sur le moteur dans un sens ou dans l'autre, de combien à définir empiriquement.
 Un cycle se termine au bout de 2000 steps. Un cycle se termine au bout de 2000 steps.
- 
  
 =====Installation de l'intelligence artificielle===== =====Installation de l'intelligence artificielle=====
-Nous utilisons Gym de OpenAI et Stable-Baselines3. +Nous utilisons Gym de OpenAI et Stable-Baselines3.\\ 
- +Le code de Stable-baselines est le code de Baselines nettoyé, amélioré, documenté. Stable-baselines3 est la dernière version, il utilise Torch[[https://stable-baselines3.readthedocs.io/en/master/guide/examples.html|Documentation de stable-baselines3]] @ stable-baselines3.readthedocs.io\\ 
-===Stable-baselines3=== +Les modules python à installer: stable-baselines3 et pyglet. Pyglet ne sert qu'a tester l'installation. L'installation de stable-baselines3 installe gym et installe tout ce qui est dans requirements.txt
-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 +
-Stable-baselines3 est la dernière version, il utilise tensorflow2 et Torch\\ +
-  * **[[https://stable-baselines3.readthedocs.io/en/master/guide/examples.html|Documentation de stable-baselines3]]** @ stable-baselines3.readthedocs.io +
- +
-===Installation:=== +
- https://stable-baselines3.readthedocs.io/en/master/guide/install.html\\ +
-Les modules python à installer: stable-baselines3[extra] et pyglet. Pyglet ne sert qu'a tester l'installation. L'installation de stable-baselines3 installe gym et installe tout ce qui est dans requirements.txt+
  
 <code bash> <code bash>
Ligne 57: Ligne 49:
 source mon_env/bin/activate source mon_env/bin/activate
 python3 -m pip install -r requirements.txt python3 -m pip install -r requirements.txt
 +</code>
 +
 +=====Petit Pendule de Furuta=====
 +====Version tout en python====
 +Au bout de très longs apprentissages, le maître a fini par comprendre que pigpio empilait les callbacks à traiter ce qui décalait l'apprentissage par rapport au pendule réel.\\
 +Le codeur du balancier de 4 000 points crée 16 000 callbacks. En estimant la vitesse de rotation du balancier à 1 tour par seconde, la fréquence d'appel du callback est de 16 000 Hz.\\
 +Le moteur a un codeur de 1 000 points: le même calcul ajoute 4 000 Hz.\\
 +
 +Les gpio d'une Pi ne peuvent pas tourner à plus de 20 000 Hz: [[https://atman-iot.com/blog/raspberry-pi-benchmark/|Can the Raspberry pi acquire high frequency signals?]]
 +
 +Les vitesses de rotation sont plus rapides que 1 tour/seconde: la Pi prend alors du retard.
 +
 +Le codeur de 4 000 points a été remplacé par un codeur de 1 000 points, qui est grandement suffisant: les frottements ne permettent pas d'apprécier la position du points zéro à mieux que +- 1 ou 2 points.
 +
 +===Training avec "best"===
 +La méthode training_best de train_test.py est étrange: la doc n'est pas claire, ça ne finit jamais, il y a un message d'erreur au lancement assez obscure.
 +<code python>
 +eval_callback = EvalCallback(self.env,
 +                                     best_model_save_path=self.best_model_save_path,
 +                                     log_path=self.logdir,
 +                                     eval_freq=500,
 +                                     deterministic=True,
 +                                     render=False)
 </code> </code>
  
Ligne 63: Ligne 78:
 ====Installation, utilisation==== ====Installation, utilisation====
 tensorboard est dans les requirements.\\ tensorboard est dans les requirements.\\
-Voir **[[https://github.com/sergeLabo/furuta_rl/blob/main/furuta_soft/train_test.py|train_test.py]]** pour l'implémentation.\\ 
 Dans le dossier du projet, qui contient le venv=mon_env, lancer en terminal: Dans le dossier du projet, qui contient le venv=mon_env, lancer en terminal:
   ./mon_env/bin/tensorboard --logdir=logs   ./mon_env/bin/tensorboard --logdir=logs
Ligne 72: Ligne 86:
  
  
-====Des exemples==== +====Exemples==== 
-{{ :media_15:tb_00.png?900 |}} +{{:media_15:tb_00.png?200|}} 
- +{{:media_15:tb_03.png?200|}} 
-{{:media_15:tb_03.png?900|}} +{{:media_15:tb_04.png?200|}} 
-{{:media_15:tb_04.png?300|}} +{{:media_15:tb_01.png?200|}}
-{{:media_15:tb_01.png?300|}}+
 ====Moyenne des récompenses==== ====Moyenne des récompenses====
-Permet d'apprécier l'efficacité de l'apprentissage\\+{{:media_15:tb_10.png?300 |}} Permet d'apprécier l'efficacité de l'apprentissage\\
 avec rollout/ep_rew_nean avec rollout/ep_rew_nean
-{{ :media_15:tb_10.png?300 |}} 
- 
- 
-=====Tableau d'Optimisation des Paramètres du Pendule de FURUTA===== 
-{{:media_15:tb_11.png?900|}} 
- 
-{{:media_15:tb_12.png?120 |}} 
-**Parameter Optimization** 
-^Numéro                          ^   06    ^   07     08     09    ^   10    ^   11    ^   14    ^   15      ^ 
-|Learning Rate en 10<sup>-4</sup>  10    |   50     20     20    |    7    |   12    |          8      | 
-|Ent Coef en 10<sup>-3</sup>      1      |      |      |                            1      | 
-|Vf Coef                          0.55    0.55  |  0.55  |  0.55    0.51    0.55    0.5    |   0.55    |  
-|Nombre de steps                 | 276 000 | 82 000 | 614 000| 307 000 | 307 000 | 512 000 | 307 000 | 1 000 000 | 
-|Note d'efficacité sur 10        |            |      |                                   | 
  
-**Le nombre de steps doit être d'au moins 1 millions pour commencer à noter la rapidité d'un apprentissage** 
-L'apprentissage par renforcement passe par des phase de progrès et de chaos. Ces chaos permettent d'explorer tous les situations. 
-La récompense est le produit de la récompense du chariot par la récompense du balancier. Il faut beaucoup de temps pour que le model intègre cette notion. 
  
  
  
-{{tag> bestiaire_ia pytorch tensorboard }}+{{tag> bestiaire_ia petit_pendule_furuta pytorch tensorboard }}
intelligence_du_pendule_de_furuta.1653419348.txt.gz · Dernière modification : 2022/05/24 19:09 de serge