Optimisation pour
l'apprentissage profond
Plan
1) Rappel sur notions d’apprentissage
2) Algorithmes d'optimisation
3) Stratégies d'optimisation
4) Diagnostique
Ludovic Trottier 2/105
Retour sur la semaine dernière
𝑓 𝒙; 𝜽 𝐿 𝑓 𝒙; 𝜽 , 𝑦 ∇𝜽 𝐿 𝑓 𝒙; 𝜽 , 𝑦
Backprop
Entropie croisée:
𝐿 𝑦,
ො 𝑦 = − log 𝑦ො𝑐𝑖𝑏𝑙𝑒
[Link]
Cette semaine: comment améliorer les performances
du réseau?
Ludovic Trottier 3/105
Rappel sur notions
d’apprentissage
Notion d’apprentissage
• Risque empirique 𝐽 𝜽
– Fonction de coût 𝐿 + distribution de données
empirique 𝑝Ƹ 𝑑𝑎𝑡𝑎 :
𝐽 𝜽 = 𝔼 𝒙,𝑦 ~𝑝ො𝑑𝑎𝑡𝑎 𝐿 𝑓 𝒙; 𝜽 , 𝑦
• Vrai risque 𝐽∗ 𝜽
– Fonction de coût 𝐿 + vraie distribution de
données 𝑝𝑑𝑎𝑡𝑎 :
𝐽∗ 𝜽 = 𝔼 𝒙,𝑦 ~𝑝𝑑𝑎𝑡𝑎 𝐿 𝑓 𝒙; 𝜽 , 𝑦
Ludovic Trottier 5/105
Notion d’apprentissage
• Accès à 𝑝𝑑𝑎𝑡𝑎 → vrai risque 𝐽∗ 𝜽 →
optimisation standard
• Accès à 𝑝ො𝑑𝑎𝑡𝑎 → risque empirique 𝐽 𝜽 →
problème d’apprentissage
• On a jamais accès à 𝑝𝑑𝑎𝑡𝑎 .
• En résumé
– On minimise directement 𝐽 𝜽 .
– Espérer minimiser aussi 𝐽∗ 𝜽 .
Ludovic Trottier 6/105
Algorithmes d’optimisation
Descente du gradient
• Concept
– Déterminer un vecteur directionnel 𝒅 basé sur
le gradient 𝛻𝜽 𝐽 𝜽 .
– Mettre à jour les paramètres:
𝜽←𝜽−𝒅
– Répéter jusqu’à convergence.
• Pourquoi est-ce que ça fonctionne ?
– 𝛻𝜽 𝐽 𝜽 = 𝟎 → 𝜽 est un point critique.
– Aide à trouver les extremums.
Ludovic Trottier 8/105
Descente du gradient
𝐽 𝜽
𝜽
𝒅
• Convergence
– 𝐽 𝜽 cesse de diminuer.
– 𝐽 𝜽 oscille autour d’une certaine valeur (petite
variance).
Ludovic Trottier 9/105
Notion de gradient
• Rappel
𝐽: ℝ𝐷 → ℝ
𝜽↦𝐽 𝜽
• Gradient
– 𝛻𝜽 𝐽 𝜽 ∈ ℝ𝑑 ≡ vecteur des dérivées partielles
de 𝐽 par rapport aux entrées de 𝜽:
𝜕𝐽 𝜽 𝜕𝐽 𝜽
𝛻𝜽 𝐽 𝜽 = ,…,
𝜕𝜽1 𝜕𝜽𝐷
Ludovic Trottier 10/105
Notion de gradient
• Dérivation du gradient
𝛻𝜽 𝐽 𝜽 = 𝛻𝜽 𝔼 𝒙,𝑦 ~𝑝ො𝑑𝑎𝑡𝑎 𝐿 𝑓 𝒙; 𝜽 , 𝑦
𝑁
1
= 𝛻𝜽 𝐿 𝑓 𝒙 𝑖 ; 𝜽 , 𝑦 𝑖
𝑁
𝑖=1
𝑁
1
= 𝛻𝜽 𝐿 𝑓 𝒙 𝑖 ; 𝜽 , 𝑦 𝑖
𝑁
𝑖=1
• 𝛻𝜽 𝐽 𝜽 ≡ moyenne
Ludovic Trottier 11/105
Algorithmes d’optimisation
• Descente du gradient:
1. par batch
2. stochastique
3. avec momentum
4. accéléré de Nesterov
5. Adagrad
6. RMSprop
7. Adam
Ludovic Trottier 12/105
1. Descente du gradient par batch
• Vecteur directionnel
𝒅 = 𝜖𝑡 ⋅ 𝛻𝜽 𝐽 𝜽
𝑁
1
= 𝜖𝑡 ⋅ 𝛻𝜽 𝐿 𝑓 𝒙 𝑖 ; 𝜽 , 𝑦 𝑖
𝑁
𝑖=1
𝜖𝑡 = taux d’apprentissage à l’itération 𝑡.
• MAJ:
𝜽←𝜽−𝒅
Ludovic Trottier 13/105
Inconvénients de la descente du
gradient par batch
𝐽 𝜽
𝜽
𝒅
• Trop sensible au minimum / maximum
locaux pour être utilisable en pratique.
Ludovic Trottier 14/105
Inconvénients de la descente du
gradient par batch
• Autres inconvénients
– Traiter tous les exemples d’entraînement
(𝒙 𝑖 , 𝑦 𝑖 ) donne une seule mise-à-jour.
– Pas de MAJ entre (𝒙 𝑖 , 𝑦 𝑖 ) et (𝒙 𝑖+𝑗 , 𝑦 𝑖+𝑗 )
– Erreur semblable → gradient semblable →
redondance
Ludovic Trottier 15/105
2. Descente du gradient
stochastique
• SGD
– stochastic gradient descent
– Une batch de taille 𝑚 → une MAJ
• Vecteur directionnel
𝑚
1
ෝ = 𝜖𝑡 ⋅ 𝛻𝜽 𝐿 𝑓 𝒙 𝒊 ; 𝜽 , 𝑦
𝒅 ← 𝜖𝑡 ⋅ 𝒈 𝑖
𝑚
𝑖=1
• Algorithme
1. Échantillonage: (𝒙 𝑖 , 𝑦 𝑖 ) ~ 𝑝Ƹ𝑑𝑎𝑡𝑎 , 1 ≤ 𝑖 ≤ 𝑚.
ෝ
2. Gradient: 𝒈
3. MAJ: 𝜽 ← 𝜽 − 𝒅
Ludovic Trottier 16/105
Avantages de la descente du
gradient stochastique
∀ données
𝐽 𝜽 batch
𝜽
𝛻𝜽 𝐽 𝜽
• Avantage 1 𝒅
– 𝛻𝜽 𝐽 𝜽 ≈ 𝒈ෝ
–𝒈ෝ = version bruitée du gradient.
– Bruit aide à sortir des min / max locaux.
Ludovic Trottier 17/105
Avantages de la descente du
gradient stochastique
• Avantage 2
– Une batch de taille 𝑚 réduit l’incertitude du gradient
de 𝑂 𝑚 .
– Direction semblable avec moins de données.
𝛻𝜽 𝐽 𝜽 𝑚=512
𝑚=256
𝑚=128
ෝ
𝒈
𝑚=64
𝑚=32
Ludovic Trottier 18/105
Avantages de la descente du
gradient stochastique
• Avantage 3
– MAJ entre (𝒙 𝑖 , 𝑦 𝑖 ) et (𝒙 𝑖+𝑗 , 𝑦 𝑖+𝑗 )
– Diminue la redondance si erreur semblable.
– Convergence possible avant même de voir
tous les exemples.
• Avantage 4
– Traitement parallèle de la batch.
• Avantage 5
– Optimisation hardware quand 𝑚 = 2𝑘
Ludovic Trottier 19/105
Inconvénient #1 de la descente du
gradient stochastique
• Variance → fluctuation
Wikipédia
Ludovic Trottier 20/105
Inconvénient #2 de la descente du
gradient stochastique
• Taux d’apprentissage 𝜖 a une grande
influence
– À suivre… (section stratégies d’optimisation)
Ludovic Trottier 21/105
3. SGD + Momentum
• Concept
– Ajouter à SGD une dynamique Newtonniene.
𝐽 𝜽
𝜽
𝒅 sans momentum
𝒅 avec momentum
Ludovic Trottier 22/105
SGD + Momentum
• Velocité 𝒗 ∈ ℝ𝐷
– Estimation des directions précédentes.
• Facteur d’oubli 𝛼 ∈ 0, 1
– 𝛼 → 0 ≡ SGD standard
– Valeur suggérée: 𝛼 = 0.9
• Algorithme
1. Échantillonage: (𝒙 𝑖 , 𝑦 𝑖 ) ~ 𝑝Ƹ𝑑𝑎𝑡𝑎 , 1 ≤ 𝑖 ≤ 𝑚.
1 𝑚
ෝ=
2. Gradient: 𝒈 σ𝑖=1 𝛻𝜽 𝐿 𝑓 𝒙 𝒊 ;𝜽 ,𝑦 𝑖
𝑚
ෝ
3. Vélocité: 𝒗 ← 𝛼𝒗 − 𝜖𝑡 ⋅ 𝒈
4. MAJ: 𝜽 ← 𝜽 + 𝒗
Ludovic Trottier 23/105
Avantage de SGD + Momentum
• Avantage rouge = avec momentum
– Le momentum aide noir = sans momentum
lorsqu’il y a des ravins.
– Les MAJ de 𝜽 tendent
à s’aligner.
Ludovic Trottier 24/105
Inconvénient de SGD + Momentum
𝐽 𝜽
• Problème
– Peut survoler les min / max locaux.
– Mais, peut dépasser le min global.
Ludovic Trottier 26/105
4. SGD + Momentum accéléré de
Nesterov
• But
– MAJs s’adaptent plus rapidement à la courbe.
• Concept
– Appliquer une correction sur le jump du
momentum.
• Différence importante
– La position où on évalue le gradient.
Ludovic Trottier 27/105
SGD + Momentum de Nesterov
• Algorithme
1. Échantillonage: (𝒙 𝑖 , 𝑦 𝑖 ) ~ 𝑝Ƹ 𝑑𝑎𝑡𝑎 , 1 ≤ 𝑖 ≤ 𝑚.
2. Point intérimaire: 𝜽ഥ ← 𝜽 + 𝛼𝒗
1 𝑚
ഥ=
3. Gradient: 𝒈 σ𝑖=1 𝛻𝜽ഥ ഥ ,𝑦
𝐿 𝑓 𝒙 𝒊 ;𝜽 𝑖
𝑚
ഥ
4. Vélocité: 𝒗 ← 𝛼𝒗 − 𝜖𝑡 ⋅ 𝒈
5. MAJ: 𝜽 ← 𝜽 + 𝒗
Ludovic Trottier 28/105
SGD + Momentum de Nesterov
• Momentum standard
1. Gradient (petit bleu)
2. Jump direction des gradients accumulés (grand bleu)
• Nesterov
1. Jump direction des gradients accumulés (brun)
2. Correction avec gradient intérimaire (rouge)
3. MAJ final (vert)
𝜽′
ഥ
𝜽
𝜽′
Source: G. Hinton lecture 6c
𝜽
Ludovic Trottier 29/105
5. Adagrad
• Concept
– Adapter la MAJ de chaque paramètre 𝜽𝑑
individuellement pour uniformiser le taux de
changement.
𝜽2
𝜽2 𝜽1
𝜽1
Ludovic Trottier 30/105
Adagrad
• Principe
– 𝜽𝑘 historique petite MAJ → augmenter la MAJ à 𝑘.
– 𝜽𝑘 historique grande MAJ → diminuer la MAJ à 𝑘.
• Méthode
– Mettre à l’échelle la MAJ avec l’inverse de la racine
carrée de la somme des gradients.
• Accumulation des gradients 𝒓 ∈ ℝ𝐷
– Accumule le carré des gradients.
• Petite constante 𝛿 ∈ ℝ pour stabilité
numérique.
Ludovic Trottier 31/105
Adagrad
• Algorithme
1. Échantillonage: (𝒙 𝑖 , 𝑦 𝑖 ) ~ 𝑝Ƹ 𝑑𝑎𝑡𝑎 , 1 ≤ 𝑖 ≤ 𝑚.
1 𝑚
ෝ=
2. Gradient: 𝒈 σ 𝛻 𝐿 𝑓 𝒙 𝒊 ;𝜽 ,𝑦 𝑖
𝑚 𝑖=1 𝜽
ෝ⊙𝒈
3. Accumulation: 𝒓 ← 𝒓 + 𝒈 ෝ
𝜖𝑡
4. Mise à l’échelle: 𝒅 ← ෝ
⊙𝒈
𝛿+ 𝒓
5. MAJ: 𝜽 ← 𝜽 − 𝒅
Ludovic Trottier 32/105
Inconvénient de Adagrad
• Croissance excessive de 𝒓
– Accumulation de valeurs positives 𝒈 ෝ⊙𝒈 ෝ.
– Les taux d’apprentissage mis à l’echelle
𝜖𝑡
→ 𝟎 rapidement.
𝛿+ 𝒓
Ludovic Trottier 33/105
6. RMSprop
• Solution pour régler la croissance de 𝒓.
• Concept
– Remplacer:
• Accumuler 𝒈
ෝ⊙𝒈
ෝ pour tous les 𝒈
ෝ depuis le début.
– Par:
• Accumuler 𝒈
ෝ⊙𝒈
ෝ que pour les plus récents 𝒈
ෝ.
• Méthode
– Utiliser une moyenne mobile exponentielle à
taux de décroissance 𝜌 ∈ 0, 1 .
– Valeur suggérée: 𝜌 = 0.99
Ludovic Trottier 34/105
Moyenne mobile exponentielle
𝑣𝑡
𝑦𝑡
𝑡
𝑣𝑡 = 𝜌𝑣𝑡−1 + 1 − 𝜌 𝑦𝑡
𝑣0 = 0
𝑣1 = 0.99 ⋅ 𝑣0 +0.01 ⋅ 𝑦1
= 0.01 ⋅ 𝑦1
𝑣2 = 0.99 ⋅ 𝑣1 + 0.01 ⋅ 𝑦2
= 0.0099 ⋅ 𝑦1 + 0.01 ⋅ 𝑦2
Ludovic Trottier 35/105
RMSprop
• Algorithme
1. Échantillonage: (𝒙 𝑖 , 𝑦 𝑖 ) ~ 𝑝Ƹ 𝑑𝑎𝑡𝑎 , 1 ≤ 𝑖 ≤ 𝑚.
1 𝑚
ෝ=
2. Gradient: 𝒈 σ 𝛻 𝐿 𝑓 𝒙 𝒊 ;𝜽 ,𝑦 𝑖
𝑚 𝑖=1 𝜽
ෝ⊙𝒈
3. Accumulation: 𝒓 ← 𝜌𝒓 + 1 − 𝜌 𝒈 ෝ
𝜖𝑡
4. Mise à l’échelle: 𝒅 ← ෝ
⊙𝒈
𝛿+ 𝒓
5. MAJ: 𝜽 ← 𝜽 − 𝒅
Ludovic Trottier 36/105
7. RMSprop + Momentum
• Méthode:
– Comme pour SGD, on peut ajouter du
momentum aux direction calculées.
• Velocité 𝒗 ∈ ℝ𝐷
– Estimation des directions mises à l’échelle
précédentes.
• Facteur d’oubli 𝛼 ∈ 0, 1
– 𝛼 → 0 ≡ RMSprop standard
Ludovic Trottier 37/105
RMSprop + Momentum
• Algorithme
1. Échantillonage: (𝒙 𝑖 , 𝑦 𝑖 ) ~ 𝑝Ƹ 𝑑𝑎𝑡𝑎 , 1 ≤ 𝑖 ≤ 𝑚.
1 𝑚
ෝ=
2. Gradient: 𝒈 σ 𝛻 𝐿 𝑓 𝒙 𝒊 ;𝜽 ,𝑦 𝑖
𝑚 𝑖=1 𝜽
ෝ⊙𝒈
3. Accumulation: 𝒓 ← 𝜌𝒓 + 1 − 𝜌 𝒈 ෝ
𝜖𝑡
4. Vélocité: 𝒗 ← 𝛼𝒗 − ෝ
⊙𝒈
𝒓
5. MAJ: 𝜽 ← 𝜽 + 𝒗
Ludovic Trottier 38/105
8. RMSprop + Nesterov
• Méthode:
– Comme pour SGD + Nesterov, on peut utiliser
le momentum accéléré de Nesterov.
– Appliquer une correction mise à l’échelle du
jump du momentum.
Ludovic Trottier 39/105
RMSprop + Nesterov
• Algorithme
1. Échantillonage: (𝒙 𝑖 , 𝑦 𝑖 ) ~ 𝑝Ƹ 𝑑𝑎𝑡𝑎 , 1 ≤ 𝑖 ≤ 𝑚.
2. Point intérimaire: 𝜽ഥ ← 𝜽 + 𝛼𝒗
1 𝑚
ഥ=
3. Gradient: 𝒈 σ𝑖=1 𝛻𝜽ഥ ഥ ,𝑦
𝐿 𝑓 𝒙 𝒊 ;𝜽 𝑖
𝑚
ഥ⊙𝒈
4. Accumulation: 𝒓 ← 𝜌𝒓 + 1 − 𝜌 𝒈 ഥ
𝜖𝑡
5. Vélocité: 𝒗 ← 𝛼𝒗 − ഥ
⊙𝒈
𝒓
6. MAJ: 𝜽 ← 𝜽 + 𝒗
Ludovic Trottier 40/105
Inconvénients de RMSprop
• Inconvénient 1
– 𝒓 est une estimation du second moment
(variance décentrée) du gradient 𝒈ෝ.
– Cet estimateur a un large biais positif au
début de la descente du gradient.
• Inconvénient 2
– L’utilisation du momentum en combinaison
avec de la mise-à-l’echelle (étape vélocité) n’a
pas une justification théorique claire.
Ludovic Trottier 41/105
9. Adam
• Solution pour résoudre les inconvénients
de RMSprop + momentum / Nesterov.
• Méthode:
– Calculer une estimation du premier et second
moments avec une moyenne mobile
exponentielle à taux 𝜌1 , 𝜌2 ∈ 0, 1 .
• Valeurs suggérées: 𝜌1 = 0.9 et 𝜌2 = 0.999
– Corriger les biais des moments.
– Le premier moment normalisé par le second
moment donne la direction de MAJ.
Ludovic Trottier 42/105
Correction des biais
𝑣𝑡
𝑣ො𝑡
𝑦𝑡
𝑡
𝑣𝑡
𝑣𝑡 = 𝜌𝑣𝑡−1 + 1 − 𝜌 𝑦𝑡 𝑣ො𝑡 = 𝑡
1 − 𝜌
𝑣0 = 0 𝑣2
𝑣1 = 0.99 ⋅ 𝑣0 +0.01 ⋅ 𝑦1 𝑣ො2 =
1 − 0.992
= 0.01 ⋅ 𝑦1 0.0099 ⋅ 𝑦1 + 0.01 ⋅ 𝑦2
𝑣2 = 0.99 ⋅ 𝑣1 + 0.01 ⋅ 𝑦2 =
0.0199
= 0.0099 ⋅ 𝑦1 + 0.01 ⋅ 𝑦2 = 0.497 ⋅ 𝑦1 + 0.503 ⋅ 𝑦2
Ludovic Trottier Vidéo 43/105
Adam
• Algorithme
1. Échantillonage: (𝒙 𝑖 , 𝑦 𝑖 ) ~ 𝑝Ƹ𝑑𝑎𝑡𝑎 , 1 ≤ 𝑖 ≤ 𝑚.
1 𝑚
ෝ=
2. Gradient: 𝒈 σ 𝛻 𝐿 𝑓 𝒙 𝒊 ;𝜽 ,𝑦 𝑖
𝑚 𝑖=1 𝜽
ෝ
3. 1er moment: 𝒔 ← 𝜌1 𝒔 + 1 − 𝜌1 𝒈
4. 2e moment: 𝒓 ← 𝜌2 𝒓 + 1 − 𝜌2 𝒈ෝ⊙𝒈
ෝ
𝒔
5. Correction biais 1er moment : 𝒔ො ←
1 − 𝜌1 𝑡
𝒓
6. Correction biais 2e moment : 𝒓ො ←
1 − 𝜌2 𝑡
𝒔ො
7. Direction: 𝒅 ← 𝜖𝑡
𝒓ො +𝛿
8. MAJ: 𝜽 ← 𝜽 − 𝒅
Ludovic Trottier 44/105
Tableau comparatif
Approche Hyper-paramètre Utilisation mémoire
Batch 𝜖𝑡 D
SGD 𝜖𝑡 , 𝑚 D
SGD + Momentum 𝜖𝑡 , 𝑚, 𝛼 D*2
SGD + Nesterov 𝜖𝑡 , 𝑚, 𝛼 D*2
Adagrad 𝜖𝑡 , 𝑚, 𝛿 D*2
RMSProp 𝜖𝑡 , 𝑚, 𝜌 D*2
RMSProp + Momentum 𝜖𝑡 , 𝑚, 𝜌, 𝛼 D*3
RMSProp + Nesterov 𝜖𝑡 , 𝑚, 𝜌, 𝛼 D*3
Adam 𝜖𝑡 , 𝑚, 𝜌1 , 𝜌2 , 𝛿 D*3
PyTorch documentation
Ludovic Trottier 45/105
Stratégies d’optimisation
Stratégies d’optimisation
Stratégies pour améliorer l’optimisation:
1. Choisir les hyperparamètres
2. Initialisation des paramètres
3. Normalisation
Ludovic Trottier 47/105
1. Choisir les hyperparamètres
• Trois façons de choisir les hyperparamètres:
1. Horaire d’entraînement
2. Recherche en grille
3. Recherche aléatoire
Ludovic Trottier 48/105
1.1 Horaire d’entraînement
• Principe
– Établir à l’avance un horaire indiquant la
valeur des hyperparamètres en fonction de
l’époque.
– Le plus souvent utilisé pour définir les taux
d’apprentissage 𝝐𝒕 .
– Plus un art qu’une science.
Ludovic Trottier 49/105
Example d’horaire d’entraînement
• Nombre d’époque maximum: 200
• Taille de la batch: 𝑚 = 32
• Algorithme d’optimisation: SGD +
Nesterov 𝛼 = 0.9
• Horaire:
Époque 0 75 125 175
Taux d’apprentissage 0.1 0.01 0.001 0.0001
Weight decay 1e-4 5e-4 1e-5 5e-5
Ludovic Trottier 50/105
Stratégie #1 pour choisir l’horaire
• Principe
– 𝐽 𝜽 atteint un plateau → changer l’hyper-
paramètre.
– Produira une courbe en forme d’escalier.
• Méthode
1. Définir la valeur initiale.
2. Définir le taux de décroissance 𝛽 ∈ 0, 1 .
3. Définir les époques de MAJ en identifiant les
plateaux de 𝐽 𝜽 .
Ludovic Trottier 51/105
Stratégie #1 pour choisir l’horaire
du taux d’apprentissage 𝜖
• Exemple: taux d’apprentissage 𝜖.
• Valeur initiale 𝜖0
– Trop large: grandes oscillations → 𝐽 𝜽
augmente → divergence (NaNs, Inf)
– Trop petit: convergence local → 𝐽 𝜽 grande
valeur → piètre solution 𝜽
– Stratégie pour 𝜖0 :
• Prendre approximativement la plus grande valeur
de 𝜖0 qui ne fait pas diverger 𝐽 𝜽 .
Ludovic Trottier 52/105
Stratégie #1 pour choisir l’horaire
du taux d’apprentissage 𝜖
• Taux de décroissance
– MAJ: 𝜖 ← 𝜖 ⋅ 𝛽
– Représente l’aggressivité de la convergence.
– Convergence rapide quand 𝛽 → 0
– Convergence lente quand 𝛽 → 1
– Valeurs suggérées: 𝛽 ∈ {0.1, 0.2, 0.5}
Ludovic Trottier 53/105
Stratégie #1 pour choisir l’horaire
du taux d’apprentissage 𝜖
• Époques de MAJ
– Observer 𝐽 𝜽
– Soit 𝑡𝑒 l’époque où 𝐽 𝜽 converge.
– Ajouter à l’horaire d’entraînement une entrée
avec époque = 𝑡𝑒 .
– Recommencer avec la nouvelle horaire.
– Arrêter lorsque la MAJ de 𝜖 ne fait plus
diminuer 𝐽 𝜽 .
Ludovic Trottier 54/105
Exemple d’horaire du taux
d’apprentissage 𝜖
• Example
• Valeur initiale 𝜖0
– 10 → nan, 1 → nan, 0.1 → ok
• Taux de décroissance
– 𝛽 = 0.1
• Époques de MAJ
– Commençons avec l’horaire suivante:
Époque 0
Taux d’apprentissage 0.1
Ludovic Trottier 55/105
Exemple d’horaire du taux
d’apprentissage 𝜖
Convergence
aux alentours
de l’époque 75.
Époque 0
Taux d’apprentissage 0.1
Ludovic Trottier 56/105
Exemple d’horaire du taux
d’apprentissage 𝜖
Convergence
aux alentours
de l’époque
125.
Époque 0 75
Taux d’apprentissage 0.1 0.01
Ludovic Trottier 57/105
Exemple d’horaire du taux
d’apprentissage 𝜖
Convergence
aux alentours
de l’époque
175.
Époque 0 75 125
Taux d’apprentissage 0.1 0.01 0.001
Ludovic Trottier 58/105
Exemple d’horaire du taux
d’apprentissage 𝜖
Aucun gain
après époque
175.
Époque 0 75 125 175
Taux d’apprentissage 0.1 0.01 0.001 0.0001
Ludovic Trottier 59/105
Stratégie #2 pour choisir l’horaire
• Principe
– Changer l’hyper-parameter à chaque époque 𝑡𝑒 .
– Produira une courbe sans plateau.
• Méthode
1. Définir la valeur initiale.
2. Définir le taux de décroissance 𝛽 ∈ 0, 1 .
3. Définir la règle de décroissance.
Ludovic Trottier 60/105
Stratégie #2 pour choisir l’horaire
du taux d’apprentissage 𝜖
• Exemple: taux d’apprentissage 𝜖.
• Valeur initiale 𝜖0
– Prendre approximativement la plus grande
valeur de 𝜖0 qui ne fait pas diverger 𝐽 𝜽 .
• Taux de décroissance
– Dépend du problème.
• Règle de décroissance
𝜖0
𝜖𝑡 = ou 𝜖𝑡 = 𝜖0 ⋅ exp −𝛽 ⋅ 𝑡𝑒
1+𝛽⋅𝑡𝑒
Ludovic Trottier 61/105
Exemple d’horaire du taux
d’apprentissage 𝜖
𝜖0
• 𝜖0 = 0.1, 𝛽 = 0.1, 𝜖𝑡 =
1+𝛽⋅𝑡𝑒
Ludovic Trottier 62/105
Stratégie #1 > Stratégie #2
• Avantage de Stratégie #1
– Relation non-linéaire entre le taux de
décroissance de 𝐽 𝜽 et celui de 𝜖𝑡 .
– Difficile de caractériser cette relation.
– Stratégie #1 approxime la relation non-linéaire
avec une fonction en escalier.
Ludovic Trottier 63/105
Avantages et inconvénients des
horaires d’entraînement
• Avantages
– Simple à expliquer.
– Facile à reproduire.
• Inconvénients
– Développer son intuition pour comprendre
l’effet des hyper-paramètres.
– Peut sembler arbitraire.
• Somme toute
– Souvent utilisé en pratique
Ludovic Trottier 64/105
1.2 Recherche en grille
• Certains hyperparamètres doivent restés
fixes pour toute la durée de l’optimisation.
– Nombre de neurones
– Fonction d’activation
– Probabilité de dropout (Semaine 4)
– Dimension des filtres à convolution (Semaine 5)
• D’autres peuvent être fixés même si pas
nécessaire.
– Weight decay (Semaine 4)
– Taux d’apprentissage
• Comment trouver leur valeur optimale ?
Ludovic Trottier 65/105
Recherche en grille
• Principe
– Déterminer un ensemble de valeur à tester
pour chaque hyperparamètre.
– Utiliser une échelle logarithmique.
• Méthode
– Minimiser 𝐽 𝜽 pour chaque combinaison du
produit cartésien.
Ludovic Trottier 66/105
Exemple de recherche en grille
• Hyperparamètres:
– Taux d’apprentissage: 𝜖 ∈ {0.1, 0.01, 0.001}
– Weight decay 𝜆 ∈ {0.001, 0.0005, 0.0001}
𝜖
Ludovic Trottier 67/105
Avantages et inconvénients
• Avantages
– Profiter de la connaissance d’un expert.
– Recherche exhaustive (brute force).
– Facilement parallélisable.
• Inconvénients
– Demande computationnelle élevée.
– Calcul redondant, car un seul hyperparamètre
change à la fois.
Ludovic Trottier 68/105
1.3 Recherche aléatoire
• Principe
– Déterminer une distribution de probabilité
pour chaque hyperparamètre.
– Utiliser une échelle logarithmique.
• Méthode
– Échantillonner les distributions 𝑇 fois.
– Minimiser 𝐽 𝜽 𝑇 fois, une fois pour chaque
combinaison.
Ludovic Trottier 69/105
Exemple de recherche aléatoire
• Hyperparamètres:
– Taux d’apprentissage: 𝜖 = 10𝛾1 où 𝛾1 ~𝑈 −1, −3
– Weight decay: 𝜆 = 10𝛾2 où 𝛾2 ~𝑈 −3, −4
𝜖
Ludovic Trottier 70/105
Avantages et inconvénients
• Avantages
– Mêmes avantages que recherche en grille.
– Moins redondant, car hyperparamètre change
à chaque fois.
– Anytime: peut être arrêté n’importe quand.
– Plus il roule, meilleure est la recherche.
• Inconvénients
– Demande computationnelle élevée.
– Difficile à reproduire (random seed).
Ludovic Trottier 71/105
2. Initialisation des paramètres
• Principe
– Choisir la valeur initial de 𝜽 avant
l’optimisation
• Importance
– Souvent laisser de côté.
– Un réseau mal initialisé peut être difficile à
optimiser.
– 𝑤 = −1,000,000, 𝑥 = 1
1 1
– 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑤 ⋅ 𝑥 = =
1 + exp −𝑤⋅𝑥 1 +exp 1,000,000
Ludovic Trottier 72/105
2. Initialisation des paramètres
• A un grand impact sur l’optimisation.
𝐽 𝜽
𝜽
1
𝑝 𝜽
Ludovic Trottier 73/105
2. Initialisation des paramètres
Deux façons:
1. Initialisation à partir de rien
– La seule façon pour beaucoup de problèmes.
2. Initialisation par pré-entraînement
– Utilisée lorsqu’un réseau à déjà été entraîné
sur le même type de problème.
Ludovic Trottier 74/105
Initialisation à partir de rien
• Initialisation des biais
– Généralement initialisés à 0.
• Initialisation des poids
1. Choisir une distribution de probabilité.
2. Choisir ses paramètres.
3. Échantillonner les poids iid.
• Définition:
– 𝑛𝑖 : nombre de neurones en entré.
– 𝑛𝑜 : nombre de neurones en sortie.
Ludovic Trottier 75/105
Initialisation aléatoire des poids
Nom Uniforme 𝑤 ~ 𝑈 −𝑎, 𝑎 Normale 𝑤 ~𝑁 0, 𝑠 2 Article
Glorot / Xavier 𝑎= 6/(𝑛𝑖 + 𝑛𝑜 ) 𝑠= 2/(𝑛𝑖 +𝑛𝑜 ) pdf
Kaiming He 𝑎= 6/𝑛𝑖 𝑠= 2/𝑛𝑖 pdf
• Glorot / Xavier
– À utiliser avec sigmoid et tanh.
• Kaiming
– À utiliser avec ReLU
• Dérivation des équations
– lien
Ludovic Trottier 76/105
Initialisation PyTorch
• Par défaut pour linéaire et à convolution
(lien):
– 𝑤 ~ 𝑈 −𝑎, 𝑎 , 𝑎 = 1/𝑛𝑖
– Pourquoi ? ¯\_(ツ)_/¯
• Module [Link]
– kaiming_normal, kaiming_uniform, xavier_normal,
xavier_uniform
Ludovic Trottier 77/105
Initialisation constante des poids
• Principe
– On peut aussi initialiser à une constante 𝑘.
–𝑤=𝑘
• Inconvénient
– Poids identique → MAJ identique
– 𝑦1 = 𝑤11 𝑥1 + 𝑤12 𝑥2
– 𝑦2 = 𝑤21 𝑥1 + 𝑤22 𝑥2
𝜕𝐽 𝜕𝐽 𝜕𝑦1 𝜕𝐽 𝜕𝐽 𝜕𝐽 𝜕𝑦2 𝜕𝐽
– = = 𝑥 ↔ = = 𝑥
𝑤11 𝑦1 𝑤11 𝑦1 1 𝑤21 𝑦2 𝑤21 𝑦2 1
Ludovic Trottier 78/105
Initialisation par pré-entraînement
Domaine source Domaine cible
Étiquettes source Étiquettes cible
Grande Transfert Petite
Modèle source Modèle cible
quantité quantité
Exemples source Exemples cible
Ludovic Trottier 79/105
Initialisation par pré-entraînement
• Méthode
– Initialiser les paramètres du modèle cible avec
ceux du modèle source.
– Entraînement devient fine-tuning.
• Fonctionne si Dom(source) ≈ Dom(cible).
Ludovic Trottier 80/105
3. Normalisation
• Principe
– Transformer l’input pour mieux conditionner
l’optimisation.
• Nous verrons:
– Normalisation Min-Max
– Normalisation du z-score
– Normalisation par batch
Ludovic Trottier 81/105
Normalisation Min-Max
• Principe
– Transforme l’input au range 0, 1 .
• Méthode
𝒙 − 𝒙𝑚𝑖𝑛
–𝒙
ഥ=
𝒙𝑚𝑎𝑥 − 𝒙𝑚𝑖𝑛
• Sensibilité au outliers.
– Utilisé seulement quand 𝒙 est borné.
– Exemple: image 𝐼 ∈ 0, 255 3 → 𝐼 ∈ 0, 1 3
Ludovic Trottier 82/105
Normalisation du z-score
• Principe
– Aussi appelée normalisation tout court.
– Transforme l’input pour que moyenne = 0 et
variance = 1.
• Méthode
𝒙 −𝒙𝜇
–𝒙
ഥ=
𝒙𝜎2 +𝛿
– 𝒙𝜇 et 𝒙𝜎2 calculés avec tous les 𝒙(𝑖) , 𝑖 = 1 … 𝑁,
d’entraînement.
• Également sensible aux outliers.
• Souvent utilisée.
Ludovic Trottier 83/105
Normalisation par batch (BN)*
• Principe (lien)
– Appliquer normalisation du z-score sur les
neurones des couches cachées du réseau.
• Méthode
– 𝒉𝑙 = ℱ 𝒉𝑙−1
𝒉𝑙 − 𝒉𝑙 𝜇
– ഥ𝑙
𝒉 =𝜶⋅ +𝜷
𝒉𝑙 𝜎2 +𝛿
– 𝒉𝑙𝜇 et 𝒉𝑙 𝜎2 calculés seulement sur les 𝒉𝑙 de la
batch.
– 𝜶 et 𝜷 paramètres additionnels à apprendre.
Ludovic Trottier 86/105
Normalisation par batch
• Pour le mode test
– Moyenne mobile: 𝒎 ← 𝜌𝒎 + 1 − 𝜌 𝒉𝑙 𝜇
– Variance mobile: 𝒔 ← 𝜌𝒔 + 1 − 𝜌 𝒉𝑙 𝜎2
ഥ𝑙 = 𝜶 ⋅ 𝒉𝑙 − 𝒎
–𝒉 +𝜷
𝒔+𝛿
• Initialisation
– 𝜶 = 1, 𝜷 = 0, 𝒎 = 0, 𝒔 = 1
Ludovic Trottier 87/105
Avantages de la normalisation par
batch
• Avantage #1
– Apprentissage end-to-end avec backprop.
• Avantage #2
– Diminue l’impact d’un taux d’apprentissage
initial trop grand.
– 𝜖0 = 0.1 fonctionne souvent très bien.
• Avantage #3
– Réseaux profonds facile à entraîner.
Ludovic Trottier 88/105
Avantages de la normalisation par
batch
• Avantage #4
– Réseau converge plus rapidement.
• Avantage #5
– Diminue le nombre de neurones morts /
désactivés de la ReLU.
• La normalisation par batch devrait
toujours être utilisée.
– Placer avant activation ou après fc / conv.
Ludovic Trottier 89/105
Diagnostique
Diagnostique
• Quelques recettes à suivre pour partir du
bon pied
1. Structure neuronale de base.
2. Information à enregistrer.
3. Méthode rouleau compresseur.
4. Analyse
Ludovic Trottier 91/105
1. Structure neuronale de base
• Fully Connected Entrée
– Initialisation
Kaiming He Linéaire
uniforme
– bias = False BN
– BN: 𝜶 = 1, 𝜷 = 0, ReLU x K1
𝒎 = 0, 𝒔 = 1
Linéaire
Ludovic Trottier
Sortie 92/105
Structure neuronale de base
• Convolution Entrée
– Initialisation
Kaiming He normale Conv (3x3, s=1)
– bias = False
BN
– BN: 𝜶 = 1, 𝜷 = 0,
𝒎 = 0, 𝒔 = 1 ReLU x K1
– Max Pooling
Pooling
– Global Average x K2
Pooling Linéaire
Ludovic Trottier
Sortie 93/105
2. Information à enregistrer
• Bien diagnostiquer ↔ accès à toute
l’information
– But: s’assurer que tout se passe comme voulu.
• Voici quelques exemples d’information à
enregistrer.
Ludovic Trottier 94/105
Information de performance
• Valeur de la fonction de coût
– Peut voir s’il y a des nan, inf, si ça augmente
au lieu de diminuer.
• Valeur de la métrique de performance
– Donne une meilleure idée de la performance
que la function de coût (coût=1.2, err=5%).
Ludovic Trottier 95/105
Information sur le réseau
• Structure du réseau
– Peut voir si on entraîne le bon réseau.
• Afficher le nombre de paramètres
– [Link]([[Link]() for p in [Link]()])
• Afficher les prédictions d’une seule batch
en début d’époque
– Peut voir l’évolution des prédictions.
Ludovic Trottier 96/105
Information sur les donnés
• Nombre d’exemples d’entraînement / de
validation / de test.
• Ratio des classes
– Détecter un déséquilibre de classes.
• Afficher les exemples d’une seule batch en
début d’époque
– Seulement si c’est informatif (e.g. images)
Ludovic Trottier 97/105
Information sur l’optimisation
• La norme / moyenne / variance des MAJ 𝒅
• La norme / moyenne / variance / % = 0 des
neurones cachées
– Peut donner une idée du nombre d’unités
mortes.
• Afficher le temps de calcul d’une batch
– Estimer le temps total de l’apprentissage.
• Valeur des hyperparamètres
Ludovic Trottier 98/105
3. Méthode rouleau compresseur
• Pour mieux se familiariser avec un
nouveau problème d’apprentissage.
• Procéder en 3 étapes:
1. Sous-ensemble des données + sous-ensemble
des classes.
2. Toutes les données + sous-ensemble des
classes.
3. Toutes les données + toutes les classes.
Ludovic Trottier 99/105
Étape #1: sous-ensemble données +
sous-ensemble classes
• But
– Démontrer que le réseau peut sur-apprendre.
– Si pas bon en train → pas bon en val.
• Astuces
– Pas de régularisation.
– Pas d’augmentation de donnée.
• Exemple
– Classification binaire avec 10 exemples par
classe.
Ludovic Trottier 100/105
Étape #2: toutes les données + sous-
ensemble classes
• But
– Démontrer que le réseau peut généraliser.
• Astuces
– Ajouter un peu de régularisation.
– Ajouter un peu d’augmentation de donnée.
• Exemple
– Classification binaire avec 100,000 exemples
par classe.
Ludovic Trottier 101/105
Étape #3: toutes les données +
toutes les classes
• But
– Débuter l’entraînement normal.
• Astuces
– Petit réseau → gros réseau
– Horaire d’entrainement
– Augmentation de donnée maximale
• Exemple
– Classification 100 classes avec 100,000
exemples par classe.
Ludovic Trottier 102/105
4. Analyse
• But
– Obtenir une retrospective après
l’apprentissage.
• Permet de
– Détecter des étiquettes fausses
– Détecter un mauvais traitement de données.
– Donner une intuition sur la difficulté de la
tâche.
Ludovic Trottier 103/105
Analyse d’erreur
• Exemple
– Aléatoirement, regarder quelques exemples
de predictions correctes et erronées.
– L’exemple ayant la meilleure performance.
– L’exemple ayant la pire performance.
– L’exemple le plus incertain (prob 0.5
classification binaire)
Ludovic Trottier 104/105
Analyse des batches
• S’assurer que:
– Tous les exemples sont différents
– Les étiquettes sont correctes
• Afficher l’augmentation de données
– Regarder si elle respecte l’invariance de classe.
Ludovic Trottier 105/105