RN
RN
??
Université Abdelmalek Essaadi
Département de Mathématiques
Mon PFE
Préparé par :
Ghizlane Malki
Fatima Zohra El Gharbaoui
15 juin 2025
3
4
Table des matières
5
2 Intégration des probabilités dans les architectures neuronales 25
2.1 Modélisation des données par des lois de probabilité . . . . . . . . . . . . 25
2.1.1 Loi Normale (ou Gaussienne) . . . . . . . . . . . . . . . . . . . . 25
2.1.2 Loi Catégorielle et Multinomiale . . . . . . . . . . . . . . . . . . . 26
2.1.3 Loi de Bernoulli . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.1.4 Fonctions d’Activation . . . . . . . . . . . . . . . . . . . . . . . . 27
6
Chapitre 1
Optimisation Numérique des Fonctions de
Coût dans les Réseaux Neuronaux
1.1 Introduion
La science des données vise à identifier des motifs complexes dans les grands volumes
de données, appelés patterns. Grâce à l’apprentissage automatique, les algorithmes sont
entraînés à reconnaître ces schémas pour automatiser des tâches ou faire des prédictions.
L’apprentissage se fait par exposition répétée aux données, permettant aux algo-
rithmes d’améliorer leur performance avec l’expérience, sans instructions explicites. Parmi
les techniques utilisées, la descente de gradient est l’un des algorithmes d’optimisation les
plus importants.
7
1.2 Descente de gradient
Figure 1.1 – Illustration d’une fonction de coût présentant plusieurs minima locaux. La
descente de gradient suit la pente la plus forte et peut se stabiliser sur un minimum local
sans atteindre le minimum global.
Dans cette partie, nous intéressons à des problèmes fondamentalement non linéaires
8
LES RÉSEAUX NEURONAUX PFE
de la forme :
min f (w).
w∈Rd
Hypothèse
min f (w)
w∈Rd
est de classe CL1,1 (Rd ) pour une certaine constante L > 0, c’est-à-dire que f est
continûment différentiable et que son gradient est L-Lipschitzien. De plus, f est minorée
sur Rd par une constante flow ∈ R, c’est-à-dire :
f (x) ≥ flow , ∀x ∈ Rd .
Notre but est donc de construire et d’analyser des algorithmes basés sur l’information
fournie par le gradient.
L’algorithme de descente de gradient est la méthode la plus classique en optimisation
différentiable. Elle repose sur le principe élémentaire suivant, tiré de la condition
d’optimalité
[w∗ minimum local de f ] =⇒ ∇f (w∗ ) = 0
Soit w ∈ Rd tel que ∇f (w) = 0. Dans ce cas, w est un point critique de la fonction f ,
c’est-à-dire un point où le gradient s’annule.
9
1.2.3 Condition d’Optimalité
Soit une fonction différentiable f : Rd → R. Un point w∗ est un minimum local si :
wk+1 = wk − αk ∇f (wk )
wk+1 = wk ⇒ convergence.
w
2
Interprétations :
10
LES RÉSEAUX NEURONAUX PFE
— Minimum global : Le point w = 2 est le minimum global. La descente de
gradient converge naturellement vers ce point, car la fonction est convexe et le
gradient s’annule ici.
— Maximum local : Le point w = 0 est un maximum local. La descente de gradient
ne converge pas vers ce point car la direction du gradient est montante, ce qui ne
favorise pas la minimisation.
— Point selle : Le point w = 0 est un point selle. Le gradient s’annule mais ce n’est
ni un minimum ni un maximum. La descente de gradient peut s’y bloquer ou le
contourner selon l’initialisation.
Conclusion
La descente de gradient permet de converger vers un point critique w∗ . Selon la
nature de ∇2 f (w∗ ), ce point est un minimum, un maximum ou un point selle. Pour
l’apprentissage automatique, l’objectif est souvent de minimiser une fonction de perte
convexe ou quasi-convexe.
1.2.7 Alghorithme
L’algorithme de descente de gradient est un processus itératif qui se base sur l’itération
suivante :
w ← w − α∇f (w), (2)
11
Algorithm 1 Descente de gradient pour la minimisation d’une fonction f
Entrée : fonction f : Rd → R, gradient ∇f , point initial w0 ∈ Rd , règle de pas
αk > 0 Initialisation : w ← w0 k = 0, 1, 2, . . . Calculer le gradient : gk ← ∇f (w)
∥gk ∥ < ε Arrêter (convergence atteinte) Choisir αk > 0 Mise à jour : w ← w − αk · gk
1 import numpy as np
2
5 w = w0 . copy ()
6 history = [ w . copy () ]
7
17 return w , history
1.3.1 Définition
Le gradient stochastique est une variante de l’algorithme de descente de gradient
classique, utilisée pour minimiser une fonction objectif exprimée comme une somme de
fonctions individuelles. Ce cas est fréquent en apprentissage automatique, notamment
dans les problèmes de régression ou de classification. La fonction à minimiser est
généralement de la forme :
n
1X
f (w) = fi (w),
n i=1
12
LES RÉSEAUX NEURONAUX PFE
coûteux pour de grands ensembles de données — l’algorithme de descente de gradient
stochastique (SGD) effectue une mise à jour à partir du gradient d’un seul terme fik ,
choisi au hasard ou par permutation. La mise à jour des paramètres à l’itération k est
donnée par :
wk+1 = wk − αk ∇fik (wk ),
1.3.2 Algorithme
Comme ces points ne sont clairement pas alignés, on cherche un modèle pour les
ajuster par une parabole de la forme :
y = x2 + ax + b
13
Figure 1.2 – Enter Caption
Les fonctions d’erreur locales sont définies pour chaque point comme :
2
Ei (a, b) = yi − x2i + axi + b
Nous cherchons à minimiser cette fonction d’erreur globale en utilisant des méthodes
d’optimisation. Voici les premières itérations pour deux méthodes d’optimisation à partir
de l’initialisation (a0 , b0 ) = (1, 1) avec un pas d’apprentissage δ = 0,01 :
— Descente de gradient classique : on calcule le gradient sur l’ensemble des points
à chaque itération.
— Descente de gradient stochastique (SGD) : on met à jour (a, b) en utilisant
un seul point aléatoire à chaque itération.
14
LES RÉSEAUX NEURONAUX PFE
k (ak , bk ) E(ak , bk )
0 (1, 1) 284
1 (−0.54, 0.52) 84.87
2 (−1.36, 0.29) 28.68
0 (1, 1) 284
1 (0.72, 0.86) 236.43
2 (0.72, 0.88) 237.41
3 (−0.38, 0.60) 100.74
4 (−0.40, 0.58) 97.92
5 (−0.55, 0.50) 83.25
6 (−0.55, 0.53) 83.91
7 (−1.22, 0.37) 36.48
8 (−1.22, 0.36) 36.29
15
Figure 1.3 – Comparaison entre la descente de gradient classique (à gauche) et la
descente de gradient stochastique (à droite)
— La descente de gradient classique réalise des mises à jour à partir du gradient global
(calculé sur toutes les données).
— La descente de gradient stochastique effectue des mises à jour plus fréquentes avec
un gradient local, ce qui rend chaque itération plus rapide, mais nécessite davantage
d’itérations.
Voici un rappel des points obtenus lors des premières itérations (voir tableaux
précédents) :
— Descente de gradient : (a0 , b0 ) = (1, 1) → (a1 , b1 ) = (−0.54, 0.52) → (a2 , b2 ) =
(−1.36, 0.29)
— Descente stochastique :
(a′0 , b′0 ) = (1, 1), (a′1 , b′1 ) = (0.72, 0.86), (a′2 , b′2 ) = (0.72, 0.88),
(a′3 , b′3 ) = (−0.38, 0.60), (a′4 , b′4 ) = (−0.40, 0.58), (a′5 , b′5 ) = (−0.55, 0.50)
16
LES RÉSEAUX NEURONAUX PFE
Interpretaion
Cette image illustre la différence entre la descente de gradient classique, qui suit
un chemin régulier vers le minimum en utilisant toutes les données, et la descente
stochastique, dont le trajet est plus irrégulier car elle utilise une seule donnée à la fois.
Malgré les zigzags, les deux méthodes convergent vers le même minimum.
Conclusion
Sur cet exemple, les points sont exactement situés sur la parabole d’équation :
y = x2 + ax + b avec a = −3, b = 2.
Bien sûr cette méthode est encore plus intéressante lorsqu’il s’agit de trouver une
parabole qui ne contient pas l’ensemble des points donnés.
La descente de gradient stochastique est une méthode qui peut être plus efficace que
la version classique dans certains contextes, notamment :
17
— Elle n’utilise qu’une seule donnée à la fois pour mettre à jour les paramètres, ce
qui réduit considérablement l’utilisation de la mémoire.
— Elle évite les coûts liés au calcul du gradient global, requis par la descente de
gradient classique.
— Elle permet des mises à jour fréquentes et rapides, ce qui est particulièrement utile
pour les grands ensembles de données.
Ainsi, bien qu’elle puisse présenter plus de bruit dans la trajectoire d’optimisation,
elle s’avère souvent plus adaptée dans un cadre de traitement de données massives ou en
apprentissage automatique en ligne.
3 # D o n n e s : ( x_i , y_i )
4 data = np . array ([
5 [2 , 0] ,
6 [0 , 2] ,
7 [4 , 6] ,
8 [1 , 0]
9 ])
10
11 # Initialisation
12 a , b = 1.0 , 1.0
13 lr = 0.01 # Taux d ’ apprentissage
14 iterations = 200
15 N = len ( data )
16
18
LES RÉSEAUX NEURONAUX PFE
27 i = k % N
28 xi , yi = data [ i ]
29 da , db = gradient ( xi , yi , a , b )
30 a -= lr * da
31 b -= lr * db
32 if k % 50 == 0:
33 print ( f " Iter { k :3 d } : a = { a :.4 f } , b = { b :.4 f } " )
34
Résultat attendu :
Après 200 itérations, on obtient typiquement :
a ≈ −2.9984, b ≈ 1.9954
Ce qui est très proche de la solution théorique a = −3, b = 2 pour laquelle la fonction
d’erreur globale est nulle.
1.4.1 Définition
La descente de gradient stochastique avec momentum est une amélioration de la
descente stochastique classique. Elle vise à accélérer la convergence tout en réduisant les
oscillations, notamment dans des vallées étroites du paysage de la fonction à optimiser.
où :
— δ est le taux d’apprentissage,
— ∇Ei est le gradient calculé sur un seul échantillon i,
— i = k mod N avec N le nombre total d’échantillons.
19
Avec le momentum, on introduit un vecteur de vitesse accumulée :
où :
— µ ∈ [0, 1) est le coefficient de momentum (typiquement 0.9),
— vk agit comme une mémoire des gradients précédents.
1.4.4 Exemple
Cette fonction admet un minimum global en (a∗ , b∗ ) = (−3, 2). On applique la descente
stochastique avec momentum en partant du point (1, 1).
20
LES RÉSEAUX NEURONAUX PFE
1.4.5 Formules utilisées
ak+1 = ak − va(k+1)
(k+1)
bk+1 = bk − vb
Calculs itératifs
— Itération 0 :
— Itération 1 :
∇E(0.2, 1.2) = (6.4, −1.6)
va = 0.9 · 0.8 + 0.1 · 6.4 = 1.36, vb = 0.9 · (−0.2) + 0.1 · (−1.6) = −0.34
— Itération 2 :
∇E(−1.16, 1.54) = (3.68, −0.92)
va = 0.9 · 1.36 + 0.1 · 3.68 = 1.592, vb = 0.9 · (−0.34) + 0.1 · (−0.92) = −0.398
Tableau récapitulatif
Itération k ak bk va vb
0 1.000 1.000 0.800 -0.200
1 0.200 1.200 1.360 -0.340
2 -1.160 1.540 1.592 -0.398
3 -2.752 1.938 - -
21
Figure 1.4 – Convergence de (ak , bk ) vers le minimum global avec momentum
Observation
Résultat
Après 50 itérations, le point (ak , bk ) converge rapidement vers le minimum (−3, 2),
démontrant l’efficacité du momentum pour accélérer la descente dans des directions
stables.
22
LES RÉSEAUX NEURONAUX PFE
1.4.6 Code Python
Voici une implémentation Python simple de la descente de gradient stochastique avec
momentum, appliquée à la fonction :
1 import numpy as np
2 import matplotlib . pyplot as plt
3
4 # Fonction d ’ erreur
5 def E (a , b ) :
6 return ( a + 3) **2 + ( b - 2) **2
7
8 # Gradient de la fonction
9 def gradient (a , b ) :
10 dE_da = 2 * ( a + 3)
11 dE_db = 2 * ( b - 2)
12 return dE_da , dE_db
13
14 # Initialisation
15 a , b = 1.0 , 1.0
16 va , vb = 0.0 , 0.0
17 lr = 0.1
18 momentum = 0.9
19 iterations = 50
20
21 history = [( a , b ) ]
22
34 # Trajectoire de convergence
35 history = np . array ( history )
36 plt . plot ( history [: , 0] , history [: , 1] , ’o - ’ , label = ’ SGD + momentum ’)
37 plt . plot ( -3 , 2 , ’r * ’ , markersize =12 , label = ’ Minimum attendu ’)
23
38 plt . xlabel ( " a " )
39 plt . ylabel ( " b " )
40 plt . title ( " Convergence avec SGD + momentum " )
41 plt . grid ( True )
42 plt . legend ()
43 plt . show ()
Resultat
Ce programme illustre bien comment les paramètres a et b convergent rapidement
vers leur minimum théorique (−3, 2), grâce à l’effet d’accélération du momentum.
Itération a b E(a,b)
0 1.6000 1.2000 29.9600
10 -1.3260 1.7686 3.8451
20 -2.5307 1.9422 0.3080
30 -2.8553 1.9853 0.0241
40 -2.9606 1.9965 0.0019
49 -2.9895 1.9989 0.0002
24
Chapitre 2
Intégration des probabilités dans les
architectures neuronales
Densité de probabilité :
(x − µ)2
1
fX (x) = √ exp −
2πσ 2 2σ 2
Propriétés :
— Espérance : E[X] = µ
— Variance : Var(X) = σ 2
Cas particulier : Loi normale centrée réduite
Lorsque la moyenne est nulle (µ = 0) et la variance est égale à un (σ 2 = 1), on parle
de loi normale centrée réduite. On la note :
X ∼ N (0, 1)
25
Cette forme particulière est très utilisée en statistiques pour la standardisation des
données et sert de base pour de nombreuses approximations théoriques (ex. : théorème
central limite).
Cette loi est souvent utilisée comme prior sur les poids : on suppose que chaque
poids suit une distribution normale wi ∼ N (0, σ 2 ). Elle intervient également dans la
modélisation de la vraisemblance dans les tâches de régression bayésienne.
Propriétés :
— E[Xi ] = npi
— Var(Xi ) = npi (1 − pi )
— Cov(Xi , Xj ) = −npi pj , pour i ̸= j
Ces lois sont utilisées pour modéliser la vraisemblance en classification. La sortie du
réseau représente un vecteur de probabilités sur les classes. L’utilisation de l’entropie
croisée (cross-entropy) comme fonction de perte revient à maximiser la log-vraisemblance
de la loi catégorielle.
P (X = x) = px (1 − p)1−x , x ∈ {0, 1}
Propriétés :
— Espérance : E[X] = p
— Variance : Var(X) = p(1 − p)
26
La loi de Bernoulli intervient dans la technique du drop-out, où chaque neurone est
conservé avec une probabilité p et supprimé avec une probabilité 1−p. Le masque de drop-
out est ainsi un vecteur de variables aléatoires suivant des lois de Bernoulli indépendantes.
Cela permet :
— D’introduire un bruit stochastique, interprété comme une régularisation bayé-
sienne,
— De modéliser l’incertitude sur l’activation des neurones,
— De réduire le sur-apprentissage (overfitting) et améliorer la généralisation du
réseau.
n
!
X
y=ϕ w i xi + b
i=1
Fonctions courantes :
— Fonction sigmoïde :
1
σ(z) =
1 + e−z
Utilité : Modélise des probabilités dans les tâches de classification binaire.
Inconvénient : gradients faibles pour |z| grand.
— Fonction tanh :
ez − e−z
tanh(z) =
ez + e−z
Utilité : Fournit des sorties centrées sur 0, ce qui peut améliorer la convergence
pendant l’apprentissage.
— Fonction ReLU :
ReLU(z) = max(0, z)
Utilité : Favorise un apprentissage rapide dans les réseaux profonds. Elle évite le
problème de vanishing gradients et est très utilisée dans la pratique.
27
28
Chapitre 3
optimisation dans l’apprentissage
automatique
3.1 AdaGrad
η
θt+1 = θt − √ · gt
rt + ϵ
où :
— rt [i] est la somme cumulative des carrés des gradients de la i-ème composante
jusqu’à l’itération t,
— gt [i] est le gradient stochastique de la i-ème composante à l’itération t,
— ϵ est un terme de régularisation (typiquement très petit) pour éviter la division
par zéro,
— η est le taux d’apprentissage global.
29
Cette méthode permet à AdaGrad de mieux gérer les situations où les données
sont clairsemées (sparse data), en attribuant un taux d’apprentissage plus élevé aux
paramètres moins fréquemment mis à jour.
Algorithme d’AdaGrad
Description
Dans cet exemple, nous appliquons l’algorithme de descente de gradient AdaGrad à une
fonction simple définie par :
J(θ) = θ2
L’objectif est de minimiser cette fonction convexe à l’aide d’AdaGrad, qui adapte
dynamiquement le taux d’apprentissage pour chaque paramètre en fonction de l’historique
des gradients.
1 import numpy as np
2 import matplotlib . pyplot as plt
3
30
8 return 2 * theta
9
10 theta = 10
11 eta = 0.1
12 epsilon = 1e -8
13 r = 0
14 iterations = 100
15
16 loss_history = []
17 lr_history = []
18
Listing 3.1 – Évolution de la perte J(θ) et du taux d’apprentissage effectif ηt avec AdaGrad
31
Résultats du code
Figure 3.1 – Évolution de J(θ) avec Figure 3.2 – Évolution du taux d’appren-
l’algorithme AdaGrad tissage avec l’algorithme AdaGrad
Limites d’AdaGrad
Limites d’Adagrad
Adagrad adapte le taux d’apprentissage ηt pour chaque paramètre en fonction de la
somme cumulée des carrés des gradients jusqu’à l’itération t :
32
t
η X
ηt = √ avec rt = gi2
rt + ε i=1
θt+1 = θt − ηt · gt
qui devient de plus en plus petite, même lorsque θt n’a pas encore atteint le minimum
de la fonction de perte f (θ).
Cela limite la capacité de l’algorithme à faire des ajustements significatifs, ce qui peut
entraîner une stagnation prématurée et une optimisation inefficace de la fonction de perte.
3.2 RMSprop
La méthode RMSProp (Root Mean Square Propagation) a été proposée pour
surmonter une limite majeure d’AdaGrad : la décroissance rapide du taux d’apprentissage
due à l’accumulation des gradients au cours du temps.
RMSProp introduit une approche fondée sur une moyenne glissante exponentielle
du carré des gradients, permettant ainsi de conserver une mémoire limitée des gradients
récents. Cette méthode ajuste dynamiquement le taux d’apprentissage tout en évitant
qu’il ne diminue trop rapidement.
La formule clé utilisée est la suivante :
où :
— E[g 2 ]t est la moyenne glissante exponentielle des carrés des gradients à l’itération
t,
— gt est le gradient au temps t,
— γ ∈ [0, 1) est le taux de décroissance, souvent fixé à γ = 0,9,
— η est le taux d’apprentissage initial,
— ε est une petite constante pour la stabilité numérique.
La mise à jour des paramètres est ensuite donnée par :
η
θt+1 = θt − p · gt
E[g 2 ]t + ε
33
Algorithme RMSProp
Description
Dans ce programme, nous appliquons l’algorithme de descente de gradient RMSProp
à la même fonction que celle utilisée pour AdaGrad, afin de visualiser les différences entre
ces deux algorithmes.
Code Python
1 import numpy as np
2 import matplotlib . pyplot as plt
3
4 # Fonction de c o t : J ( ) = theta ^2
5 def cost ( theta ) :
6 return theta **2
7
8 # Gradient de J ( )
9 def gradient ( theta ) :
10 return 2 * theta
11
34
12 # Initialisation
13 theta = 10
14 eta = 0.1
15 epsilon = 1e -8
16 r = 0
17 rho = 0.9 # Coefficient de lissage RMSProp
18 iterations = 30
19
35
Listing 3.2 – Descente de gradient avec RMSProp
Résultat du code
Figure 3.3 – Évolution de J(θ) avec Figure 3.4 – Évolution du taux d’appren-
l’algorithme RMSprop tissage avec l’algorithme RMSProp
36
Ensuite, ηt se stabilise autour d’une petite valeur, ce qui permet d’avoir des pas plus
petits et plus stables dans la descente, évitant ainsi les oscillations ou divergences. .
3.3 Adam
gt = ∇θ f (θt ) (gradient)
mt = β1 · mt−1 + (1 − β1 ) · gt (moyenne mobile des gradients)
vt = β2 · vt−1 + (1 − β2 ) · gt2 (moyenne mobile des carrés des gradients)
mt
m̂t = (correction du biais)
1 − β1t
vt
v̂t =
1 − β2t
m̂t
θt+1 = θt − α · √
v̂t + ε
Où :
— θt : paramètre à l’itération t
— gt : gradient de la fonction de coût
— mt : moyenne mobile des gradients (Momentum)
— vt : moyenne mobile des carrés des gradients (RMSProp)
— m̂t , v̂t : versions corrigées du biais
37
— α : taux d’apprentissage
— β1 , β2 : coefficients de pondération
— ε : petit terme pour éviter la division par zéro
3. Exemple numérique
Paramètres de l’algorithme :
Paramètre Valeur
θ0 0.5
α 0.1
β1 0.9
β2 0.999
ε 10−8
Itérations 3
Étapes du calcul :
— gt = 2θt
— mt = β1 mt−1 + (1 − β1 )gt
— vt = β2 vt−1 + (1 − β2 )gt2
— m̂t = mt /(1 − β1t )
— v̂t = vt /(1 − β2t )
— θt+1 = θt − α · √m̂t
v̂t +ε
Itération 1
38
Itération 2
Itération 3
Résumé :
Itération θt f (θt )
0 0.5000 0.2500
1 0.4000 0.1600
2 0.3011 0.0907
3 0.2048 0.0419
39
3.3.1 Adagrad vs RMSprop vs Adam
Description
Dans cette partie, nous avons appliqué les trois algorithmes d’optimisation à la même
fonction et avec le même nombre d’itérations, afin de comparer leurs comportements
respectifs et identifier celui qui converge le plus efficacement vers le minimum.
(a) Taux d’apprentissage ef- (b) Fonction de perte J(θ) (c) Évolution du paramètre
fectif θ
Les figures comparent les algorithmes Adagrad, RMSprop et Adam sur la fonction
J(θ) = θ2 .
— Taux d’apprentissage : Adagrad décroit rapidement, provoquant un arrêt
prématuré. RMSprop et Adam maintiennent un taux plus stable grâce aux
moyennes mobiles, Adam ajoutant une correction de moment pour une meilleure
dynamique.
— Fonction de perte : Adam converge le plus vite, RMSprop suit bien, Adagrad
ralentit à cause de la baisse agressive du taux d’apprentissage.
— Paramètre θ : Adam atteint le minimum rapidement et en douceur, RMSprop
descend progressivement, Adagrad ralentit après les premières itérations, limitant
son exploration.
En résumé, Adam combine efficacité et stabilité, RMSprop est performant, tandis
qu’Adagrad reste limité pour des optimisations longues.
40