0% ont trouvé ce document utile (0 vote)
5 vues92 pages

Optimization Deeplearning2

Le document présente divers algorithmes d'optimisation pour l'apprentissage automatique, notamment la descente de gradient stochastique (SGD), les taux d'apprentissage adaptatifs et les méthodes comme RMSProp et AdaDelta. Il aborde également des concepts tels que le momentum, la régularisation et les problèmes de surajustement. Enfin, le document explique les avantages des mini-lots et les techniques pour améliorer la convergence des modèles.

Transféré par

abdrahimchourfi20
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)
5 vues92 pages

Optimization Deeplearning2

Le document présente divers algorithmes d'optimisation pour l'apprentissage automatique, notamment la descente de gradient stochastique (SGD), les taux d'apprentissage adaptatifs et les méthodes comme RMSProp et AdaDelta. Il aborde également des concepts tels que le momentum, la régularisation et les problèmes de surajustement. Enfin, le document explique les avantages des mini-lots et les techniques pour améliorer la convergence des modèles.

Transféré par

abdrahimchourfi20
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

Pr.

BEN LAHMAR EL HABIB


Agenda
• Vanilla SGD • Adaptive Learning Rates
• Mini batch • NAG
• Rprop
• Momentum
• AdaGrad
• RMSProp
• AdaDelta
• Adam
• AdaMax
• Nadam
• AMSGrad
• Autres
Rappel

Three questions:
1. What architecture F(W,X).
2. What loss function L(W, yi, Xi).
3. What optimization method.

• DG:
• Bais & Variance
• Overfetting & underfetting
• Regularization
• Explosed - vanished
Variance and biais
Gradient (Steepest) Descent

• Calculer la pente (gradient) qui


est la dérivée du premier ordre
de la fonction au point courant
• Déplacement dans la direction
opposée de l'augmentation de la
pente à partir du point actuel de
la valeur calculée
Gradient (Steepest) Descent

• Se déplacer dans la direction opposée du gradient

Voir : [Link]
Batch Gradient Descent

• Dans Batch Gradient Descent, toutes les données d'entraînement


sont prises en compte pour effectuer une seule étape.
• Nous prenons la moyenne des gradients de tous les exemples
d'entraînement, puis utilisons ce gradient moyen pour mettre à jour
nos paramètres. Ce n'est donc qu'une étape de descente de
gradient en une seule epoch.

• La descente de gradient par lots est idéale pour les variétés d'erreur
convexes ou relativement lisses.
Stochastic Gradient Descent (SGD)

• Dans Batch Gradient Descent, nous avons considéré


tous les exemples pour chaque étape de Gradient
Descent.
• Mais que faire si notre ensemble de données est
très énorme.
Stochastic Gradient Descent (SGD)

• Dans Stochastic Gradient Descent (SGD), nous ne


considérons qu'un seul exemple à la fois pour faire un
seul pas. Nous effectuons les étapes suivantes en une
seule époque pour SGD:
1. Prenons un exemple
2. Envoyez-le au réseau neuronal
3. Calculer son gradient
4. Utilisez le gradient que nous avons calculé à l'étape 3 pour
mettre à jour les poids
5. Répétez les étapes 1 à 4 pour tous les exemples de
l'ensemble de données d'entraînement
Properties of Loss function for SGD

La fonction de perte sur tous les échantillons doit se décomposer


en une fonction de perte par échantillon
Vanilla SGD

Parameters of
Network

Function of network
parameters

Iteration number

Step size/Learning rate


Probleme
Mini-Batch

Nous n'utilisons pas tous les ensembles de données à la fois ni nous


n'utilisons l'exemple unique à la fois. Nous utilisons un lot d'un nombre
fixe d'exemples d'entraînement qui est inférieur au jeu de données réel et
l'appelons un mini-lot. Cela nous aide à profiter des avantages des deux
anciennes variantes que nous avons vues.
Mini-Batch

Mini-batch gradient
descent is a variation of the
gradient descent algorithm
that splits the training
dataset into small batches
that are used to calculate
model error and update
model coefficients.
Mini-Batches splitting

[Link]
EQUATION
Mini-Batch

Quel est l'avantage de le faire de cette façon?


1. Premièrement, il atténue une partie du bruit dans SGD,
mais pas la totalité, ce qui permet toujours de «sortir»
des minimums locaux de la fonction de coût.
2. Deuxièmement, la taille du mini-lot est encore petite,
conservant ainsi les avantages de performance de SGD.
TO READ

The Impact of the Mini-batch Size on the Variance of Gradients in


Stochastic Gradient Descent
[Link]
CODE EXAMPLE
Exponantial Moving Average
La moyenne mobile est la moyenne calculée
Simple moving average = (P1 + P2 + P3 + P4 + ... + Pn) / n
sur n valeurs successives plutôt que sur l'ensemble
des valeurs. Mathématiquement, il est noté:
Calcul de la moyenne mobile pondérée = (Pt-1 * facteur de
pondération) + Pt* (facteur de pondération-1)

A [i] représente la moyenne mobile au i point


de données pour la valeur X [i] . Le
paramètre β contrôle la valeur n sur laquelle la
moyenne est calculée.

Par exemple, si β = 0,9, la moyenne mobile


considère 10 valeurs successives pour calculer la
moyenne; si β = 0,99, la moyenne mobile
considère 100 valeurs consécutives pour calculer la
moyenne. En général, la valeur n peut être
approximée par la formule suivante:
Exponantial Moving Average
SGD + Momentum
Accelerating Gradient Descent (Use Momentum)

Prenons une situation où vous vous rendez dans un centre


commercial récemment ouvert dans une zone inconnue.
Pendant que vous essayiez de localiser le centre commercial, vous
avez demandé à plusieurs personnes l'emplacement du centre
commercial et tout le monde vous a demandé de vous rendre au
même endroit.
Parce que tout le monde vous dirige vers la même direction, vous irez
de plus en plus vite dans cette direction avec plus de confiance. Nous
allons maintenant utiliser la même intuition dans la descente de
gradient basée sur l'élan(momentum)
Motivation for momentum
chaque fois que nous faisons rouler la balle sur la colline (pour
chaque époque), elle roule plus vite vers les minima locaux dans
l'itération suivante. Cela nous rend plus susceptibles d'atteindre de
meilleurs minima locaux (ou peut-être un minima global).
SGD + Momentum
Accelerating Gradient Descent (Use Momentum)

Le chemin suivi par Gradient Descent


prend trop de pas par rapport à
Momentum. En effet, la descente de
gradient oscille trop sur l'axe y et se
déplace très moins sur l'axe x, c'est-à-
dire vers le minimum.
Une bonne solution serait de réduire
les oscillations en amortissant le
mouvement sur l'axe y. C'est là que la
moyenne mobile entre en jeu.
SGD + Momentum

• L'idée de base de Gradient Descent avec Momentum est


de calculer la moyenne pondérée exponentiellement des
gradients, puis d'utiliser ce gradient pour mettre à jour les
poids.

• Il fonctionne plus rapidement que l'algorithme normal


pour la descente de gradient.
SGD + Momentum

SGD:

Parameters of
Network

Iteration number

Step size/Learning rate

β Momentum
Comment choisir Beta?

• Le momentum (bêta) doit être plus élevé pour lisser la mise à jour
car nous accordons plus de poids aux gradients passés.
• L'utilisation de la valeur par défaut β = 0,9 est suggérée mais peut
être réglée entre 0,8 et 0,999 si nécessaire.
• Momentum prend en compte les gradients passés afin de lisser les
mesures de la gradient. Il peut être mis en œuvre avec descente
gradient batch, descente gradient mini-batch ou descente
gradient stochastique.
SGD + Momentum

• At iteration 𝑡 you add updates from previous iteration 𝑡−𝑛 by


weight β𝑛
1
• You effectively multiply your updates by
1−β

[Link]
Exemple de code
Nesterov Accelerate Gradient (NAG)
• L'intuition derrière NAG peut être mise en une seule phrase:
• Regardez devant vous avant de sauter!

• Ilya Sutskever, 2012

• Faites d'abord un saut comme momentum


• Ensuite, selon l'endroit où vous arrivez, corrigez les
paramètres
[Link]
NAG
étape de gradient «anticipé»

Parameters of
Network

Iteration number

Step size/Learning rate

β Momentum
NAG vs Standard Momentum
Exemple code
Pourquoi quelque chose de nouveau
(au-delà de Momentum / NAG)?
• Comment définir le taux d'apprentissage et la dégradation des
taux d'apprentissage?
• Idéalement, des taux d'apprentissage adaptatifs
Pourquoi quelque chose de nouveau
(au-delà de Momentum / NAG)?
• Les neurones de chaque couche apprennent différemment
• L'amplitude des gradients varie d'une couche à l'autre
• Les premières couches obtiennent des “vanishing gradients”
• Devrait idéalement utiliser des taux d'apprentissage adaptatifs
séparés
• One of the reasons for having “gain” or lr multipliers in caffe
• Algorithmes de taux d'apprentissage adaptatif
• Jacobs 1989 - accord en signe entre gradient actuel pour un
poids et la vitesse pour ce poids
• Utilisez des mini-batch plus grands
Adaptive Learning Rates
Resilient Propagation (Rprop)

• Rprop est un algorithme de descente de gradient populaire qui


n'utilise que les signes de dégradés pour calculer les mises à jour.
• Il signifie Propagation résiliente et fonctionne bien dans de
nombreuses situations car il adapte la taille de pas de manière
dynamique pour chaque poids indépendamment.

[Link], R., 2013. Réseaux de neurones: une introduction systématique. Springer Science & Business Media.
[Link], M. et Braun, H., 1993. Une méthode adaptative directe pour un apprentissage de rétropropagation plus rapide: l'algorithme RPROP. Dans Neural
Networks, 1993., IEEE International Conference on (pp. 586-591). IEEE.
[Link]
Resilient Propagation (Rprop)

• Riedmiller and Braun 1993


• Aborder le problème du taux d'apprentissage adaptatif

• Augmenter le taux d'apprentissage d'un poids de manière


multiplicative si les signes des deux derniers gradients sont les
mêmes
• Sinon, diminuer le taux d'apprentissage de manière multiplicative
Signes; jumping over the optimum

- +
Idée
• À chaque itération de Rprop, les gradients sont calculés et les
tailles de pas sont mises à jour individuellement pour chaque
dimension. Cela se fait en comparant le signe du gradient de
l'itération actuelle et précédente.
• L'idée ici est la suivante:
• Lorsque les signes sont les mêmes, on va dans le même sens que dans l'itération
précédente. Comme cela semble être une bonne direction, la taille du pas doit être
augmentée pour atteindre l'optimum plus rapidement
• Si le signe a changé, la nouvelle mise à jour se déplace dans une direction
différente. Cela signifie que nous venons de sauter par-dessus un optimum. La taille du
pas doit être diminuée pour éviter de sauter à nouveau par-dessus l'optimum
Rprop Update
Hyperparamètres
• Valeurs populaires pour n- et n+ sont 1.2 et 0,5.

• Heuristiquement, cela fonctionne bien pour


augmenter lentement la taille du pas, tout en
permettant la possibilité de la réduire rapidement
en sautant autour d'un optimum. Pour affiner les
poids, il est important que n- n'est pas la
réciproque de n+, pour permettre de
nombreuses tailles de pas différentes.
Rprop Update
Rprop Update

Calculer le changement de poids

Modifier les valeurs de mise à jour


Rprop Initialization

• Initialiser toutes les mises à jour à l'itération 0 à une valeur


constante
• If you set both learning rates to 1, you get “Manhattan update
rule”

• Rprop divise efficacement le gradient par son amplitude


• Vous ne mettez jamais à jour en utilisant le dégradé lui-même, mais par son signe
Problems with Rprop

• Considérez un poids qui obtient des mises à jour de 0,1 en neuf


mini-lots, et -0,9 dans le dixième mini batch
• SGD garderait ce poids à peu près là où il a commencé,
Rprop augmenterait le poids de neuf fois par 𝛿, puis pour la
dixième mise à jour diminuer le poids de 𝛿
• Mise à jour effective 9𝛿 − 𝛿 = 8𝛿
• Donc sur plusieurs mini-batches, nous adaptons les mises à jour très
différemment
+𝛿 +2𝛿 +9𝛿 -𝛿
Nous devons faire évoluer les mises à jour sur plusieurs mini-
9 10 batches de la même manière
1 2
➢ Comment ????
Le gradient adaptatif, AdaGrad

• Le gradient adaptatif, ou AdaGrad ( Duchi et al., 2011 ), agit sur


la composante du taux d'apprentissage en divisant le taux
d'apprentissage par la racine carrée de v , qui est la somme
cumulée des gradients carrés actuels et passés (c'est-à-dire
jusqu'au temps t ) .

• Notez que le composant du gradient reste inchangé comme


dans SGD.
Adaptive Gradient (AdaGrad)
• Duchi et al., 2010
• Nous devons faire évoluer les mises à jour sur plusieurs mini-batches
de la même manière
• Utiliser les mises à jour du gradient comme indicateur de la mise à
l'échelle

• Adapter la MAJ de chaque paramètre wt individuellement pour


uniformiser le taux de changement
Exemple code
Problems with AdaGrad

• Réduit la taille de la mise à jour d’une manière très agressive

• Le problème avec l'algorithme AdaGrad était que le taux


d'apprentissage devient très petit avec un grand nombre d'itérations,
ce qui conduit à une convergence lente.
RMSProp = Rprop + SGD
• Tieleman & Hinton et al., 2012
• Au lieu de prendre la somme cumulative des gradients carrés comme
dans AdaGrad, nous prenons la moyenne mobile exponentielle De ces
gradients.
• Mettre à l'échelle les mises à jour de la même manière sur mini-batches
• Décroissant la moyenne du gradient carré
• Plutôt que la somme des gradients carrés dans AdaGrad

Valeurs par défaut (de Keras ):


• α = 0,001
• β = 0,9 (recommandé)
et v initialisé à 0. • ε = 10⁻⁶
RMSProp

• A réussi à former des modèles récurrents

• L'utilisation de Momentum ne montre généralement pas beaucoup


d'amélioration
Exemple de code
Fancy RMSProp

• “No more pesky learning rates” – Schaul et al.


• Computes a diagonal Hessian and uses something similar to RMSProp
• Diagonal Hessian computation requires an additional Forward-Backward
pass
• Double the time of SGD
Adadelta

Le problème avec l'algorithme AdaGrad était que le taux


d'apprentissage devient très petit avec un grand nombre d'itérations,
ce qui conduit à une convergence lente.
Pour éviter cela, l'algorithme AdaDelta a l'idée de prendre une
moyenne en décroissance exponentielle.
Adadelta

• Adadelta est une extension d'Adagrad et tente également de


réduire l'agressivité d'Adagrad, en réduisant de manière monotone
le taux d'apprentissage
• Pour ce faire, il restreint la fenêtre du gradient accumulé passé à
une taille fixe de w. La moyenne mobile au temps t dépend alors
de la moyenne précédente et du gradient actuel
• En Adadelta, nous n'avons pas besoin de définir le taux
d'apprentissage par défaut car nous prenons le rapport de la
moyenne mobile des pas de temps précédents au gradient actuel.
Adadelta

• Comme RMSprop, Adadelta ( Zeiler, 2012 ) est également


une autre amélioration d'AdaGrad, en se concentrant sur la
composante du taux d'apprentissage.

• La différence entre Adadelta et RMSprop est qu'Adadelta


supprime complètement l'utilisation du paramètre de taux
d'apprentissage en le remplaçant par D, la moyenne
mobile exponentielle des deltas carrés .
AdaDelta

• Zeiler et al., 2012


• Obtenez des mises à jour qui Tel que:
correspondent aux unités
• Conserver les propriétés de
RMSProp

avec D et v initialisés à 0, et
• Valeurs par défaut (de Keras ):
• β = 0,95
• ε = 10⁻⁶
Adam

• L'estimation adaptative du moment, ou Adam ( Kingma & Ba, 2014),


est simplement une combinaison de momentum et de RMSprop. Il
agit sur
• la composante de gradient en utilisant m , la moyenne mobile exponentielle
des gradients (comme dans momentum), et
• la composante du taux d'apprentissage en divisant le taux d'apprentissage
α par la racine carrée de v , la moyenne mobile exponentielle des gradients
carrés (comme dans RMSprop).
Adam

• Kingma & Ba, 2015


• Averages of gradient, or squared gradients
• Bias correction

bias corrections

avec m et v initialisés à 0.
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.
Adam
Adam update rule

l'optimiseur Adam peut aussi s'écrire:

Mise à jour du poids pour l'optimiseur Adam

Mise à jour du poids pour l'optimiseur Adam


Adam
Exemple de code
AdaMax

• AdaMax ( Kingma & Ba, 2015 ) est une adaptation de l'optimiseur


Adam par les mêmes auteurs en utilisant des normes à l'infini (d'où
«max»).
• m est la moyenne mobile exponentielle des gradients, et v est la
moyenne mobile exponentielle de la p- normale passée des
gradients, approximée à la fonction max
AdaMax
Nadam

• Nadam ( Dozat, 2015 ) est un acronyme pour Nesterov et Adam


optimiser.
• Nadam utilise Nesterov pour mettre à jour le gradient avec une
longueur d'avance en remplaçant le m^ précédent dans l'équation
ci-dessus par le m^ actuel :
AMSGrad

• Une autre variante d'Adam est l'AMSGrad ( Reddi et al., 2018 ).


• Cette variante revisite le composant de taux d'apprentissage
adaptatif dans Adam et le modifie pour s'assurer que le courant v
est toujours plus grand que le v du pas de temps précédent .
AMSGrad

avec m et v initialisés à 0.
Adam Results – Logistic Regression
Adam Results - MLP
Adam Results – Conv Nets
Visualization

Alec Radford
Comparaison
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
Batch Normalization
Ioffe and Szegedy, 2015
Batch Normalization

• Le comportement des algorithmes d'apprentissage automatique


peut changer lorsque la distribution d'entrée change: si le train et
les ensembles de test proviennent de sources entièrement
différentes, les distributions seraient différentes.
Batch Normalization

• Dans le contexte du deep learning, nous sommes particulièrement


concernés par le changement de la répartition des entrées vers les
nœuds internes d'un réseau.
• Un réseau de neurones modifie les poids de chaque couche au cours de
la formation. Cela signifie que les activations de chaque couche changent
également .
• Puisque les activations d'une couche précédente sont les entrées de la
couche suivante, chaque couche du réseau neuronal est confrontée à
une situation où la distribution d'entrée change à chaque étape .
• Ceci est problématique car cela oblige chaque couche intermédiaire
à s'adapter en permanence à ses entrées changeantes.
Distribution of input

• Having a fixed input distribution is known to help training of linear


classifiers
• Normalize inputs for SVM
• Normalize inputs for Deep Networks
Distribution of input at each layer
• la distribution des entrées de chaque couche change
pendant l'entraînement, à mesure que les paramètres des
couches précédentes changent.

• Chaque couche bénéficierait si son entrée avait une


distribution constante
Normalize the input to each layer!

• Pour chaque fonctionnalité, la normalisation par lots calcule la moyenne


et la variance de cette fonctionnalité dans le mini-lot. Il soustrait ensuite
la moyenne et divise l'entité par son écart type du mini-lot. Résultat de la
transformation des entrées en moyenne 0 et variance unitaire.
• C’est une technique pour améliorer la vitesse, les performances et la
stabilité des réseaux de neurones artificiels. Il est utilisé pour normaliser
la couche d'entrée en ajustant et en mettant à l'échelle les activations.

• La normalisation par lots nous permet d'utiliser des taux d'apprentissage


beaucoup plus élevés et d'être moins prudents lors de l'initialisation. Il
agit également comme un régularisateur, éliminant dans certains cas le
besoin d'abandonner.
Normalize the input to each layer!
Is this normalization a good idea?
• Considérez les entrées d'une couche sigmoïde
• S'il est normalisé, le sigmoïde peut ne jamais «saturer»
Modify normalization …
• Accommodate identity transform

Learned parameters
Batch Normalization Results
Batch Normalization for ensembles

Vous aimerez peut-être aussi