Un réseau de neurones récurrent (RNN, recurrent neural network) est un type de réseau de neurones artificiels principalement utilisé dans la reconnaissance automatique de la parole, dans l'écriture manuscrite et dans le traitement automatique du langage naturel, en particulier dans la traduction automatique.
Les RNN sont conçus de manière à reconnaître les caractéristiques séquentielles et pour prédire le scénario suivant le plus probable.
Les réseaux LSTM (Long Short Term Memory ou mémoire à long terme et à court terme ) sont un type spécial de RNN, capable d'apprendre les dépendances à long terme. Ils ont été introduits par Hochreiter et Schmidhuber en 1997, et ont été par la suite affinés et popularisés à travers plusieurs travaux. Ils fonctionnent extrêmement bien sur une grande variété de problèmes et sont maintenant largement utilisés.
Lien pour la version vidéo :
https://youtube.com/playlist?list=PLzjg2z2kYUrjcL_UhvQawGGB85UA9rtNO
Un réseau de neurones récurrent (RNN, recurrent neural network) est un type de réseau de neurones artificiels principalement utilisé dans la reconnaissance automatique de la parole, dans l'écriture manuscrite et dans le traitement automatique du langage naturel, en particulier dans la traduction automatique.
Les RNN sont conçus de manière à reconnaître les caractéristiques séquentielles et pour prédire le scénario suivant le plus probable.
Les réseaux LSTM (Long Short Term Memory ou mémoire à long terme et à court terme ) sont un type spécial de RNN, capable d'apprendre les dépendances à long terme. Ils ont été introduits par Hochreiter et Schmidhuber en 1997, et ont été par la suite affinés et popularisés à travers plusieurs travaux. Ils fonctionnent extrêmement bien sur une grande variété de problèmes et sont maintenant largement utilisés.
Lien pour la version vidéo :
https://youtube.com/playlist?list=PLzjg2z2kYUrjcL_UhvQawGGB85UA9rtNO
1. Le Perceptron, le début d’une p
f (x 1 ,…, x p ) = H ∑ ω j x j − θ avec
intelligence artificielle j =1
y
Les capacités d’apprentissage du cerveau humain
sont fascinantes. Avec les capacités calculatoires
promises par l’informatique et dans l’objectif y = H (x )
d’imiter le cerveau humain, la théorie des réseaux
de neurones à commencer à poindre au milieu du O x
XXème siècle, notamment avec l’introduction du Action d’un perceptron
perceptron en 1957 par Franck Rosenblatt.
L’action du perceptron est entièrement déterminée
Neurone formel par la connaissance des poids synaptiques ω1 ,…, ω p
On estime que le cerveau humain contient entre un et du seuil d’activation θ . Il convient maintenant
et cent milliards de neurones. Chaque neurone est de calculer les valeurs de ces paramètres en
connecté en moyenne à 10.000 autres par le biais de fonction de l’action attendue par ce perceptron.
synapses. Les stimulations synaptiques perçues par L’enjeu est alors, à partir d’une base d’exemples de
un neurone peuvent activer celui-ci qui transmet valeurs prises, de déterminer, lors d’une phase
alors un signal électrique aux neurones suivants ou d’apprentissage, les valeurs des paramètres pour
à d’autres cellules. que le perceptron réagisse comme sur cette base
Le perceptron a pour objectif d’imiter la stimulation d’exemples.
d’un neurone (sortie) par des neurones voisins Si par exemple nous souhaitons simuler l’opérateur
(entrée). Dans un premier temps, nous allons logique « Et », nous disposons de la base
considérer des neurones binaires : un neurone a la d’apprentissage complète
valeur 1 s’il est actif et la valeur 0 sinon. L’état du
neurone de sortie correspond à la réponse du (0,0) ֏ 0 , (1,0) ֏ 0 , (0,1) ֏ 0 et (1,1) ֏ 1
perceptron tandis que les p neurones d’entrée Si la base d’apprentissage n’est pas exhaustive, on
déterminent la variable fonctionnelle sur laquelle espère que, confronté à une stimulation nouvelle, le
opère le perceptron. Le perceptron apparaît alors perceptron réagira « au mieux » compte tenu des
comme une fonction exemples déjà appris.
{0,1}p → {0,1}
Cependant, avant de préciser le mécanisme de la
f :
phase d’apprentissage, répondons à la question
(x 1 ,…, x p ) ֏ y = f (x 1 ,…, x p )
suivante :
que l’on peut schématiser sous la forme suivante Que peut apprendre un perceptron ?
x1 x 2 x 3 ⋯ x p Dans l’espace ℝ p , l’équation
Entrée
p
∑ω x
j =1
j j =θ
y définit généralement un hyperplan séparant l’espace
Sortie
ℝ p en deux demi-espaces. Selon que le p -uplet
Pour définir l’action de la fonction f , on considère (x1 ,…, x p ) appartient à l’un ou l’autre de ces demi-
que les neurones d’entrée peuvent stimuler le
espaces, la valeur prise par f (x1 ,…, x p ) sera égale à
neurone de sortie par le biais de poids synaptiques
notés ω1 ,…, ω p . On somme alors les poids 0 ou 1. Par suite, un échantillon d’exemples pourra
être appris par un perceptron si et seulement s’il est
synaptiques des neurones actifs pour calculer le linéairement séparable, c’est-à-dire que les
stimuli généré par une entrée (x 1 ,…, x p ) éléments envoyés sur 0 peuvent être séparés de
p ceux envoyés sur 1 par un hyperplan. Par exemple
∑ω x j j l’opérateur logique « Et » peut être simulé par un
j =1 perceptron alors que le « Ou exclusif » ne le peut
Si cette quantité est supérieure à un certain seuil pas.
d’activation θ , on considère que le neurone de
sortie est activé. Ainsi, nous pouvons préciser
l’action de la fonction f :
p (0,1) (1,1) (0,1) (1,1)
1 si ∑ ω x ≥ θ
j j
f (x 1 ,…, x p ) = j =1
.
0 sinon
soit encore, en introduisant la fonction d’activation
H de Heaviside (0,0) (1,0) (0,0) (1,0)
« Et » « Ou exclusif »
2. Algorithme d’apprentissage 3
Nous supposons disposer d’une base −3 −1
d’apprentissage et nous souhaitons déterminer les −1
valeurs des poids synaptiques et du seuil afin que −7
notre perceptron apprenne celle-ci. 3 seuil = 1
Pour la commodité des calculs, nous allons 3
supposer que le seuil θ définit le poids synaptique Il est intéressant de remarque qu’un poids
ω0 = −θ d’un neurone d’entrée dont la valeur x 0 synaptique négatif fort a été attribué au 5ème
est toujours égale à 1. segment. A posteriori, on peut constater que
L’action du perceptron peut alors se réécrire l’activation de ce segment influence fortement la
p
parité du chiffre considéré : l’apprentissage a induit
f : (x1 ,…, x p ) ֏ H (∑ ω j x j ) ∈ {0,1} un début d’intelligence artificiel.
j =0 Apprentissage par descente de gradient
Nous souhaitons alors déterminer les coefficients Il est regrettable que l’algorithme d’apprentissage
ω0 = −θ et ω1 ,…, ωp . On commence par initialiser précédent ne fonctionne que si la base
aléatoirement la valeur de ceux-ci. Ensuite, pour d’apprentissage est linéairement séparable. Si nous
ne pouvons être sûr a priori de cette propriété ou
chaque exemple (x1 ,…, x p ) de la base
bien si celle-ci n’est tout simplement pas vérifiée,
d’apprentissage, on compare la réponse fournie à la on peut néanmoins espérer former un perceptron
réponse attendue. Si elles sont égales, on ne modifie
pas les poids synaptiques. En revanche si la réponse Descente de gradient
fournie est 0 alors que celle attendue est 1, on
ajoute 1 aux poids synaptiques des neurones La descente de gradient a pour objectif de
d’entrée activés : ceci a pour effet d’accroître leur minimiser une fonction réelle en construisant
influence. A contrario, si la réponse fournie est 1 par un processus itératif une suite convergeant
alors que celle attendue est 0, on retire 1 aux poids vers un minimum de celle-ci. Pour cela, on part
synaptiques des neurones d’entrée activés. d’un point initial « bien choisi » et on construit
les points suivants en prenant la direction de la
L’algorithme d’apprentissage se poursuit jusqu’à ce plus grande pente durant une distance « bien
que tous les éléments de la base d’apprentissage choisie » appelée pas de la descente de gradient.
soient étudiés sans qu’aucun poids synaptiques ne
soient modifiés. On peut montrer que cet Concrètement, pour minimiser une fonction
algorithme s’arrête si et seulement si base f : ℝ → ℝ dérivable, on choisit un point initial
d’apprentissage est linéairement séparable. x 0 et un pas η pour définir la suite (x n ) par
Un exemple : Apprentissage de parité x n +1 = x n − η f ′(x n )
Considérons un afficheur numérique à sept
segments et formons un perceptron donnant la Pour une fonction f de plusieurs variable
parité du chiffre écrit, à savoir 0 s’il est pair et 1 réelles, la formule d’itération est semblable
sinon. mais fait cette fois intervenir le gradient de la
fonction.
x n x n +1 = −η.grad f (x n )
y y = f (x )
x
On commence par coder chaque chiffre en une liste O x 3 x 2 x1 x 0
de sept 0 ou 1 selon les segments allumés, liste qui La descente de gradient a des inconvénients :
constituera les neurones d’entrée du perceptron
– le choix du point initial et du pas reste
1 empirique,
6 2 0 se code 1111110, – l’algorithme peut faire converger la suite vers
7 1 se code 0110000, un minimum local,
etc.
5 3 – les termes de la suite peuvent s’échapper vers
l’infini,
4
– la convergence est relativement lente.
On procède ensuite à l’apprentissage selon
Néanmoins, pour l’optimisation des réseaux de
l’algorithme ci-dessus et l’on obtient la répartition
neurones, cet algorithme fonctionne plutôt bien.
suivante des poids synaptiques :
3. qui réponde au mieux sur cette base, c’est-à-dire On peut alors prolonger l’exemple précédent et
qui réalise un minimum d’erreur. proposer un perceptron donnant la parité d’un
Nous définissons l’erreur locale commise par le chiffre hexadécimal. Malheureusement, la base
perceptron sur un exemple d’apprentissage d’apprentissage n’est désormais plus linéairement
(x 1 ,…, x p ) ֏ y comme égale à séparable. Si l’on applique l’algorithme
d’apprentissage présenté en premier, celui-ci ne
1 2 s’arrête pas et oscille autour d’une solution
2
( f (x1 ,…, x p ) − y ) commettant cinq erreurs. En revanche, l’algorithme
par descente de gradient propose une solution ne
Nous définissons l’erreur globale du perceptron
comme étant la moyenne des erreurs locales commettant que deux erreurs.
commises sur les exemples de la base Réseaux de neurones
d’apprentissage. L’enjeu est désormais de Le fait que les perceptrons ne peuvent discriminer
minimiser cette erreur globale en déterminant des que les ensembles linéairement séparables a
poids synaptiques adaptés. L’algorithme de particulièrement réduit leur intérêt pratique.
descente de gradient (voir encadré) est un outil Cependant, vers la fin du XXème siècle se concrétise
adapté au problème de minimisation. Cependant, l’idée d’accumuler des couches de neurones
pour le mettre en place, il convient que la fonction à intermédiaires avant de produire la réponse finale.
minimiser soit de classe C 1 . Pour l’instant, l’erreur C’est l’introduction du MLP acronyme de Multi
globale n’est pas une fonction de classe C 1 en les Layer Perceptron.
poids synaptiques à cause de l’irrégularité de la x1 x 2 xp Entrée
fonction de Heaviside précédemment introduite.
Pour palier à ce défaut, nous n’allons plus supposer
binaire le neurone de sortie mais nous allons
l’autoriser à prendre des valeurs comprises entre 0
et 1 ; cela permettra éventuellement d’interpréter y1 y 2 yq Couche cachée
comme une probabilité la réponse du perceptron.
Concrètement, on introduit une fonction sigmoïde :
1
ϕ :x ∈ ℝ ֏
1 + e−x T z Sortie
y
L’algorithme de descente de gradient est adapté à la
y = ϕ (x ) minimisation de l’erreur produite par un tel réseau.
Notamment, il s’interprète comme une
rétropropagation de l’erreur en sortie en erreurs
partielles commises par les neurones activés à la
x couche précédente.
O En pratique, pour concevoir un réseau de neurones,
Le paramètre T > 0 est choisi empiriquement et se on réfléchit préalablement à son architecture en
perçoit comme un paramètre de température (quand fonction de l’action que l’on veut voir réalisée. On
T → 0 + , la fonction sigmoïde tend vers la fonction procède ensuite à son apprentissage ce qui est une
de Heaviside : on gèle l’action du perceptron). étape longue comte tenu de la lenteur des
A partir de la fonction sigmoïde, on redéfinit la algorithmes en jeux. Cependant, une fois calibré, la
réponse du perceptron réponse d’un réseau de neurone est quasi immédiate
p
et celui-ci peut être facilement reproduit.
f : (x1 ,…, x p ) ֏ ϕ (∑ ω j x j ) ∈ [0,1] De nos jours les réseaux de neurones se rencontrent
j =0 notamment dans les domaines suivants :
et désormais la fonction erreur globale est une – la reconnaissance optique de caractère, par
fonction de classe C 1 en les poids synaptiques, il exemple le tri du courrier en fonction du code
est possible de la minimiser par descente de postal,
gradient. – la prédiction bancaire : à partir de l’expérience de
Apprentissage de parité leurs précédents clients, les banques ont calibré un
réseau de neurones qui quantifie le risque commis
Avec un afficheur numérique à sept segments, il est
lors d’un accord de prêt.
aussi possible d’écrire les chiffres hexadécimaux en
introduisant