TP1 : Descente de Gradient
Optimisation en Machine Learning – Niveau Master
Mohamed Dhleima
Faculté des Sciences et TechniquesMaster Intelligence Artificielle
Parcours MLDS NLPCV
2 mars 2026
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 1 / 14
Introduction
La descente de gradient est un algorithme d’optimisation utilisé pour minimiser la
fonction de perte d’un modèle en ajustant progressivement ses paramètres.
Principe : Se déplacer dans la direction du gradient négatif (direction de la plus
forte diminution de la fonction de perte).
Applications essentielles :
La régression linéaire
La régression logistique
Les réseaux de neurones
Les SVM
La factorisation matricielle
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 2 / 14
Régression Linéaire
Modèle :
ŷ = wx + b
Fonction de perte (MSE) :
n
1 X
L= (ŷi − yi )2
2n
i=1
Rôle de la descente de gradient :
Calcul des gradients dw et db
Mise à jour des paramètres :
w = w − η · dw , b = b − η · db
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 3 / 14
Régression Linéaire - Code
import numpy as np
import [Link] as plt
[Link](0)
n = 200
X = [Link](-3, 3, n).reshape(-1, 1)
y = 2 * [Link]() - 0.3 + 0.7 * [Link](n)
w, b = 0.0, 0.0
lr = 0.05
epochs = 200
losses = []
for _ in range(epochs):
preds = w * [Link]() + b
err = preds - y
loss = (err**2).mean() / 2
[Link](loss)
dw = ([Link]() * err).mean()
db = [Link]()
w -= lr * dw
b -= lr * db
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 4 / 14
Régression Logistique (Classification Binaire)
Fonction Sigmoïde :
1
σ(z) =
1 + e −z
Fonction de perte (Cross-Entropy) :
n
1X
L=− [yi log(ŷi ) + (1 − yi ) log(1 − ŷi )]
n
i=1
Rôle de la descente de gradient :
Calcul des gradients de la cross-entropy
Mise à jour des poids pour améliorer la classification
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 5 / 14
Régression Logistique - Code
import numpy as np
import [Link] as plt
from [Link] import make_blobs
[Link](1)
X, y = make_blobs(n_samples=300, centers=2, cluster_std=1.2)
w = [Link]([Link][1])
b = 0.0
lr = 0.2
losses = []
def sigmoid(z): return 1 / (1 + [Link](-z))
for _ in range(300):
z = [Link](w) + b
p = sigmoid(z)
loss = -(y * [Link](p + 1e-12) +
(1 - y) * [Link](1 - p + 1e-12)).mean()
[Link](loss)
dw = [Link](p - y) / len(X)
db = (p - y).mean()
w -= lr * dw
b -= lr * db
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 6 / 14
Softmax Regression (Classification Multiclasse)
Fonction Softmax :
exp(zi,k )
Pi,k = PK
j=1 exp(zi,j )
Fonction de perte (Cross-Entropy Multiclasse) :
K
X
L=− yj log(ŷj )
j=1
Mise à jour :
∂L ∂L
W ←W −η· , b ←b−η·
∂W ∂b
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 7 / 14
Softmax Regression - Code
import numpy as np
import [Link] as plt
from [Link] import make_blobs
[Link](2)
X, y = make_blobs(n_samples=450, centers=3, cluster_std=1.5)
K = 3
W = [Link](([Link][1], K))
b = [Link](K)
lr = 0.2
epochs = 300
losses = []
def softmax(z):
z -= [Link](axis=1, keepdims=True)
expz = [Link](z)
return expz / [Link](axis=1, keepdims=True)
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 8 / 14
Réseau de Neurones (1 couche cachée)
Architecture :
Entrée x ∈ RD
Couche cachée (H neurones) : activation ReLU
Couche de sortie (K neurones) : activation Softmax
Propagation avant :
z(1) = xW(1) + b(1)
a(1) = ReLU(z(1) ) = max(0, z(1) )
z(2) = a(1) W(2) + b(2)
ŷ = Softmax(z(2) )
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 9 / 14
Réseau de Neurones - Rétropropagation
Gradient de la sortie :
∂L 1
= (Ŷ − Y)
∂z(2) m
Mise à jour couche de sortie :
∂L ∂L
= a(1)T · (2)
∂W(2) ∂z
m
∂L X ∂L
=
∂b(2) i=1
∂z(2) i,:
Rétropropagation vers couche cachée :
∂L ∂L
(1)
= (2) · W(2)T
∂a ∂z
∂L ∂L
(1)
= (1) ⊙ 1{z(1) >0}
∂z ∂a
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 10 / 14
Réseau de Neurones - Initialisation
import numpy as np
import [Link] as plt
from [Link] import make_blobs
[Link](3)
X, y = make_blobs(n_samples=450, centers=3, cluster_std=1.5)
K = 3
D = [Link][1]
H = 32
W1 = [Link](D, H) * [Link](2 / D)
b1 = [Link](H)
W2 = [Link](H, K) * [Link](2 / H)
b2 = [Link](K)
lr = 0.05
epochs = 200
batch = 64
losses = []
relu = lambda z: [Link](0, z)
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 11 / 14
Réseau de Neurones - Entraînement (Partie 1)
for _ in range(epochs):
idx = [Link](len(X))
Xs, Ys = X[idx], y[idx]
for i in range(0, len(Xs), batch):
xb = Xs[i:i + batch]
yb = Ys[i:i + batch]
z1 = [Link](W1) + b1
a1 = relu(z1)
logits = [Link](W2) + b2
probs = softmax(logits)
Yb = np.zeros_like(probs)
Yb[[Link](len(yb)), yb] = 1
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 12 / 14
Réseau de Neurones - Entraînement (Partie 2)
dlog = (probs - Yb) / len(yb)
dW2 = [Link](dlog)
db2 = [Link](axis=0)
da1 = [Link](W2.T)
dz1 = da1 * (z1 > 0)
dW1 = [Link](dz1)
db1 = [Link](axis=0)
W2 -= lr * dW2
b2 -= lr * db2
W1 -= lr * dW1
b1 -= lr * db1
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 13 / 14
Conclusion
Points clés :
La descente de gradient réduit progressivement la fonction de perte
Elle permet d’apprendre les poids optimaux
Elle est au cœur du Deep Learning moderne
Applications :
Régression
Classification
Réseaux de neurones
SVM
Systèmes de recommandation
Mohamed Dhleima (Faculté des Sciences et TechniquesMaster
TP1 : Descente
Intelligence
de Gradient
Artificielle Parcours MLDS 2NLPCV)
mars 2026 14 / 14