Technologies Emergentes
Partie II : Machine Learning, de la théorie à la pratique
Objectifs
Histoire de l’IA
Comprendre les principes
Savoir entrainer un modèle
Outils à disposition
Intégration dans des
solutions informatiques
Ludovic Bertin
49 ans
Architecte Logiciel
Product Owner Application Fwk
Java, SpringBoot, Quarkus, JavaEE
Docker, Kubernetes, GitOps
Ultra trail, montagne, concerts
Nouvelles technologies
Quelques questions…
Qui utilise CHAT-GPT ?
Qui n’utilise pas CHAT-GPT ?
Quelle définition donneriez-vous au Machine
Learning?
Définition
The field of study
that gives computers
the ability to learn
without being
explicitly programmed
Arthur Samuel
Modélisation
Y
X
f(x) = ax + b
Domaines d’application
Reconnaissance de nombre dans une image
Estimation du prix d'un logement selon certain
critères
Classification automatique de documents
Reconnaissance de visages en temps réel
….
1943 : neurone artificiel
Ou comment mimiquer l’être humain
f(x) = wX + b
f(X) = w1.x1 + w2.x2 + … + [Link] + b
Threshold Logical Unit
ETAPES
Aggrégation : w1.x1 + w2.x2 + … + [Link] + b
Activation : y = f > seuil ? 1 : 0
Le début du rêve
Mais il manque encore quelque chose…
1957 : Invention du perceptron
Frank Rosenblatt
1er algorithme d’auto-
apprentissage du deep
learning
Auto-apprentissage
Y 0 1
X1
f Y
X2
f(x) = wx + b
X
W = W + a(Ytrue - Y)
Auto-apprentissage
X1
0 Y
f Y
Ytrue = 1
X2
1
1
W = W + a(Ytrue - Y)
W = W + a(1 - 0)
W = W + a X
W = W + a(1-1) = W
BREAKING NEWS
L’IA va nous remplacer dans des
tâches plus ou moins complexes !!!
Ou pas….
Limitations du modèle
Y 0 1 Y 0 1 0
X X
1986 : Le perceptron multicouches
Geoffrey Everest Hinton
Egalement créateur du
modèle de reconnaissance
d’image AlexNET
Principe de fonctionnement
X1 w1
f Y1 Y 0 1 0
W3 a1
f Y
W2
a2
f Y2
X2 W4
X
Réseau de neurones
X1
f
3 neurones
f Y 2 niveaux:
- 1 niveau d’entrée
f
- 1 niveau de sortie
X2
Back-propagation
X1
f f
f f f Y
f f
X2
δf1 δf 2 δf 3 δYfinal
δw δf1 δf 2 δf 3
Descente de gradient
δYfinal . δf 3 . δf 2 . δf1 δYfinal
=
δf 3 δf 2 δf1 δw δw
Erreur
δErreur
W=W−α
δW
W
Les 4 étapes
Forward
Propagation
X1
Descente Y Calcul de
de gradient l’erreur
X2
δf 1 δf 2 δf 3 δYfinal
δw δf 1 δf 2 δf 3
Backward
Propagation
Technologie qui a émergé
lentement
1943 : invention du neurone arificiel (Warren McCulloch et Walter Pitts)
1957 : Invention du Perceptron (Frank Rosenblatt)
1986 : Perceptron Multicouche (Geoffrey Everest Hinton)
2012 : Competition ImageNet
2013 : apparition de l'IA générative
2016 : victoire en GO
2020 : GPT-3
2021 : DALL-E
2022 : CHAT GPT
Le perceptron
Zoom
Rappel
X2 0 1
X1
f Y
X2
f(x) = wx + b
X1
Ex: tumeur du sein
X1 X2 X3 X4
Y = Tumeur begnine : 0 / Tumeur maligne : 1
Frontière de décision
X2 z<0 z>0
X1
Tumeur bénigne
Agrégation
n
z = ∑i=1 wnxn +b
X z< z>
Activation
{ Y = o si z < 0
Y = 1 si z ≥ 0
X
Fonction sigmoïde
1
a(z) =
1+e −z
Fonction sigmoïde
a(z)
z=-2.5
a(z)= 0.11 z=1.4
a(z)= 0.8
=> 11% de probabilité
=> 80% de probabilité
z
Loi de Bernouilli
a(z)
y 1−y
P(Y = y) = a(z) . (1 − a(z))
0 1−0
P(Y = 0) = a(z) . (1 − a(z)) = 1 − a(z)
z
1 1−1
P(Y = 1) = a(z) . (1 − a(z)) = a(z)
P(Y = 1) = a(z)
P(Y = 0) = 1 − a(z)
X2
Agrégation
n
z = ∑i=1 wnxn +b
X1
Activation a(z)
1
a(z) =
1+e −z
z
Fonction coût (Loss function)
a(z)
{
Données y=o
Données y=1
Sortie a(z)
Erreurs
z
m
1
∑
L=− yi . log(ai) + (1 − yi) . log(1 − ai)
m i=1
Vraisemblance
y=0 y=0 y=1 y=1
P=0.8 P=0.9 P=0.9 P=0.3
m m
y 1−y
∏ ∏
L= P(Y = yi) = a(z) . (1 − a(z))
i=1 i=1
✅ L=1 ❌ L=0
Exemple
y=0 y=0 y=1 y=1
P=0.8 P=0.9 P=0.9 P=0.85
Bon ou mauvais modèle ?
m
∏
L= P(Y = yi) = 0.8 * 0.9 * 0.9 * 0.85 = 0.55
i=1
Le logarithme
log(a . b) = log(a) + log(b)
m
∏
log(L) = log( P(Y = yi))
i=1
m
∑
log(L) = log( P(Y = yi))
i=1
log(L) = log(0.8) + log(0.9) + log(0.9) + log(0.85) = − 0.259
Le logarithme
Plausibilité
m
∑
log(L) = log( P(Y = yi))
i=1
m
yi 1−yi
∑
log(L) = log( a(z) . (1 − a(z)) )
i=1
m
yi 1−yi
∑
log(L) = log( a(z) ) + log((1 − a(z)) )
i=1
m
∑
log(L) = yi . log( a(z)) + (1 − yi) . log((1 − a(z))
i=1
CQFD
∑
log(L) = yi . log( a(z)) + (1 − yi) . log((1 − a(z))
i=1
m
1
m∑
L=− yi . log(ai) + (1 − yi) . log(1 − ai)
i=1
Descente de gradient
Trouver les paramètres d’entrées W optimaux
Pour minimiser les erreurs (fonction coût)
δL
???
δW
Descente de gradient
L
δL
δW
W
δL
Wi+1 = Wi − α .
δWi
Calcul du gradient
δL δL δa δz
??? = . .
δW δa δz δw
m
1
∑
log(L) = − . yi . log( a(z)) + (1 − yi) . log((1 − a(z)))
m i=1
δL m
1
δa log(L) = − .
∑
m i=1
yi . log( a(z)) + (1 − yi) . log((1 − a(z)))
δL
=? RAPPEL : (log(x))′ =
1
δa
x
m
δL 1 1 −1
∑
=− . yi . + (1 − yi) .
δa m i=1 a 1−a

δa 1
a(z) =
δz 1+e −z
Indice: décomposer la fonction d’activation
1 −z
a(z) = g O f(z) g(x) = f(z) = 1 + e
x
δa
RAPPEL : (g O f(x))′ = g′( f(x)) . f′(x) =?
δz



δa RAPPEL : (g O f(x))′ = g′( f(x)) . f′(x)
δz
1 −1 −1
g(x) = g′(x) = 2 g′(( f(z)) =
x x (1 + e −z)2
−z −z
f(z) = 1 + e f′(z) = − e
−z
δa −1 −z e
= . − e =
δz (1 + e )
−z 2 (1 + e )
−z 2






δa 1
a(z) =
δz 1+e −z
−z −z
δa e 1 e
= = .
δz (1 + e )
−z 2 1+e −z 1+e −z
−z −z
δa e e +1 1
= a. = a . ( − )
δz 1+e −z 1+e −z 1+e −z
δa
= a(1 − a)
δz
δz
n
δwi
∑
z= wnxn + b
i=1
z = w1x1 + w2x2 + . . . + wnxn + b
δz
= xi
δwi
δL
δwi δL δa δz
δL
= . .
δwi δa δz δwi
m
δL 1 1 −1
m ∑
= − .( yi . + (1 − yi) . ) . a(1 − a) . xi
δwi i=1
a 1 − a
m
δL 1 a(1 − a) −a(1 − a)
m ∑
= − .( yi . + (1 − yi) . ) . xi
δwi i=1
a 1 − a
m
δL 1
∑
= − .( yi . (1 − a) + (1 − yi) . (−a)) . xi
δwi m i=1
δL
δwi m
δL 1
m ∑
= − .( yi . (1 − ai) + (1 − yi) . (−ai)) . xi
δwi i=1
m
δL 1
m ∑
= − .( yi − ai yi − ai + ai yi)) . xi
δwi i=1
m
δL 1
δwi m ∑
= .( ai − yi) . xi
i=1
δL
δb
δL δL δa δz
= . .
δb δa δz δb
m
δL 1
m ∑
= .( ai − yi)
δb i=1
n
∑
Agrégation z= wnxn + b
i=1
1
Activation a(z) =
1+e −z
m
1
m ∑
Coût L=− . yi . log( a(z)) + (1 − yi) . log((1 − a(z)))
i=1
m m
δL 1 δL 1
δwi m ∑ m ∑
Gradient = .( ai − yi) . xi = .( ai − yi)
i=1
δb i=1
Descente δL δL
Wi+1 = Wi − α . bi+1 = bi − α .
de gradient δWi δb
Vectorisation
Calcul Matriciel
Définition
Une matrice n × m est
un tableau de nombres
à n lignes et m colonnes
[4 5 6]
1 2 3 2
Matrice 2x3 Vecteur
3
4
Notation
a11 a12 . . . a1n
Amn = a21 a22 . . . a2n ∈ R mxn
... ... ... ...
am1 am2 . . . amn
Addition
Pour pouvoir additionner 2 matrices,
Il faut qu’elles aient les mêmes dimensions
[3 3 6] [4 5 6] [7 8 12]
4 2 1 1 2 3 5 4 4
+ =
Soustraction
Pour pouvoir soustraire une matrice à une autre,
Il faut qu’elles aient les mêmes dimensions
[3 3 6] [4 5 6] [−1 −2 0 ]
4 2 1 1 2 3 3 0 −2
− =
Multiplication
Cas simple : multiplication par un scalaire
[4 5 6] [8 10 12]
1 2 3 2 4 6
2* =
Multiplication
Cas simple : multiplication vecteur-ligne par un vecteur colonne
y1
n
[x1 x2 . . . xn] * y2
∑
... = x1y1 + x2y2 + . . . + xnyn = xiyi
yn i=1
Multiplication
Cas complexe : multiplication de 2 matrices
[3 3 6] [4 5OR6] [12 15 36]
4 2 1 1 2 3 CT
4 4 3
X RE
=
IN C
Multiplication
Cas complexe : multiplication de 2 matrices
1 2
[3 3 6] [ ] [ ]
4 2 1 15 22
X 3 4 =
42 54
5 6
4 2 1 1 2 15 22
[3 3 6] [5 6]
3 1 0 X 3 4 = 6 10
42 54
Multiplication
Cas complexe : multiplication de 2 matrices
Anm . Bmp = Cnp
∑
Cij = Aik Bkj i = 1..n j = 1..p
k=1
Transposée de matrice
1 4
[4 5 6]
1 2 3 T
A23 = A23 = 2 5
3 6
Exercice
(1 4) (2 5)
Soit: A = 2 3 1 0
B=
1. Calculez le produit C=AxB
2. Vérifiez si la multiplication est commutative
en calculant D=BxA.
3. Comparez les résultats des matrices C et D
Réponse
(1 4) (2 5) (9 20)
2 3 1 0 8 15
C=A×B= × =
(2 5) (1 4) (9 26)
1 0 2 3 2 3
D=B×A= × =
La multiplication de matrices n’est pas commutative
Exercice
Définir une matrice (6,4) ”Notes”
qui correspond aux résultats de 6 étudiants à 4 examens :
Etudiant 1 : 10 13 14 15
Etudiant 2 : 9 11 12 14
Etudiant 3 : 12 10 16 10
Etudiant 4 : 8 16 12 11
Etudiant 5 : 10 12 9 13
Etudiant 6 : 12 13 14 15
Les coefficients affectés à chaque examen sont respectivement
3, 1, 2 et 4. Définir une matrice ”Coefficients”.
Présenter en utilisant le calcul matriciel une matrice colonne
correspondant à la moyenne de chaque étudiant.
Réponse
10 13 14 15 13.1
9 11 12 14 3 11.8
12 10 16 10 1 N×C 11.8
N= C= M= =
8 16 12 11 2 10 10.8
10 12 9 13 4 11.2
12 13 14 15 13.7
Utilité des matrices dans
l’IA ?
Représentation des données
Opération sur les données
Calcul de gradient / descente de gradient
Opération sur les données
Résolution d’un système d’équation
{3x + 2y − 5z = 8
5x + y + 2z = 19
2x + 2y + 2z = 12
3 2 −5
5 1 2
2 2 2
.
x
[z]
y = [8 19 12]
−1
x 3 2 −5 3
[z] [1]
y = 5 1 2 . [8 19 12] = 2
2 2 2
Représentation des données
x11 x12
X2 0 1 x21 x22
X = ... ... ∈ R m×n
xm1 xm2
y11
X1
y21
Y = ... ∈ R m×1
m : nombre de données
n : nombre de variables ym1
Représentation des données
17.99 10.38 122.8 1001
20.57 17.77 132.9 1226
X = 19.69 21.25 130 1203
11.42 20.38 77.58 386.1
20.29 14.34 135.1 1297
1
1
Y= 1
1
1
Vectorisation des formules
Vectorisation de Z
(i) (i) (i)
z = w1.x1 + . . . + wn . xn + b
x11 x12 z11 w1.x11 + w2.x12 + b
X= x21 x22 Z= z21 = w1.x21 + w2.x22 + b
... ... ... ...
xm1 xm2 zm1 w1.xm1 + w2.xm2 + b
x11 + x12 b
[w2]
x + x w1 b
Z= 21
...
22 × + ... = X.W + b
xm1 + xm2 b
Fonction d’aggrégation
x11 x12 b
[ 2]
x21 x22 w1
X= W= w B= b
... ... ...
xm1 xm2 b
Z = X.W + B = X.W + b
Vectorisation de A
Fonction d’activation
(i) (i) 1
a(z) = σ(z) =
1+e −z
(1) (1)
a(z) σ(z) z(1)
a(z)(2)
σ(z)(2) (2) 1
A= = =σ z = σ(Z) =
... ... ... 1+e −Z
(n) (n) (n)
a(z) σ(z) z
Vectorisation de L
Fonction de coût (Log Loss)
m
1
m ∑
L=− . yi . log( a(z)) + (1 − yi) . log(1 − a(z))
i=1
m
1
m ∑
L=− . yi . log( A) + (1 − yi) . log(1 − A)
i=1
Vectorisation de la
descente de gradient
δL
Wi+1 = Wi − α .
δWi
δL
bi+1 = bi − α .
δb
Vectorisation de la
descente de gradient
δL 1 m (m)
δL δw1 m
. ( ∑i=1 ai − yi) . x1
= =
δWi δL 1 m
. ( ∑i=1 ai − (m)
yi) . x2
δw2 m
(1) (2) (m)
1 (a1 − y1) . x1 + (a2 − y2) . x1 + . . . + (am − ym) . x1
m [(a1 − (m)]
= (1) (2)
y1) . x2 + (a2 − y2) . x1 + . . . + (am − ym) . x2
Vectorisation de la
descente de gradient
(1) (2) (m)
1 (a1 − y1) . x1 + (a2 − y2) . x1 + . . . + (am − ym) . x1
δWi m [(a1 − (m)]
δL
= (1) (2)
y1) . x2 + (a2 − y2) . x1 + . . . + (am − ym) . x2
(1) (2) (m)
a1 y1
x1 + x1 + ... + x1
[x2 (m)]
δL 1 a2 y2
= . ... − ...
δWi m (1)
+ (2)
x2 + ... + x2 am ym
δL 1
= .X T . (A − y)
δWi m
Agrégation Z = X.W + b
1
Activation A=
1+e −Z
m
1
∑
Coût L=− . yi . log( A) + (1 − yi) . log(1 − A)
m i=1
Gradient δL 1 T δL 1
= . X . (A − y) = . (A − y)
δW m δb m
Descente δL δL
W = W − α. b = b − α.
de gradient δW δb
Place à la pratique
1. Utilisation de python
Vérification des pré-requis
Python
Modules Python:
numpy : manipulation de tableaux multi dimensions
Panda : manipulation de données, de fichiers, nettoyage
matplotlib : création de graphiques
JupyterLAB : interface WEB de développement Python
Vérification des pré-requis
Python
Modules Python:
numpy
Panda
matplotlib
JupyterLAB
Linux / MAC Windows
[Link] [Link]
Exercice
Coder un neurone
Initialisation du jeu de données (X et y)
Initialisation des hyper-paramètres en fonction de X (W et b)
Itérer N fois
Execution du modèle en fonction de X, W et b
Calcul de l’erreur
Calcul du Gradient
Descente de Gradient => mise à jour de W et b
Coder un neurone
Initialisation des données
x11 x12
x21 x22
X = ... ... ∈ R m×n
def generateData(nbData, nbParams) xm1 xm2
… m n
y11
return X, y
y21
y = ... ∈ R m×1
ym1
Tip: [Link].make_blobs ()
Coder un neurone
Affichage des données
x11 x12
def showData(X, y) x21 x22
X = ... ... ∈ R m×n
xm1 xm2
[Link](…
[Link]() y11
y21
y = ... ∈ R m×1
ym1
Tip: utiliser l’aide contextuelle
Coder un neurone
Initialisation des hyper-paramètres (W,b) en fonction de X
[ 2]
def initParams(X) w1
… W= w
return W, b
Tip: [Link]()
Coder un neurone
Calcul de A : aggregation + activation
def model(X,W,b)
… A = [a1a2 . . . am]
return A
Tip: [Link] et [Link]
Coder un neurone
Calcul de l’erreur (LogLoss)
def logLoss(A)
… L = < scalaire >
return L
Tip: [Link]
Coder un neurone
Calcul des gradients
def gradients(X,A,y)
dW = Mn×m
…
db = < scalaire >
return dW,db
Tip: [Link], [Link]
Coder un neurone
Descente de gradients = mise à jour de W et b
[ 2]
def updateParams(W,b,dW,dB) w1
W= w
…
return W, b
Tip: [Link], [Link]
Coder un neurone
Boucle d’apprentissage
def train_model(X, W, b, y, nbLoops, learning_rate)
…
return W, b
Tip: for i in range(nbLoops)
Coder un neurone
Utiliser le modèle pour prédire ( P(y=1) )
def predict(W, b, X)
…
return p
Tip: utiliser la fonction d’activation