From 0af273ddaf894b4cb4246fe33237f2fbdfcf5f06 Mon Sep 17 00:00:00 2001
From: Jan Aalmoes <jan.aalmoes@inria.fr>
Date: Mon, 30 Sep 2024 11:42:53 +0200
Subject: background sur auto encodeur

---
 background/ml.tex | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

(limited to 'background/ml.tex')

diff --git a/background/ml.tex b/background/ml.tex
index b8331b5..0f1b426 100644
--- a/background/ml.tex
+++ b/background/ml.tex
@@ -65,7 +65,7 @@ En pratique la quantité $c(\theta)$ est évaluée en calculant la moyenne empir
 $c$ n'étant pas forcément convexe, en fonction du point de départ ($x_0$) l'algorithme de descente de gradient peut converger vers un minimum local qui donnera un modèle finale avec de piètres qualités.
 C'est ce que nous représentons dans la Figure~\ref{fig:background-opti-cvx} où nous voyons une convergence vers un minimum local alors que le point recherché est au fond d'une vallée plus profonde.
 
-Très souvent l'algorithme d'optimisation utilisé est la descente de gradient stochastique (SGD)\footnote{\textit{Stochastic gradient descent}}~\cite{amari1993back}, c'est une version modifiée de la descente de gradient adaptée aux réseaux de neurones qui permet d'accélérer la convergence~\cite{bottou2012stochastic} et d'éviter les minimas locaux~\cite{bottou1991stochastic}.
+Très souvent l'algorithme d'optimisation utilisé est la descente de gradient stochastique (SGD)\footnote{\textit{Stochastic gradient descent}}~\cite{amari1993back}, c'est une version modifiée de la descente de gradient adaptée aux réseaux de neurones qui permet d'accélérer la convergence~\cite{bottou2012stochastic} et d'éviter les minima locaux~\cite{bottou1991stochastic}.
 Cet algorithme évalue l'espérance empirique de $C(\theta)$ sur chaque élément, appelé \textit{mini batch}, d'une partition des données d'entraînement.
 
 La recherche des paramètres d'entraînement comme la finesse de la partition ou le pas est en pratique réalisée par des algorithmes qui parcourent un espace de recherche et regardent l'entraînement pour quelques itérations~\cite{bergstra2015hyperopt}.
@@ -150,7 +150,7 @@ Nous appelons cela l'\emph{optimisation des hyperparamètres}.
         Pour cela nous repartons de l'Equation~\ref{eq:background-ml-ac} et remplaçons $P(Y=0)$ et $P(Y=1)$ par $\frac{1}{2}$.
         Ainsi l'exactitude équilibrée est la moyenne de $P(\hat{Y}=0|Y=0)$ et de $P(\hat{Y}=1|Y=1)$.
         De manière plus générale, l'exactitude équilibrée est 
-        $\frac{1}{\#E}\sum_{e\in E}P(\hat{Y}=e\mid Y=e)$.
+        $\frac{1}{\#F}\sum_{f\in F}P(\hat{Y}=F\mid Y=F)$.
         C'est-à-dire que nous regardons pour chaque classe séparément (homme ou femme dans notre exemple) la probabilité qu'un point soit bien classifié.
         Ainsi, en calculant l'exactitude équilibrée avec l'exemple précèdent nous obtenons $\frac{1+0}{2}=0,5$.
         Ce résultat montre bien que le modèle n'a pas d'utilité.
@@ -245,7 +245,7 @@ Nous appelons cela l'\emph{optimisation des hyperparamètres}.
 
     Dans la Figure~\ref{fig:background-ml-logit} nous avons l'exemple d'une régression logistique qui nous donne la courbe logit dans les trois premières sous-figures.
     Le seuil est représenté par le changement de couleur, tandis que les étiquettes sont représentées par la position sur l'axe des ordonnées.
-    Nous observons que changer le seuil permet d'influer sur les différentes métriques que nous avons présentées en Section~\ref{sec:backgroung-ml-classif}.
+    Nous observons que changer le seuil permet d'influer sur les différentes métriques que nous avons présentées en Section~\ref{sec:background-ml-classif}.
     Le choix d'un seuil approprié est donc dépendant de l'application. 
     Comme nous pouvons le voir sur la Sous-figure~\ref{subfig:background-ml-logit-d}, un seuil proche de $1$ permet de grandement réduire le FPR mais réduit aussi les autres métriques.
     Le choix d'un seuil est aussi particulièrement important quand les données présentent un déséquilibre, c'est-à-dire qu'une classe est majoritaire par rapport à une autre~\cite{zou2016finding}.
@@ -351,7 +351,23 @@ Le discriminateur est utilisé uniquement lors de l'entraînement du GAN et a po
 Pour cela, le discriminateur est un réseau de neurones ayant une tâche de classification : inférer si une donnée est synthétique ou réelle.
 Ainsi, dans la procédure d'entraînement, le discriminateur et le générateur sont en compétition : le but du générateur est de tromper le discriminateur à classifier une donnée synthétique comme réelle.
 
+Les GAN ne sont pas la seule manière de créer des données synthétiques, il existe aussi les auto encodeurs qui peuvent se rapprocher de méthodes plus classiques de génération de à partir d'une loi de probabilité qui admet une densité.
+Pour une variable aléatoire $X$ qui admet une densité $f$, la méthode d'inversion permet de générer des points tels que la loi empirique de ces points converge vers la loi de $X$ quand le nombre de points tend vers l'infini.
+Pour cela on génère $n$ points $x$ suivant une loi uniforme sur $[0,1]$ et pour chacun de ces points on calcul $F^{-1}(x)$.
+Où $F$ est une primitive de $F$.
+$F$ n'est pas nécessairement bijective, dans ce cas $F^{-1}$ désigne la pseudo-inverse : $F^{-1}(x) = inf\{y\mid F(y)\geq x\}$.
+
+En pratique approcher $F$ à partir d'une base de donnée est compliqué en grande dimension.
+On utilise une approche à base de réseaux de neurones appelé \emph{auto encodeur}.
+Il s'agit de deux réseaux de neurones $E:\mathbb{R}^m\rightarrow \mathbb{R}^n$ et $D:\mathbb{R}^n\rightarrow\mathbb{R}^m$
+Où $m$ est la dimension des données et $n<m$.
+On cherche ensuite à minimiser $l(D(E(x)),x)$ pour une fonction de coût $l$.
+Pour générer de nouveaux de points, on génère à partir d'une loi simple multivariée (uniforme, Laplace, normale, etc.) $y\in\mathbb{R}^n$ et le nouveau point est $D(x)$.
+Si $n=1$, $D$ peut être vu comme un manière d'apprendre $F$. 
+$E$ est appelé encodeur et $D$ décodeur.
+
 \subsection{Apprentissage ensembliste}
+\label{sec:background-aens}
 L'apprentissage ensembliste\footnote{\textit{Ensemble learning}} vise à combiner plusieurs classifieurs pour en obtenir un nouveau plus performant.
 Cette procédure se passe en deux temps. 
 Le premier consiste à créer un ensemble de classifieurs faibles.
-- 
cgit v1.2.3

