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
43bf7267
Verified
Commit
43bf7267
authored
10 months ago
by
iliya.saroukha
Browse files
Options
Downloads
Patches
Plain Diff
feat: quatro is maaaad
parent
d1924da9
No related branches found
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
+104
-0
104 additions, 0 deletions
report/report.qmd
with
104 additions
and
0 deletions
report/report.qmd
0 → 100644
+
104
−
0
View file @
43bf7267
---
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]]"}
{width=80%}
{width=80%}
{width=80%}
Variation de $\lambda$ sur la descente simple
:::
<!-- {width=70%} {width=70%} -->
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