From 43bf7267830b602ee757ad933197d644c2fb3199 Mon Sep 17 00:00:00 2001
From: "iliya.saroukha" <iliya.saroukhanian@etu.hesge.ch>
Date: Wed, 29 May 2024 19:01:27 +0200
Subject: [PATCH] feat: quatro is maaaad

---
 report/report.qmd | 104 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 104 insertions(+)
 create mode 100644 report/report.qmd

diff --git a/report/report.qmd b/report/report.qmd
new file mode 100644
index 0000000..36b55f6
--- /dev/null
+++ b/report/report.qmd
@@ -0,0 +1,104 @@
+---
+title: |
+    Descente de Gradient
+subtitle: ISC_423
+author:
+    - Aliya Myaz
+    - Omar Alkheja
+    - Iliya Saroukhanian
+lang: fr-CH
+date: today
+date-format: long
+format:
+    pdf:
+        documentclass: scrreprt
+        papersize: a4
+        lof: true
+        highlight-style: github
+        toc: true
+        number-sections: true
+        colorlinks: true
+---
+
+# Introduction
+
+Dans le cadre de ce travail pratique, nous étions amenés à nous familiariser
+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
+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
+résultat faussé de sorte à pouvoir corriger le réseau. Cette correction
+s’effectue grâce à une descente de gradient sur une fonction, dite de "coût",
+qui représente l’erreur commise lors d’une mauvaise classification.
+
+# Expérimentation
+
+## Résumé des points abordés
+
+À 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**.
+
+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
+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
+méthodes.
+
+En suite, nous tenterons de jouer avec les deux paramètres specifiques à
+**Adam**, $\beta_{1}$ et $\beta_{2}$, afin d'essayer de visualiser la manière
+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
+composante.
+
+Les paramètres d'**Adam** permettent aussi d'émuler un comportement d'inertie
+présent dans les méthodes **Momentum** et **Nesterov** à l'aide d'un calcul
+des moyennes mobiles.
+
+En somme, **Adam** est censé représente le meilleur des deux mondes (taux
+d'apprentissage variable par composante et l'inertie qui permet de pouvoir passer
+au-delà de certains minimums locaux dans le but d'en trouver un global).
+
+## Effet du taux d'apprentissage $\lambda$ -- descente simple
+
+Pour pouvoir illustrer l'effet du taux d'apprentissage sur le comportement de
+la descente, nous avons pris trois valeurs de $\lambda$ séparée à chaque fois
+d'un ordre de grandeur pour rendre la visualisation plus claire. Les exemples
+ci-dessous ont été effectués sur la fonction $f$ :
+
+$$
+f(x, y) = x^2 + ky^2 \quad \forall k \in \mathbb{N}
+$$
+
+$\text{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 la visualisation de la méthode d'**Adam**.
+
+::: {#fig-basegd-lr layout="[[1], [1, 1]]"}
+
+![$\lambda = 1 \cdot 10^{-1}$, $\text{iter} = 73$](./figs/f/lr_1e-1.svg){width=80%}
+
+![$\lambda = 1 \cdot 10^{-2}$, $\text{iter} = 798$](./figs/f/lr_1e-2.svg){width=80%}
+
+![$\lambda = 1 \cdot 10^{-3}$, $\text{iter} = 8051$](./figs/f/lr_1e-3.svg){width=80%}
+
+Variation de $\lambda$ sur la descente simple
+:::
+
+
+<!-- ![](./figs/f/lr_2e-2.svg){width=70%} ![](./figs/f/lr_1e-3.svg){width=70%} -->
-- 
GitLab