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

feat: function exploration done

parent 1d455e27
Branches
No related tags found
No related merge requests found
......@@ -405,7 +405,7 @@ l'extremum.
Descentes sur la fonction "puit"
::::
### Valeur de la fonction de coût
### Évolution de la valeur 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]]"}
![Graphique de la fonction Rosenbrock](./figs/rosenbrock/graph.svg){#fig-rosenbrock-graph}
![Méthodes de descentes](./figs/rosenbrock/topology.svg){#fig-rosenbrock-topology}
![Évolution de la minimisation de la valeur de la fonction Rosenbrock](./figs/rosenbrock/cost_func_value.svg){#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
![Graphique de la fonction Ackley](./figs/ackley/titlepage.svg){#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
<!-- ### Descentes 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]]"}
![Descentes sur la fonction d'Ackley](./figs/ackley/graph.svg){#fig-ackley-graph-descent}
![Graphique de la fonction d'Ackley](./figs/ackley/graph.svg){#fig-ackley-graph-descent}
![Vue macroscopique des trajectoires](./figs/ackley/topology_macro.svg){#fig-ackley-topology-macro}
![Vue microscopique des trajectoires](./figs/ackley/topology_micro.svg){#fig-ackley-topology-micro width="80%"}
![Vue microscopique des trajectoires](./figs/ackley/topology_micro.svg){#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]"}
![Vue macroscopique](./figs/ackley/cost_func_macro.svg){#fig-ackley-cost-macro}
![Vue microscopique](./figs/ackley/cost_func_micro.svg){#fig-ackley-cost-micro}
Évolution de la valeur de la fonction d'Ackley à chaque itération
::::
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment