Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
gradient_descent
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ISC2
maths
gradient_descent
Commits
b7c76487
Verified
Commit
b7c76487
authored
11 months ago
by
iliya.saroukha
Browse files
Options
Downloads
Patches
Plain Diff
feat: function exploration done
parent
1d455e27
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
report/report.qmd
+89
-28
89 additions, 28 deletions
report/report.qmd
with
89 additions
and
28 deletions
report/report.qmd
+
89
−
28
View file @
b7c76487
...
...
@@ -405,7 +405,7 @@ l'extremum.
Descentes sur la fonction "puit"
::::
###
V
aleur de la fonction de coût
###
Évolution de la v
aleur de la fonction de coût
Le graphique ci-dessous permet d'illustrer clairement l'évolution de la valeur
de la fonction de coût $f$ par rapport au nombre d'itérations effectuées par
...
...
@@ -418,59 +418,120 @@ nécessite $17'452$ itérations pour y parvenir.
## Rosenbrock
La fonction de Rosenbrock est une fonction du type $(a - x)^2 + b(y - x^2)^2$
souvent utilisée pour évaluer les performances d'algorithmes d'optimisation. Sa
particularité est le fait que son minimum global se situe en $f(a, a^2)$ et la
valeur à atteindre en ce point est 0. En l'occurrence, nous avons utilisé la
variante avec $a = 1$ et $b = 1$ (sinon `sympy` explose) ce qui implique donc
que le minimum global à atteindre se situe en $x = 1$ et $y = 1$
$$
\text{Rosenbrock}(x, y) = (1 - x)^2 + (y - x^2)^2
$$ {#eq-func-rosenbrock}
:::: {#fig-rosenbrock layout="[1,1]"}
Les graphiques sur la page suivante illustrent les descentes de diverses méthodes
depuis le point $(3, -4)$ jusqu'au minimum en $(1, 1)$. Le tableau ci-dessous
résume le nombre d'itérations requises par chaque méthode avant d'atteindre le
minimum.
| Méthodes | Nombre d'itérations |
| -------------- | --------------- |
| Simple | 3'759 |
| Momentum | 296 |
| Nesterov | 202 |
| Adam | 342 |
:::: {#fig-rosenbrock layout="[[1], [1,1]]"}
{#fig-rosenbrock-graph}
{#fig-rosenbrock-topology}
{#fig-rosenbrock-cost-func-value}
Graphique des descentes sur la fonction de Rosenbrock
::::
\newpage
## Ackley
Pour terminer en beauté, nous allons effectuer notre dernière descente sur une
fonction complexe, celle d'[Ackley](https://en.wikipedia.org/wiki/Ackley_function).
Cette fonction fut nommée après David Ackley, la personne l'ayant proposée dans
thèse de doctorat.
Comme cela fut promis dans la partie consacrée à la discussion des
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 :
$$
\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
$$ {#eq-func-ackley}
::: {.callout-note}
La fonction d'Ackley est souvent utilisé comme outil de test pour les
algorithmes d'optimisation car elle permet d'illustrer le piège créé par la
présence d'une grande quantité de minimums locaux. Le but à atteindre est son
minimum global en $(0, 0)$.
:::
### Graphique de la fonction
{#fig-ackley-graph}
<!-- ::: {.callout-note} -->
<!-- La fonction d'Ackley est souvent utilisé comme outil de test pour les -->
<!-- algorithmes d'optimisation car elle permet d'illustrer le piège créé par la -->
<!-- présence d'une grande quantité de minimums locaux. Le but à atteindre est son -->
<!-- minimum global en $(0, 0)$. -->
<!-- ::: -->
### Descente sur la fonction d'Ackley
<!--
### Descente
s
sur la fonction d'Ackley
-->
Les graphiques ci-dessous permettent d'illustrer le comportement des divers
algorithmes lors de la descente sur la fonction d'Ackley. Sur la @fig-ackley-topology-micro
nous pouvons très clairement voir que les descentes simple, Momentum et Nesterov
sont toutes restées coincées dans un minimum local. La seule méthode qui a su
passer au-delà de ce minimum est **Adam**. Après $1 \cdot 10^{5}$ itérations,
le minimum global n'a tout de même pas pu être atteint cependant, Adam s'est
retrouvé dans le fossé global. Avec plus d'itérations, il est très probable
qu'Adam aurait convergé sur le minimum en $(0, 0)$.
<!--
Les graphiques ci-dessous permettent d'illustrer le comportement des divers
-->
<!--
algorithmes lors de la descente sur la fonction d'Ackley. Sur la @fig-ackley-topology-micro
-->
<!--
nous pouvons très clairement voir que les descentes simple, Momentum et Nesterov
-->
<!--
sont toutes restées coincées dans un minimum local. La seule méthode qui a su
-->
<!--
passer au-delà de ce minimum est **Adam**. Après $1 \cdot 10^{5}$ itérations,
-->
<!--
le minimum global n'a tout de même pas pu être atteint cependant, Adam s'est
-->
<!--
retrouvé dans le fossé global. Avec plus d'itérations, il est très probable
-->
<!--
qu'Adam aurait convergé sur le minimum en $(0, 0)$.
-->
:::: {#fig-ackley layout="[[1,1], [1]]"}
{#fig-ackley-graph-descent}
{#fig-ackley-graph-descent}
{#fig-ackley-topology-macro}
{#fig-ackley-topology-micro width="80%"}
{#fig-ackley-topology-micro width="65%"}
Descentes sur la fonction d'Ackley
::::
Descentes sur la fonction Ackley
Premièrement, la @fig-ackley-topology-macro illustre bien le fait qu'Adam a su
se diriger vers le minimum global même s'il ne l'a pas totalement atteint suite
au fait que nous imposons une limite de $100'000$ itérations afin de pouvoir
borner le temps d'exécution des descentes.
En ce qui concerne les trois autres méthodes, la @fig-ackley-topology-micro
permet de desceller le fait qu'elles soient restées coincées très tôt dans un
minimum local. En ce qui concerne la méthode simple, ce n'est pas surprenant
vu son fonctionnement. Quant à Momentum et Nesterov qui possèdent une composante
associée à l'inertie, il est légitime de se poser la question pourquoi eux
aussi sont restés bloqués ? La raison est tout simplement car ils n'ont pas eu
assez de temps pour gagner assez d'inertie pour pouvoir passer au-delà du
premier minimum local. La @fig-ackley-topology-macro permet de bien visualiser
la topologie de cette fonction et en conclure que chaque minimum local est
entouré par un "bol" qui compense l'inertie gagnée initialement lors d'une
descente. Cela se voit sur la @fig-ackley-topology-micro grâce au fait que les
points de couleur cyan et orange ont l'air de d'abord passer par-dessus le
minimum en $\sim f(-4.99, -4.99)$ grâce à l'inertie accumulée lors de la descente
depuis $f(-5, -5)$ sauf que celle-ci n'a pas duré assez longtemps pour qu'ils
puissent par la suite continuer à descendre. De ce fait, nous voyons donc que
les points oscillent jusqu'à se stabiliser dans le minimum local.
Les graphiques ci-dessous de l'évolution de la valeur de la fonction à chaque
itération, permettent aussi d'observer ces oscillations, notamment dans le
cas de Momentum. Ceci indique qu'après être passé par un minimum, Momentum
fait face à une montée qu'il n'arrive pas à surmonter (_no pun intended_).
Concernant Adam, lui aussi affiche des tendances d'oscillations (long bloc
violet sur la @fig-ackley-cost-macro), cependant celles-ci se situent au niveau
d'une valeur bien plus basse que dans le cas des trois autres méthodes.
:::: {#fig-ackley-cost-func layout="[1,1]"}
{#fig-ackley-cost-macro}
{#fig-ackley-cost-micro}
Évolution de la valeur de la fonction d'Ackley à chaque itération
::::
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment