Skip to content
Snippets Groups Projects
Verified Commit 6a635ae2 authored by iliya.saroukha's avatar iliya.saroukha :first_quarter_moon:
Browse files

feat: can be considered as finished

parent b7c76487
Branches
Tags v1.0.0
No related merge requests found
......@@ -28,7 +28,7 @@ avec le concept de la descente de gradient dans le contexte de l’apprentissage
machine et l’intelligence artificielle.
La descente de gradient (le concept en lui-même ainsi que les divers
algorithmes) sont utilisés dans l’entraînement des réseaux neuronaux lors de la
algorithmes) est utilisée dans l’entraînement des réseaux neuronaux lors de la
rétropropagation ("Backpropagation"). En bref, la rétropropagation consiste à
"remonter" dans le réseau depuis la couche de sortie en direction de la couche
d’entrée afin d’ajuster les poids de chaque neurones qui ont contribué à un
......@@ -43,15 +43,15 @@ qui représente l’erreur commise lors d’une mauvaise classification.
À présent, nous allons présenter les diverses expériences effectuées, notamment
en ce qui concerne l'ajustement du **_learning rate_** (taux d'apprentissage)
$\lambda$ qui correspond donc à la taille du pas effectué à chaque itération des
des diverses méthodes de descente. Ceci sera illustré principalement à travers
la descente **simple**.
diverses méthodes de descente. Ceci sera illustré principalement à travers la
descente **simple**.
Dans un second temps, nous présenterons l'impact du paramètre **_momentum_**
(inertie) $\gamma$ dans le cadre de la descente **Momentum**. À la suite de ceci,
nous tenterons de faciliter la visualisation de la méthode **Nesterov** en la
comparant immédiatement à la **Momentum**.
Par la suite, nous introduirons la méthode la plus élaborée de quatres
Par la suite, nous introduirons la méthode la plus élaborée des quatres
présentées dans ce travail pratique, celle d'**Adam**. Initialement, nous allons
tenter d'étudier l'effet du _learning rate_ $\lambda$ sur cet algorithme et les
raisons pour lesquelles sa valeur devra diverger par rapport aux trois autres
......@@ -63,8 +63,8 @@ dont ces deux paramètres permettent de rendre le _learning rate_ dynamique
(c'est-à-dire l'ajuster en fonction des asymétries possiblement introduites par
un gradient plus prononcé dans une des dimensions par rapport aux autres). Cette
notion de taux d'apprentissage dynamique provient de l'algorithme **RMSProp**
(_Root Mean Square Propagation_) qui en calculant la moyenne des carrés des
composantes du gradient permet d'établir un taux d'apprentissage variable par
(_Root Mean Square Propagation_) qui, en calculant la moyenne des carrés des
composantes du gradient, permet d'établir un taux d'apprentissage variable par
composante.
Les paramètres d'**Adam** permettent aussi d'émuler un comportement d'inertie
......@@ -88,12 +88,12 @@ $$ {#eq-func-bol}
**n.b.** : Le gradient $\nabla$ de la fonction ci-dessus est accentué dans
la direction de l'axe $y$ à l'aide du facteur $k = 5$. Ceci aura son importance
pour lors de l'explication de la problématique des ravines ainsi que de la
lors de l'explication de la problématique des ravines ainsi que de la
visualisation de la méthode d'**Adam**.
Sur les figures ci-dessous nous pouvons voir l'effet du _learning rate_ sur le
nombre d'itérations de l'algorithme avant qu'on n'atteigne le minimum se
situant en $(x, y) = (0, 0)$.
situant en $f(0, 0)$.
:::: {#fig-basegd-lr layout="[[1], [1,1]]"}
......@@ -111,15 +111,15 @@ Dans le cas de la @fig-base-high-lr, nous pouvons voir que suite aux grands pas
effectués à chaque itération, la trajectoire est saccadée même si le minimum
est tout de même atteint. Le problème qui peut survenir suite à un $\lambda$ si
grand est le fait de potentiellement passer au-delà d'un fossé qui puisse contenir
le minimum recherché. Ce cas sera illustrer plus tard.
le minimum recherché. Ce cas sera illustré plus tard.
### Conclusion intermédiaire
A travers les exemples présenter sur la @fig-basegd-lr, nous pouvons facilement
A travers les exemples présenté sur la @fig-basegd-lr, nous pouvons facilement
se convaincre que le bon choix de la valeur du taux d'apprentissage, comme
beaucoup de choses dans la vie, repose sur un compromis. La valeur de $\lambda$
ne doit pas être à la fois trop petite (sinon le nombre d'itérations deviendra
énorme) ni trop grande (risque de rater un minimum, en "sautant" par-dessus).
énorme), ni trop grande (risque de rater un minimum, en "sautant" par-dessus).
Dès lors, la valeur du taux d'apprentissage choisie pour les algorithmes de
descente simple, Momentum et Nesterov sera de $\lambda = 1 \cdot 10^{-2}$.
......@@ -135,12 +135,12 @@ d'accentuer la taille du pas en fonction de la topologie dans son voisinage.
De manière plus simple, cela signifie que si la pente est raide, on peut se
permettre de faire un plus grand. Inversement, si le taux de variation est faible
alors le pas devra être petit. Ceci permet de diminuer la quantité d'itérations
nécéssaires pour atteindre un minimum.
nécessaires pour atteindre un minimum.
::: {.callout-note}
Une faible valeur de $\gamma$ implique le fait qu'on porte peu d'importance aux
pas précédents. En effet si $\gamma = 0$, alors on aboutit à une descente de
gradient simple.
gradient **simple**.
:::
:::: {#fig-momentum-gamma layout="[1, 1]"}
......@@ -153,7 +153,7 @@ Introduction du paramètre _momentum_ $\gamma$
::::
Pour pouvoir mieux voir la différence avec la méthode simple, nous allons
définir la valeur de $\lambda = 0.9$. Grâce à cette valeur nous pouvons à présent
définir la valeur de $\gamma = 0.9$. Grâce à cette valeur nous pouvons à présent
réellement apprécier la trajectoire totalement différente produite par la
descente **Momentum**.
......@@ -187,11 +187,11 @@ La trajectoire empruntée par la descente **Nesterov** est _étrangement_
similaire à celle de **Momentum** à un détail près, elle est **moins erratique**.
Ceci est dû au fait qu'avant d'effectuer le pas (c'est-à-dire passer à la
prochaine itération), **Nesterov** pré-calcule $\nabla{f}(\vec{x}_{k + 1})$ pour
corriger le grand pas effectuer par **Momentum** de sorte à pousser la
trajectoire un peu plutôt dans la bonne direction vers le minimum. La @fig-nesterov
l'illustre très bien, les deux trajectoires ont les mêmes tendances sauf que
l'orange (Nesterov) se "redresse" plus tôt et atteint le minimum plus rapidement
que Momentum (205 contre 317 itérations).
corriger le grand pas effectué par **Momentum** de sorte à pousser la
trajectoire un peu plus tôt dans la bonne direction vers le minimum. La
@fig-nesterov l'illustre très bien, les deux trajectoires ont les mêmes
tendances sauf que l'orange (Nesterov) se "redresse" plus tôt et atteint le
minimum plus rapidement que Momentum (205 contre 317 itérations).
## Méthode d'Adam
......@@ -202,7 +202,7 @@ bien résumés dans son nom. Essayons donc de le décortiquer :
- **_Adaptive_** $\rightarrow$ le principe "adaptatif" (ou dynamique) consiste à
tenter d'adapter le taux d'apprentissage par rapport aux spécificités de chaque
composantes / dimensions. En d'autres termes, le but est de diminuer le taux
d'apprentissage pour les dimensions ayant un fort gradient et inversément,
d'apprentissage pour les dimensions ayant un fort gradient et inversement,
accentuer ce taux pour les dimensions ayant une faible variation. Ceci permet
notamment de palier à certaines problématiques qui peuvent survenir lors d'une
descente de gradient sur une fonction _non-isotropique_ (possédant des
......@@ -227,9 +227,9 @@ la convergence vers un minimum.
Variation du taux d'apprentissage -- Adam
::::
Grâce à la @fig-adam-lr, nous pouvons observer l'effet du _learning rate_
Grâce à la @fig-adam-lr, nous pouvons observer l'effet du taux d'apprentissage
$\lambda$ sur la vitesse de convergence de cette méthode. Ce à quoi il est
nécéssaire de prêter attention est le fait que la valeur de $0.01$ utilisée
nécessaire de prêter attention est le fait que la valeur de $0.01$ utilisée
pour ce paramètre par les méthodes précédentes s'avère être beaucoup trop
faible dans le cas d'Adam. Le minimum n'est atteint qu'au bout de $2440$
itérations ce qui est approximativement trois fois plus que pour la méthode
......@@ -247,11 +247,11 @@ les diverses méthodes abordés à travers la visualisation des trajectoires
différentes qu'elles tracent.
La méthode qui se distingue le plus reste quand même celle d'**Adam**, suite
au fait qu'elle prend en compte l'isotropie présente dans la fonction. En
au fait qu'elle prend en compte l'aspect non-isotrope de la fonction. En
l'occurrence, le gradient dans la direction de l'axe $y$ est beaucoup plus
prononcé que celui de l'axe $x$, or la trajectoire tracée par **Adam** ne
priorise pas forcément la dimension ayant la plus grande variation du gradient.
Cela lui permet donc de ne pas être "influencer" par une dimension en
Cela lui permet donc de ne pas être "influencé" par une dimension en
particulier. Ceci est important car dans le cas d'une vraie fonction de coût,
il est possible que la dimension ayant en général une faible variation du
gradient possède à un moment un minimum plus important que les autres directions.
......@@ -288,10 +288,10 @@ Influence des paramètres $\beta_{1}$ et $\beta_{2}$ sur la méthode d'Adam
# Pièges
Après avoir passer en revue les particularités de chaque algorithme de descente,
nous allons à présent parler de certains pièges auxquelles ces méthodes peuvent
faire face. Nous présenterons les problématiques des ravines, des plateaux ainsi
que des minimaux locaux.
Après avoir passé en revue les particularités de chaque algorithme de descente,
nous allons à présent parler de certains pièges auxquels ces méthodes peuvent
faire face. Nous présenterons les problématiques des _ravines_, des _plateaux_
ainsi que des _minimaux locaux_.
## Ravines
......@@ -300,14 +300,14 @@ illustré à l'aide la @fig-base-high-lr. Suite au fait que la fonction
$f(x, y) = x^2 + 5y^2$ présente une non-isotropie (en d'autres termes, le
gradient n'est pas uniforme dans toutes les dimensions), nous pouvons voir que
l'algorithme de descente simple avec un taux d'apprentissage de $\lambda = 0.1$
arrive très rapidement à descendre dans la "vallée", au bout d'**une seule
itération** suite au fait que le gradient est très prononcé dans la direction
de l'axe $y$. Cependant pour pouvoir par la suite converger vers le minimum,
**72** itérations supplémentaires sont nécessaires car le gradient dans la direction
arrive à descendre dans la "vallée" au bout d'**une unique itération** suite
au fait que le gradient est très prononcé dans la direction de l'axe $y$.
Cependant pour pouvoir par la suite converger vers le minimum, **72**
itérations supplémentaires sont nécessaires car le gradient dans la direction
de l'axe $x$ est comparativement très faible.
Une seconde problématique est aussi soulevée. Si la nature non-isotropique de
la fonction est couplée à un taux d'apprentissage "trop" élevée, ceci peut
la fonction est couplée à un taux d'apprentissage "trop" élevé, ceci peut
potentiellement mener à une divergence de la descente comme l'illustre les
graphiques ci-dessous.
......@@ -332,9 +332,9 @@ Concernant la problématique des plateaux, celle-ci est assez explicite. Si
$\nabla{f} \approx \vec{0}$, alors les diverses méthodes auront beaucoup de
peine à avancer / itérer. Ce phénomène peut être illustré à l'aide de la
fonction $f(x, y) = 1 - \exp(-10x^2 - y^2)$ dont la particularité est qu'elle
est extrêmement plate sauf dans le voisinage de $(0, 0)$ où se situe son
est extrêmement plate sauf dans le voisinage de $f(0, 0)$ où se situe son
minimum global. Par la suite nous effectuerons tout de même une descente réussie
sur cette fonction cependant le point de départ se situera plus près de la zone
sur cette fonction cependant le point de départ devra se situer pas loin de
de l'extremum.
<!-- $$ -->
......@@ -351,10 +351,10 @@ de l'extremum.
Illustration du piège posé par un plateau
::::
Les ci-dessus illustrenet bien le fait qu'en partant du point $(2, 2)$
de la fonction, même après $1 \cdot 10^{5} - 1$ itérations, les quatres méthodes
Les graphiques ci-dessus illustrent bien le fait qu'en partant du point $(2, 2)$
de la fonction, même après $1 \cdot 10^{5}$ itérations, les quatres méthodes
n'ont su avancé dans la direction du minimum suite au fait que le gradient
présente peu de variation et par-dessus tout, le fait qu'il est presque égale
présente peu de variation et par-dessus tout, le fait qu'il est presque égal
au vecteur nul.
## Minimums locaux
......@@ -370,7 +370,7 @@ or il s'avère que le choix de celui-ci est souvent aléatoire.
Cette problématique sera illustrée à l'aide de divers graphiques lorsque nous
effectuerons les descentes de gradient sur la fonction d'**Ackley**. La
particularité de cette fonction est le fait qu'elle possède justement un très
grand nombre de minimum locaux et un minimum global bien défini en $(0, 0)$.
grand nombre de minimum locaux et un minimum global qui se démarque en $(0, 0)$.
# Descentes sur diverses fonctions
......@@ -393,8 +393,7 @@ la problématique des plateaux. Les graphiques ci-dessous permettent de mieux
visualiser sa particularité principale, celle d'un minimum global très prononcé
en $(0, 0)$ mais d'une topologie extrêmement plate dans ses environs. La
@fig-well-topology démontre cet aspect de topologie plate à travers le fait
qu'aucune ligne de niveau ne s'affiche dans le voisinage très proche de
l'extremum.
qu'aucune ligne de niveau ne s'affiche dans le voisinage proche de l'extremum.
:::: {#fig-well layout="[1,1]"}
......@@ -461,8 +460,8 @@ problématiques, nous allons à présent visualiser le problème des minimums
locaux et leur influence sur la recherche d'un minimum global. Pour faire ceci,
nous ferons appel à la fonction d'[Ackley](https://en.wikipedia.org/wiki/Ackley_function).
La raison de ce choix est le fait que cette fonction se prête très bien à cet
exercice suite au fait qu'elle possède une grande multitude de minimums locaux
avec un minimum global en $f(0, 0)$. Voici la fonction d'Ackley :
exercice suite au fait qu'elle possède une multitude de minimums locaux avec un
minimum global en $f(0, 0)$. Voici la fonction d'Ackley :
$$
\text{Ackley}(x, y) = -20\exp\left[-0.2\sqrt{0.5(x^2 + y^2)}\right] - \exp\left[0.5(\cos 2\pi x + \cos 2\pi y)\right] + e + 20
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment