Cours Deep 1
Cours Deep 1
Cours Deep 1
Nicolas Audebert
nicolas.audebert@lecnam.net
http://cedric.cnam.fr/vertigo/Cours/ml2/
Département Informatique
Conservatoire National des Arts & Métiers, Paris, France
06 avril 2023
Introduction 1 / 75
Plan du cours
1 Introduction
3 Rétropropagation du gradient
5 Implémentation de la rétropropagation
Données massives
Plan du cours
Pour approfondir
RCP211 : Intelligence artificielle avancée
Apprentissage par renforcement
Modèles génératifs profonds (GAN, VAE)
Robustesse et incertitude des réseaux profonds
RCP217 : Intelligence artificielle pour le multimédia
Traitement du langage naturel (NLP)
Séries temporelles, audio et vidéo
Systèmes de recommandations et graphes
Réseaux de neurones artificiels 6 / 75
Plan du cours
1 Introduction
3 Rétropropagation du gradient
5 Implémentation de la rétropropagation
Neurone formel
Neurone artificiel
Fonction de x ∈ Rm vers ŷ ∈ R :
1 Fonction affine (linéaire plus translation par un biais b scalaire) : s = wT x + b
2 Fonction d’activation non-linéaire ϕ : R → R : ŷ = ϕ(s)
Expression du neurone artificiel “complet”
ŷ = ϕ wT x + b
Réseaux de neurones artificiels 9 / 75
Partie linéaire
P
m
Projection affine : s = w⊤ x + b = wi xi + b
i=1
w : vecteur à un hyperplan de Rm ⇒
s = 0 définit une frontière linéaire
bias b définit un écart par rapport à la position de l’hyperplan
ŷ = σ wT x + b
Activation sigmoïde
Exemple jouet en 2D
⊤
−1
Activation non-linéaire, sigmoïde a = 10 : ŷ = 1 + e−a(w x+b)
Réseaux de neurones artificiels 14 / 75
Exemple jouet en 2D
⊤
−1
Activation non-linéaire, sigmoïde a = 10 : ŷ = 1 + e−a(w x+b)
Réseaux de neurones artificiels 14 / 75
Exemple jouet en 2D
⊤
−1
Activation non-linéaire, sigmoïde a = 1 : ŷ = 1 + e−a(w x+b)
Réseaux de neurones artificiels 14 / 75
Exemple jouet en 2D
⊤
−1
Activation non-linéaire, sigmoïde a = 0.1 : ŷ = 1 + e−a(w x+b)
Réseaux de neurones artificiels 15 / 75
Neurone artificiel :
1 Une seule sortie scalaire ŷ
2 Frontière linéaire pour la classification binaire
Sortie scalaire unique : expressivité limitée pour la
plupart des tâches
Comment gérer la classification multi-classe ?
⇒ utiliser plusieurs neurones de sortie plutôt qu’un seul !
⇒ modèle neuronal dit Perceptron (Rosenblatt 1957)
Réseaux de neurones artificiels 15 / 75
Neurone artificiel :
1 Une seule sortie scalaire ŷ
2 Frontière linéaire pour la classification binaire
Sortie scalaire unique : expressivité limitée pour la
plupart des tâches
Comment gérer la classification multi-classe ?
⇒ utiliser plusieurs neurones de sortie plutôt qu’un seul !
⇒ modèle neuronal dit Perceptron (Rosenblatt 1957)
Réseaux de neurones artificiels 16 / 75
Entrée x in Rm (“couche”d’entrée)
Chaque sortie yˆ1 est un neurone artificiel (“couche”de sortie). Par exemple, pour la
sortie yˆ1 :
Transformation affine : s1 = w1 T x + b1
Activation non-linéaire σ : yˆ1 = σ(s1 )
Paramètres de la transformation linéaire la sortie yˆ1 :
poids w1 = {w1,1 , w2,1 , . . . , wm,1 } ∈ Rm
biais b1 ∈ R
Réseaux de neurones artificiels 16 / 75
Entrée x in Rm
Chaque sortie yˆk est un neurone artificiel. Pour chaque sortie yˆk :
Transformation affine : sk = wk T x + bk
Activation non-linéaire σ : yˆk = σ(sk )
Paramètres de la transformation linéaire la sortie yˆk :
{ }
poids wk = w1,k , w2,k , . . . , wm,k ∈ Rm
biais bk ∈ R
Réseaux de neurones artificiels 17 / 75
Perceptron en résumé
Transformation
affine :
sk = wk T x + bk
Softmax :
P(k|x, W)
Réseaux de neurones artificiels 19 / 75
Transformation
affine :
sk = wk T x + bk
Softmax :
P(k|x, W)
Classe prédite :
k∗ = arg maxP(k|x, W)
k
Réseaux de neurones artificiels 20 / 75
Limites du perceptron
Le problème du XOR
Régression logistique (LR) : perceptron à une couche d’entrée et une couche de
sortie
LR ne peut exprimer que des frontières de décisions linéaires
XOR : (NON 1 ET 2) OU (NON 2 ET 1)
La frontière optimale pour XOR est non-linéaire.
Perceptron multi-couche
Attention !
La non-linéarité de la fonction d’activation est indispensable pour le perceptron
multi-couche :
ŷ = ϕ (Ws h + bs ) et h = ϕ (We x + be )
⇒ ŷ = ϕ (Ws ϕ (We x + be ) + bs )
Si ϕ = Id, alors ŷ = ϕ (Ws We x + Ws be + bs )
équivalent à un perceptron classique avec W = Ws We et b = Ws be + bs !
Réseaux de neurones artificiels 23 / 75
Garanties théoriques
Quelle est l’expressivité des perceptrons multi-couche ?
Peut-on approcher n’importe quelle fonction à l’aide d’un PMC ?
Limitations
Une seule couche cachée suffit mais le nombre de neurones n’est pas borné.
La démonstration prouve l’existence mais ne donne pas de méthode pour déterminer
les paramètres Ws , W et b.
Réseaux de neurones artificiels 23 / 75
Garanties théoriques
Quelle est l’expressivité des perceptrons multi-couche ?
Peut-on approcher n’importe quelle fonction à l’aide d’un PMC ?
Limitations
Une seule couche cachée suffit mais le nombre de neurones n’est pas borné.
La démonstration prouve l’existence mais ne donne pas de méthode pour déterminer
les paramètres Ws , W et b.
Réseaux de neurones artificiels 24 / 75
En résumé
Neurone artificiel : représentation grossière d’un neurone biologique
Poids des connexions synaptiques
Fonction de transfert non-linéaire
Perceptron : une matrice de poids projetant la couche d’entrée vers la couche de
sortie
limité à des frontières de décision linéaires
Réseaux de neurones profonds : perceptrons multi-couche applicables aux problèmes
dont les frontières de décision sont non-linéaires
Plan du cours
1 Introduction
3 Rétropropagation du gradient
5 Implémentation de la rétropropagation
Algorithme du gradient
αt peut être obtenu par divers moyens, comme une recherche linéaire. Dans notre
cas, on fixera αt = α > 0 constant.
Rétropropagation du gradient 27 / 75
Algorithme d’optimisation
3 Répéter l’étape 2 jusqu’à convergence, par ex. ∥∇w L∥2 ≈ 0 (le coût cesse de décroître).
Rétropropagation du gradient 29 / 75
Pas d’apprentissage
(t+1) (t)
Équation de mise à jour : wi = wi − η ∂w
∂L
i
η pas d’apprentissage (learning rate)
(t+1) (t)
Équation de mise à jour : wi = wi − η ∂w
∂L
i
dans la quasi-totalité des cas, la fonction de coût utilisée n’est pas convexe par
rapport aux paramètres du modèle…
Rétropropagation du gradient 31 / 75
Perceptron : ŷ = ϕ (xi W + b)
Régression :
Fonction de coût : L2 (MSE) ∥ŷ − y∥2 , L1 (MAE) |ŷ − y|, etc.
Classification multi-classe à K classes (régression logistique) :
y ∈ {1; 2; . . . ; K}
sk
Activation softmax : ϕ(sk ) = P(k|xi ) = ∑K e s
′ e k′
k =1
ŷi = arg max P(k|xi ; W, b)
k {
1 si ŷi ̸= y∗i
Fonction de coût : ℓ0/1 (ŷi , y∗i ) = : perte 0/1
0 sinon
⇒ non-différentiable !
Rétropropagation du gradient 32 / 75
y∗i = 0, 0, . . . , 1
|{z} , . . . , 0
ce composante
Rétropropagation du gradient 33 / 75
X
K
yi ) = KL(y∗i , ^
ℓCE (y∗i , ^ yi ) = − y∗c,i log(ŷc,i ) = − log(ŷc∗ ,i )
c=1
|{z}
∗
= 0 sauf pour c
P P
LCE (W, b) = N1 Ni=1 ℓCE (ŷi , y∗i ) = − N1 Ni=1 log(ŷc ,i )
∗
Calcul du gradient
Descente de gradient : W(t+1) = W(t) − η ∂L
∂W
CE
et b(t+1) = b(t) − η ∂L
∂b
CE
∂LCE 1
PN ∂ℓCE
Principal problème : calculer ∂W = N i=1 ∂W
Propriété centrale : chain rule (dérivation des fonctions composées)
∂x ∂x ∂y
=
∂z ∂y ∂z
rétropropagation du gradient de l’erreur par rapport à y en erreur par
rapport à w
Rétropropagation du gradient 35 / 75
Chain rule
∂ℓ y
∂ℓ ∂^
∂x = y ∂x
∂^
∂LCE
∂W
= XT ∆y
Rétropropagation du gradient 38 / 75
Entraînement du modèle
1 X
N
L= ℓ (ŷi , y∗i ; w, b)
N i=1
∂L (t)
w(t+1) = w(t) − η w
∂w
(t) PN ∂ℓ(ŷi ,y∗i )
La complexité du calcul du gradient ∇w = 1
N i=1 ∂w
w(t) croît linéairement
avec :
la dimensionalité de w (nombre de paramètres du modèle),
N, la taille du jeu de données (nombre d’exemples d’apprentissage).
⇒ coûteux, même pour des modèles de dimensionalité modérée et des jeux de
données de taille moyenne !
Rétropropagation du gradient 39 / 75
Avantages et inconvénients
Rétropropagation du gradient
yi , y∗i ) = − log(ŷc∗ ,i )
Coût pour un seul exemple : LW (^
∂L
∂vi
= δiy = y^i − y∗i et ∂L
∂Wy
= δiy hi T
Pour revenir en arrière : on calcule ∂L
∂ui
= δih
Si on connaît δih ⇒ ∂L
∂Wh
= δih xi T ∼ régression logistique
Rétropropagation du gradient 43 / 75
Le calcul de ∂ℓCE
∂ui
= δih ⇒ s’obtient par chain rule :
∂L
∂Wl
= Hl−1 T ∆hl
Optimisation des réseaux profonds 44 / 75
Plan du cours
1 Introduction
3 Rétropropagation du gradient
5 Implémentation de la rétropropagation
La rétropropagation en résumé
Historique de la rétropropagation
Dérivation des fonctions composées (Leibniz, 1676)
Optimisation par descente de gradient (Cauchy 1847)
Premières applications de la rétropropagation (programmation dynamique, contrôle
Kelley 1960 ; Bryson et Ho 1969)
Formalisation de la rétropropagation pour les réseaux de neurones (Linnainmaa
1970 ; Werbos 1975)
Application aux réseaux de neurones profonds (Rumelhart, Hinton et Williams
1986 ; Lecun 1988)
Décroissance exponentielle (η0 = 0.1, λ = 0.1) Décroissance step (η0 = 0.1, r = 0.5, tu = 10)
Optimisation des réseaux profonds 47 / 75
Régularisation
Régularisation
Réduire la capacité du modèle pour réduire l’écart entre performances entraînement/test.
Avec un modèle de suffisamment grande capacité, améliore la généralisation et donc
les performances en test.
Régularisation structurelle : ajout d’une contrainte sur les poids pour les forcer à
suivre un a priori
R(w) = ||w||2
Régularisation et hyperparamètres
Plan du cours
1 Introduction
3 Rétropropagation du gradient
5 Implémentation de la rétropropagation
Une solution
Ajouter une stabilisation numérique au dénominateur :
exi
s(x)i = ∑K xj
j=1 e
Différenciation automatique
Alterne entre dérivation symboliques et étapes de simplification
Différenciation symbolique au niveau des opérations élémentaires
Simplification en conservant les résultats numériques intermédiaires
Implémentation de la rétropropagation 54 / 75
∂f
∂f
= 1 , rétropropagation pour déterminer ⇒ ∂f
, ∂f
∂q ∂z
f=q⋆z ⇒ ∂f
∂q
= z = −4, ∂f
∂z
= q = 3 , rétropropagation pour ⇒ ∂f
, ∂f
∂x ∂y
q=x+y ⇒ ∂f
∂x
= ∂f ∂q
∂q ∂x
= −4 ⋆ 1 = −4 ∂f
∂y
= ∂f ∂q
∂q ∂y
= −4 ⋆ 1 = −4
Implémentation de la rétropropagation 56 / 75
Le graphe de calcul est remplaçable par un seul “bloc”dont l’inverse est σ ′ (x).
Implémentation de la rétropropagation 58 / 75
h = f(x, W)
Keras : apprentissage/inférence
model.summary()
=⇒ mise en pratique dans la séance de travaux pratiques “Deep Learning avec Keras”
Activations, régularisations, initialisations 62 / 75
Plan du cours
1 Introduction
3 Rétropropagation du gradient
5 Implémentation de la rétropropagation
Non-linéarités modernes
1 ez − e−z
σ(z) = tanh(z) =
1 + e−z ez − e−z
{
z si z ≥ 0
ReLU(z) = = max {0, z}
0 sinon
Activations, régularisations, initialisations 65 / 75
Exemple : CNN à 4 couches entraîné sur CIFAR-10. Remplacer tanh par ReLU permet de
converger en 6× moins d’itérations. Extrait de Krizhevsky, Sutskever et Hinton 2012
Activations, régularisations, initialisations 66 / 75
ReLU
Sigmoïde Tanh
Pas de saturation
Saturation Saturation Efficace à calculer
Calcul coûteux Calcul coûteux Non centrée sur zéro
Non centrée sur zéro Centrée sur zéro Les activations négatives sont
ignorées
Activations, régularisations, initialisations 67 / 75
Exemples d’initialisation
Histogramme d’activations
Exemples d’initialisation
Histogramme d’activations
Exemples d’initialisation
Histogramme d’activations
Exemples d’initialisation
Histogramme d’activations
Dropout : implémentation
Optimisation : le dropout est différentiable
Les activations des neurones dropped sont mises à zéro
Les mises à jour de ces neurones sont ignorées
À l’inférence, plusieurs possibilités :
Appliquer le dropout en inférence et moyenner sur les prédictions de sortie
Alternative plus rapide : inférence normale mais multiplier par p toutes les activations
Équivalent à la moyenne géométrique pour un perceptron
Approximation assez bonne pour un perceptron multi-couche
Activations, régularisations, initialisations 72 / 75
Bibliographie I
Bibliographie II
Bibliographie III
Bibliographie IV