Vous êtes sur la page 1sur 15

Commande neuronale d’un pendule inversé

1. Introduction
Le cerveau est capable d’apprendre et de réaliser des raisonnements complexes est
constitué d’un très grand nombre de neurones ( (environs 10^15) reliés entre eux (10^13 et
10^14) connexion par neurones)
L’intelligence artificielle vise à imiter le fonctionnement du cerveau humain, ou du moins
sa logique lorsqu’il s’agit de prendre des décisions, parmi les techniques utilisées on compte
les réseaux de neurones artificiels, que leur fonctionnent est basé sur divers algorithmes
que reposent sur «  deep Learning » ,ainsi que d’autre technologies comme la
reconnaissance d’image où la vision robotique .
On applique Les réseaux de neurones pour contrôler les système non linaires, parmi ses
systèmes le pendule inversé qui est un pendule simple, cependant la masse est située en
l’air. Le pendule présente une position d’équilibre instable que l’on cherche à stabiliser
Le pendule inversé a toujours été utilisé pour tester les nouvelles méthodes de commande,
Cet intérêt est dû au fait que le problème de la commande du pendule inversé est
fondamental car il possède plusieurs caractéristiques attrayantes : c’est un système
Non linéaire, intrinsèquement instable et il possède plusieurs implications pratiques.

La commande d’un réseau neuronal consiste à faire l’entrainement d’un contrôleur neuronal
qui revient à trouver une meilleure manière pour l’ajustement des poids

2. Historique 
En premier lieu, il a donc été question de comprendre le mécanisme opérant dans le cerveau
humain. En 1881, l’anatomiste allemand Heinrich Wilhelm Waldeyer établit la théorie selon
laquelle le système nerveux est constitué d’une multitude de cellules assurant le traitement
des signaux. Il propose alors un nom pour ces éléments : « neurones ».
Des années plus tard, l’étude du système nerveux quitte le champ purement biologique. En
effet, en 1943, deux scientifiques américains, Warren McCulloch et Walter Pitts, proposent
le modèle du « neurone formel ». Aujourd’hui encore, cette notion demeure fondamentale.
[1]

3. Neurone biologique :
Un neurone biologique  reçoit des entrées ou signaux transmis par d’autres neurones
(interaction dendrites- synapse). Au niveau du corps (soma), le neurone analyse et traite ces
signaux en les sommant. Si le résultat obtenu est supérieur au seuil d’activation (ou
d'excitabilité), il envoie une décharge alors nommé potentiel d'action le long de son axone
vers d'autres neurones biologiques.

fig1 : Représentation schématique d’un neurone biologique.

p. 1
Commande neuronale d’un pendule inversé

4. Model de réseau (formel) :

Fig2 : Bloc-diagramme du modèle d’un neurone formel. [2]

5. Fonction d’activation : [3]


Plusieurs fonctions d’activation peuvent être utilisées. on utilise cette la fonction sigmoïde
Plus connue et plus populaire. L’un de ses avantages est sa dérivabilité.
1) Fonction sigmoïde :
−gs
1−e
f(s)=tanh ( gs )= (3)
1+ g−s
Dérivée :
df (s )
ḟ ( s )= =1 /2 ¿ (4)
ds
Fig 3  :sigmoïde bipolaire

6. Réseaux neuronaux :
Les réseaux de neurones permettent la résolution des problèmes complexes tels que la
reconnaissance des formes ou le traitement de langage naturel grâce à la justement des
coefficients de pondération dans une phase d’apprentissage
L’objectif général d’un RNA est de trouver la configuration des poids de synaptiques entre
neurones pour qu’il associe à chaque configuration d’entrée, une réponse adéquate.
L’utilisation d’un RNA se fait en deux temps. Tout d’abord une phase d’apprentissage qui est
chargée d’établir des valeurs pour chacune des connexions du réseau, puis une phase
d’utilisation proprement dite, où l’on présente au réseau une entrée et où il nous indique en
retour « sa » sortie calculée.

Dans le cas du PMC,MLP on utilise un apprentissage supervisé. Les valeurs des poids
synaptique sont créées tout d’abord au hasard et le système cherche par itérations
p. 2
Commande neuronale d’un pendule inversé

successives à obtenir une modélisation des données. A chaque étape, une entrée est
présentée au réseau, il propage ces valeurs vers les neurones de sortie. Cette sortie calculée
est comparée avec la réponse attendue et le système modifie les poids en conséquence.
Cette altération des connexions est obtenue par l’algorithme de rétropropagation du
gradient d’erreur. Ce calcul est chargé de rétro-propager dans le réseau les erreurs
constatées sur les sorties. En théorie, on ne peut jamais être sûr que cet algorithme finisse
par déterminer un ensemble de poids convenable pour tous les couples d’entrées-sorties. En
pratique, on ne construit pas un seul RNA, mais plusieurs modèles en jouant sur les
paramètres de cet algorithme, et en cherchant à obtenir un modèle qui colle au mieux aux
données.[4]

Dans le cas où son apprentissage est non supervisé, le réseau doit trouver par lui même les
régularités sous-jacentes des données.Dans notre étude on a utilisé RN de type MLP qui est :

7. Réseaux Neuronaux Multi- couches :


Les problèmes rencontrés avec les réseaux à couche unique, ont poussé les chercheur à
développer d’autres réseaux.

Le perceptron Multi Couches PMC ou MLP (Multi Layer Perceptron) en anglais est une
Extension du perceptron monocouche, avec une ou plusieurs couches cachées entre l'entrée
et la sortie. L'idée principale est de grouper des neurones dans une couche. En place ensuite
bout à bout plusieurs couches et on connecte complètement les neurones de deux couches
adjacentes(fig4), Les entrées des neurones de la deuxième couche sont donc en fait les
sorties des neurones de la première couche. Les neurones de la première couche sont reliés
au monde extérieur et reçoivent tous le même vecteur d'entrée. Ils calculent alors leurs
sorties qui sont transmises aux neurones de la deuxième couche, etc. Les sorties des
neurones de la dernière couche forment la sortie du réseau.

Fig 4 : Structure d’un réseau neuronal multi- couches (MLP) avec équation de réseau
N l−1
sl , j=∑ wl , j ,i . ul−1 ,i (5)
i=0

ul , j=f (sl , j ) (6)

f(.) : fonction d'activation


wl,j,i : poids qui relie le ième neurone dans la couche(l-1) au jème neurone dans la couche l.
Sl,j : somme pondérée à l’entrée du jème neurone dans la couche l.
ul,j : sortie du jème neurone dans la couche l.
Nl : nombre de neurones de la couches l.
L : nombre de couches dans la réseau. La couche-0 correspond aux noeuds d’entrée
p. 3
Commande neuronale d’un pendule inversé

8. L’apprentissage :[5]
Toute l’information que peut contenir un réseau neuronal réside dans les poids synaptiques.
L’apprentissage consiste donc à ajuster ces derniers de telle façon qu’il puisse générer
correctement la sortie correspondante à chaque point de l’espace d’entrée. Ainsi,
l’apprentissage peut être défini comme tout changement dans la matrice de poids :
apprentissage ≡ dW/dt.
On distingue 3 types d’apprentissage  :
a) Apprentissage supervisé : un professeur fournit au réseau des couples de données
(entrée, sorite désirée correspondante). Les paramètres du réseau sont ajustés de
manière à minimiser une certaine norme de l’erreur de sortie constituée par la
différence entre la sortie réelle du réseau et la valeur désirée correspondante
(fournie par le professeur).
b) Apprentissage par renforcement : est une approche utilisée dans les problèmes de
planification à travers le temps. Elle utilise deux réseaux : un réseau d’action et un
réseau d’évaluation qui joue le rôle d’un superviseur et qui génère un signal
d’avertissement à chaque fois que les actions prises sont mauvaises. Ce signal sert à
entraîner le réseau d’action. Les poids du réseau d’évaluation sont altérés dans le
sens de renforcer les bonnes actions et de sanctionner les mauvaises.
c) Apprentissage non supervisé : en absence de tout professeur, le réseau organise lui-
même les formes d’entrée en classes de façon à minimiser un critère de
performances. Ceci peut être fait, par exemple, en désignant un certain nombre de
neurones gagnants dans une compétition d’activation ou en désignant un certain
nombre de bassins d’attraction dans l’espace d’état.

9. Algorithme de la Rétro- Propagation (RP) : [6]


Formulation Mathématique de l'Algorithme :
On suppose que l’apprentissage se fait à chaque itération et on exprime les variables mises
jeux en fonction de l’indice d’itération (k)
nl
2
j n ( k )=1/2 ∑ [ul , j ( k )−udl , j ( k ) ] (7)
j=1

JN (k) : valeur du critère d’erreur à l’instant k.


ul , j (k ): j ème sortie du réseau à l’instant k. udl , j: Valeur désirée
correspondante ul , j (k ).
Les paramètres du réseau sont ajustés itérativement suivant la règle du gradient comme
suit :
∂ jn
w l , j ,i ( k +1 )=wl , j ,i ( k )−μ |w (k ) (8)
∂ wl , j , i
∂ jn
où μ est le taux d'apprentissage. Pour un poids arbitraire dans la couche l, le gradient
∂ wl , j ,i
peut être exprimé par la règle de chaînage
∂ jn ∂ j ∂u
| ¿ n l, j
∂ wl , j ,i , ∂ ul , j ∂ w
l , j,i
| (9)

p. 4
Commande neuronale d’un pendule inversé

Le deuxième terme dans (1-12) peut être exprimé par :

∂ ul , j ∂ f ( sl , j ) ∂ s l , j
|
¿k
∂ wl , j ,i , ∂ s l , j ∂ wl , j ,i , |=f ( ¿ s l , j )˙.ul −1 , j ¿(10)

Le premier terme correspond à la dérivée de la fonction d’activation qu’on peut être


˙∂ f ( s ) d f ( s )
l, j l, j
exprimée par la dérivée totale : f (¿ s l , j)= ¿= .
∂ sl , j d sl , j

Le premier terme, ∂JN/∂ul,j , dans l’expression du gradient (9) exprime la sensibilité du


critère JN à la sortie du neurone ul , j. Le noeud ul , j influe sur la valeur de JN à travers
l’ensemble des noeuds des couches qui suivent. Par conséquent, le terme ∂JN/∂ul,j peut
être exprimé comme une fonction des sensibilités des noeuds de la couche suivante comme
suit :
∂ j n n ∂ j n ∂ul +1 ,m
| |
l+ 1

¿∑ (11)
∂u l , j m=1 ∂ ul +1, m ∂ u l, j

où le terme ∂ ul +1, m /∂ ul , j peut s’écrire :

∂u l+1 , m ∂ f ( s l+1 , m ) ∂ s l+1 ,m


∂ ul , j |
¿
∂ s l+1 , jm ∂ ul , j |
=1/2[1-ul +1 ,m k 2 ¿*w l+1 , m , j ( k ) (12)

A la couche de sortie, on a la condition limite où

∂ jn d
∂u l , j
|¿ ul , j ( k )−ul , j ( k )|=e l , j ( k ) . (13)

où eL , j (k) est l’erreur sur la sortie du jème neurone dans la couche L. Par analogie, les
sensibilités ∂JN/ ∂ul,j exprimées par (1-15), qui correspondent aux noeuds des couches
cachées, sont désignées par les erreurs équivalentes. On se permet alors de noter ∂JN/ ∂ul,j
= el,j et d’arranger les éléments correspondant à chaque couche l, dans un vecteur El =[
el,1 , el,2 ,…, el,1 , ] appelé vecteur d’erreur. Avec cette notation et en substituant (1-16)
dans (1-15), on écrit :

n
∂ jn l+ 1

=el , j ( k ) ∑ e l+1 ,m (k )∗¿1/2[1-ul +1 ,m k 2 ¿*w l+1 , m , j ( k ) (14)


∂u l , j m=1
Cette expression permet de calculer séquentiellement les vecteurs d’erreur, en commençant
de la sortie et en allant, couche par couche, vers l’entrée ; d’où l’appellation algorithme RP.
En substituant (10) et (14) dans (9), on obtient la valeur du gradient JN /∂ wl , j, i
correspondant à chaque poids synaptique wl,j,i . Pour convenance algorithmique, on note
JN /∂ wl , j, i=gl , j, i et on écrit

∂ ul , j ( k )∗1 2

∂ wl , j ,i ,
=gl j ,i ( k )=el , j
2
[ 1−ul , j ( k ) ]∗u l−1, j ( k ) . ( 15)

poids sont adaptés suivant l’expression :


w l , j ,i ( k +1 )=wl , j ,i ( k )−μ∗g l j ,i ( k ) (16)
p. 5
Commande neuronale d’un pendule inversé

Pour chaque couche l, les éléments gl , j, i forment une matrice gradient Glcorrespondant à
la matrice de poids Wl . Au début du processus d'entraînement, les poids sont initialisés à
des valeurs aléatoires

10.Identification d’un réseau neuronale  :


Pour identifier un système d’un réseau de neurone et l’appliquer sur un pendule inversé on
utilise dans notre plans l’identification en série-parallèle, le principe c’est La modélisation
directe consiste à entraîner un réseau neuronal pour émuler la dynamique directe du
système. Le réseau est placé en parallèle avec le système. Durant l’entraînement, le système
joue le rôle de professeur et le réseau est entraîné pour imiter ses actions. Dans le cas des
réseaux MLP, l’algorithme RP est, généralement, utilisé pour l’adaptation des poids. []
a) La structure d’identification représenter par cette figure dessous   :

[7]
Fig 5 :structure d’identification série-parallèle

11.Le modèle dynamique du pendule inversé est donné par :


( mc+ mp ) . g . sin ( θ )−cos ( θ ) .[ f + mp. l . θ̇ . sin ( θ ) ]
θ̈=
3
. ( mc+ mp ) . l. mp .l . cos(θ)2
4
mc = 1kg : masse du chariot. mp = 0.1kg : masse du pendule. L=0.5m : longueur du pendule.
g = 9.8 m/s2 : accélération gravitationnelle. Te = 10 ms : période d’échantillonnage.
Le pendule est placé sur un chariot qui se déplace en lui appliquant une force f.
Pour avoir les variables θet θ̇ :
θ=θ+Te . θ̇ ; θ̇=θ+Te . θ̈
mp
L
θ

F mc

p. 6
Commande neuronale d’un pendule inversé

Fig 5 :Structure d’un pendule inversée


a) Pendule inverse  :
Un pendule inversé est un pendule simple, cependant la masse est située en l’air. Le pendule
présente une position d’équilibre instable que l’on cherche `a stabiliser en utilisant un
chariot mobile. Plus simplement, une application du pendule inversé est le jeu qui consiste `à
faire tenir un balai (la tête de celui-ci étant vers le haut) dans la paume de la main, le plus
longtemps possible. L’´étude du pendule inversé a plusieurs intérêts : -L’homme est en fait
un pendule inversé double dont les deux axes de rotations sont les chevilles et les hanches.
Afin de de tenir debout, les articulations travaillent sans cesse, et l’étude de ce modèle est
importante pour la construction de prothèses. -La robotique utilise le principe du pendule
inversé, en particulier dans de nouveaux moyens de transports `a 2 roues comme le segway
qui permet d’avancer en se penchant en avant comme nous le verrons dans la suite.

12.Organigramme de programme d’identification du réseau de neurone   :


a) Le fonctionnement de la simulation du programme  :
Au début on déclare les paramètres d’entrée qui sont les poids synaptiques (choix du
nombre de neurone ) de notre réseau des neurone et de l’État initiale du système puis on
utilise une boucle comme condition si oui le programme fonctionne l’exécution sera faite en
sauvegardant des poids synaptiques et on visualise les résultats sous formes d’allures
Si non on génère l’entrée sous forme d’une force F qui est aléatoire puis le système reçoit
l’information qui permet de calculer sa réponse
Le réseau des neurones identifier reçoit en série la sortie des systèmes (θ , θ˙¿ ¿ et de (F) et
on calcule sa sortie ( θn , θn˙ ¿ ¿.

Par la suite l’apprentissage de réseau neurone identifier consiste à ajuster les informations
qu’il puisse générer les calculs d’erreur d’identificateur et rétropropagation puis on calcule
des indices gradient et adaptation poids. à la fin des itération de fonctionnement de ce
système on obtiens les résultats finaux .

p. 7
Commande neuronale d’un pendule inversé

Début

Initialisations des poids


synaptiques

Etat initial de systèmes

Condition
d’arrêt

Géneration aléatoire de

De l’entrée (f)

Calcul de réponse de système

Calcule d’erreur de l’identification


neuronal (RNI)

Sauvegarde des poids


synaptiques Calcul d’erreur d’identificateur et re

Rétropropagation (RP)

p. 8
Commande neuronale d’un pendule inversé

Visualisation des
résultats Calcul des indices gradient et
adaptation des poids

Fin

b) Les allures obtenu à partir du programme d’identification en


série parallèle :
output of identification model for tetaN with blue and teta with red and the error with green when
the adaptation stop at K= 5000.

6
position of teta N , teta and error (rads)

−1

−2
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
iteration at K stops at K= 5000

On remarque que l’écart entre les deux sorties est faible « presque négligeable »,les
deux courbes sont superposées donc cette structure série-parallèle assure la
convergence .l’erreur e teta = 0.3462 ; e tetaN= 6.5753
Cela justifié que le système converge et les résultats illustrés par les figures ci-dessus,
on peut dire que le réseau neuronal a donné un bon résultat cela démontre
l’efficacité de ce dernier dans l’identification de ce système.

p. 9
Commande neuronale d’un pendule inversé

13.La commande neuronale  :


Afin d’avoir réalisé la partie d’identification et on a obtenu que le réseau a appris de se
comporter comme le système. En plus, la technique de l'identification neuronale peut
conduire de faux résultats si le système contient des retards importants
Donc pour pouvoir arriver à une bonne stabilisation du système et a la référence désirer on
applique un réseau neuronal contrôleur qui permet d’améliorer la convergence de cette
dernière, le contrôleur consiste à trouver la meilleure manière pour l’ajustement des poids
ce réseau.
Dans la commande neuronale, un large nombre d’architecteurs de commande ont été
proposées, pouvant être utilisées efficacement pour l’identification et la commande des
systèmes, ce qui nous amène a utilisé ce model de structure de commande qui est :
a) modalisation directe par apprentissage spécialiser :
Cette méthode est considérée dans littérature comme étant la proche générale pour la
commande neuronale. La stratégie utiliser c’est d’utiliser un modèle de sensibilité du
système commande qui est une identification neuronale dans notre cas on prend l’erreur
d’une manière un peu abusive, on fait la rétropropagation à travers le réseau de neurone
identifier il va se servir comme canal qui passe par l’espace d’entrer vers l’espace de sortie
(fig 6).

[8]
Fig 6: structure de l’apprentissage spécialiser

p. 10
Commande neuronale d’un pendule inversé

b) La procédure de la commande est résumée dans cet


organigramme  :

Début

Initialisation des poids


synaptique

Etat initiale du système

Condition
d’arrêt

Générer
(θ , θ̇)

Condition
d’arrêt

Calcul RP de
contrôleur

Visualisation des allures Calcul de sortie du


et de résultats système

Calcul de sortie de RNI

p. 11

Sauvegarde les poids


Commande neuronale d’un pendule inversé

Calcul d’erreur RNI et RP

Calcul d’erreur RNC et RP

fin

Calcul des matrices gradient et adaptation


c) Le fonctionnement de RNC  : poids pour contrôleur

Au début on rajoute un réseau de neurone contrôleur pour le système qu’on a déjà identifié :

On connecte le RNC aux système en série ou le système reçoit comme entrer la force F
générer a partir de la sortie de RNC ( rétropropagation )puis on connecte le système aux
résultat RNI Pour obtenir une architecture série parallèle , de là on calcul la sortie de position
du système puis on prend l’erreur l’une certaine manière de la faire passer par RNI on
applique la rétropropagation , l’objectif c’est d'assigner le crédit pour chaque poids
synaptique dans le réseau et de corriger sa valeur .l’application de RP effectue ceci en
propageant les erreurs de l’espace d’entrer vers l’espace de sortie

Pour la réalisation de programme on initialise les Initialisation des poids synaptique (choix de nombre
de neurone pour chaque couche )

On initial l’état de système (les paramètres d’entrer)

On utilise 2 condition (boucle)(1er c’est la boucle générale la 2eme en sous-programme ) d’arrêt dans
l’enchaînement de programme

On utilise la 1ère condition pour commencer l’apprentissage de notre système au début

On génère (θ , θ˙¿ ¿ de système la séquence choisie aléatoirement dans l’intervalle [-1 1]

Puis on rajoute une 2eme condition pour calculer la RP de contrôleur en suite pour générer
la force on utilise une condition (sous-programme). Ainsi on calcul la sortie du système avec
Calcul de sortie de RNI, fin de cette boucle .

Puis en Calculant par étapes l’erreur RNI et RP, l’erreur RNC et RP, des matrices gradient et
adaptation poids pour contrôleur fin de boucle

A la fin on sauvegarde les points et on visualise les allures.

p. 12
Commande neuronale d’un pendule inversé

d) Les allures obtenu en appliquant un réseau de neurone


contrôleur  :
sortie du système le teta en bleu et tetap( accélération) en green et la force en rouge
50

40

30

20

10
force (F)

−10

−20

−30

−40

−50
0 200 400 600 800 1000 1200
nombre d’essai

Commentaire :
L’application de RNC sur ce système ce dernier il converge et les résultats illustrés par
les figures ci-dessus, on peut dire que le réseau neuronal contrôleur a donné un très
bon résultat cela démontre l’efficacité de ce dernier dans la commande de ce système
de ce système.

p. 13
Commande neuronale d’un pendule inversé

14.Conclusion
Cette expérience consiste à effectuer un essai de présentation d’une possibilité d’étudier ou
d’appliquer la commande par réseau de neurone artificielles, sur les systèmes non linaires,
notre système impliqué sur l’étude (la résolution) de la stabilité d’un pendule inversé en
utilisant les réseaux de neurone artificiel, on utilise l’identification et la commande
(contrôleur) de ce dernier.
Notre étude consiste a utilisé les réseaux de neurones multi couche MLP, la réalisation se fait
en appliquant les propriétés d’apprentissage, la propagation directe, rétropropagation,
procédure gardaient adapte -poids.
Donc ce travail consiste sur la généralité de RN et MLP, puis la démonstration de
l’algorithme d’apprentissage (mathématiquement) et présenter le pendule inversé, et on a
montré la présentation de l’étude de système en utilisant l’identification par RNI et par la
suite la commande par RNC et ainsi on a présenté les résultats de la simulation. A la fin on a
réussi a convergé le système et avoir sa stabilisation.

p. 14
Commande neuronale d’un pendule inversé

p. 15