0% ont trouvé ce document utile (0 vote)
42 vues102 pages

Optimisation de l'apprentissage profond

Le document traite de l'optimisation pour l'apprentissage profond, en abordant des concepts clés tels que le risque empirique et le vrai risque, ainsi que divers algorithmes d'optimisation comme la descente du gradient et ses variantes. Il présente également des stratégies d'optimisation, y compris l'utilisation de momentum et des méthodes comme Adagrad. Enfin, il souligne les avantages et inconvénients de chaque approche pour améliorer les performances des réseaux de neurones.

Transféré par

Zou Ben Salem
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
42 vues102 pages

Optimisation de l'apprentissage profond

Le document traite de l'optimisation pour l'apprentissage profond, en abordant des concepts clés tels que le risque empirique et le vrai risque, ainsi que divers algorithmes d'optimisation comme la descente du gradient et ses variantes. Il présente également des stratégies d'optimisation, y compris l'utilisation de momentum et des méthodes comme Adagrad. Enfin, il souligne les avantages et inconvénients de chaque approche pour améliorer les performances des réseaux de neurones.

Transféré par

Zou Ben Salem
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi