diff --git a/report/report.qmd b/report/report.qmd index 13714a412d4146d6d464f5557b4e18bea54bc8c5..2979ff38bf3a291db6dc74c0d77140b33c8a4627 100644 --- a/report/report.qmd +++ b/report/report.qmd @@ -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]]"} {#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 +<!-- ### 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]]"} -{#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 ::::