L'aprantissiage automatique\footnote{\textit{Machine learning}} est le fondement de l'IA moderne.


\subsection{Principe}
Repprenosn la définition de L'IA donnée dans le reglement UE 2024/1689 pour une harmonisation des regulations relatives a l'IA~\cite{aiact} et notamant la Figure~\ref{fig:contexte-IAUE}.
Cette definition exprime bien le fonctionement d'un modèle d'apprantissage automatique.
Le modèle est un fonctione qui prend en entrée une donnée d'entrée et des parametre et qui renvoi un prédiction.
Le vie d'un modèle se passe en deux étape.
Premièrement il faut trouver des paramètres qui assurent un bon fonctionnement du modèle.
En générale le bon fonctionement se défini en disant que le modèle a une bonne utilité et respecte le contraintes qui lui sont demandé.
Ces contraintes peuvent être pour impose l'équité ou la confidentialité par exemple.
Ensuite, le paramètres sont utilisés pour réaliser de prédictions sur des données nouvelle, qui n'ont en générale pas été utilisés pour l'entraînement.
Par exemple pour en revnir à la justice prédictive, les paramètre sont trouvé en utilisant des données historique de tribunaux.
Le modèle est ensuite utilisé sur de nouveaux cas de comdanmé.
Nous allons présenter ces deux aspects entraîenemnt et évaluation dans les Section qui suivent.

\subsection{Entraîner un modèle}
\label{sec:background-ml-train}
Les données qui servent à l'entraînement du modèle doivent posséder une étiquette : c'est-à dire le résultat atendu qui est consédéré comme vraie.
Dans la justice prédictive il s'agit de savoir si le coupabe à été récidiviste après avoir été libéré.
Pour prendre un exemple plus scolaire, sur le jeu de donnée Iris~\cite{iris}, on cherche à classifier l'éspèce d'Iris à partir de la longeur et de la largeur des sépales et des pétales.
Nous utilisons, pour l'entraînement, des données de taille de sépale et pétale pour lesquelles nous conaissons l'espèce d'Iris.
En utilisant ces données nous ajustons les paramètres pour que le prédiction soit la plus précise possible.

Pour ce faire nous utilisons une fonction de coût.
C'est une fonction qui sert à déterminer à quel point une prédiction est bonne.
C'est-à dire que plus la fonction de coût renvoi un valeur petite, meilleur est le modèle.

Nous definisson le modèle suivant. 
\begin{equation*}
    f:
    \left\{
        \begin{matrix}
            E\times\Theta\rightarrow \mathbb{R}^n\\
            x\mapsto f(x,\theta)
        \end{matrix}
    \right.
\end{equation*}
Alors une fonctions de coût, est une fonction $l$ de $\mathbb{R}^n\times\mathbb{R}^n$ dans $\mathbb{R}^+$.
On se donne l'espace probabilisé $(\Omega,\mathcal{T},P)$.
Soit $\mathcal{V}$ l'ensemble des variables aléatoire de $\Omega$ dans $\mathbb{R}^+$.

Nous pouvons ainsi définir le coût induit par un choix de paramètres par la fonction 
\begin{equation*}
    C:\left\{
        \begin{matrix}
            \Theta\rightarrow \mathcal{V}\\
            \theta\mapsto 
                \left\{
                    \begin{matrix}
                        \Omega\rightarrow\mathbb{R}^+\\
                        \omega\mapsto 
                        l(f(X(\omega),\theta),Y(\omega))
                    \end{matrix}
                \right.
        \end{matrix}
    \right.
\end{equation*}
Ainsi nous avons une fonctionelle $c:\theta\mapsto E(C(\theta))$ en prenant l'espérence de coût.
Nous pouvons donc appliquer un des algorithmes de minimisation vu à la Section~\ref{sec:background-opti-sgd} pour résoudre le probleme suivant :
\begin{equation*}
    \text{min}_{\theta\in\Theta}c(\theta)
\end{equation*}
En pratique la quantité $c(\theta)$ est évalué avec la loi des grands nombres~\cite{proba}.

Très souvent l'algorithme d'optimisation utilisé est la déscente de gradient stochastique (SGD)\footnote{\textit{Stochastic gradient descent}}~\cite{amari1993back}, c'est une vérsion modifié de la descente de gradient adapté au réseaux de neurones qui permet d'accelerer la convergence~\cite{bottou2012stochastic} et d'éviter les minima locaux~\cite{bottou1991stochastic}.
Cette algorithmes évalue l'espérence empirique de $C(\theta)$ sur chaque élément, appelé \textit{mini batch}, d'une partition des données d'entrainement.

\subsection{Evaluer un modèle}
    Nous appelerons ici évaluation d'un modèle le calcule des metriques qui permettent de juger de son utilité.
    Ces métrique varient en fonction du type de modèle et du contexte dans lequel il est utilisé.
    Par exemple il est souhaitable qu'un modèle qui permette de prédir l'absence ou la présence d'une maladie ai un faible taux de faux négatifs.
    Cela permet d'éviter de penser à tords qu'une patient n'est pas malade ce qui pourrai entraîner un retard dans sa prise en charge.

    \subsubsection{Classification}
    \label{sec:backgroung-ml-classif}
    Les modèles de classification visent à attribuer à chaque point des données ébalué une classe parmis un ensemble fini.
    Par exemple, dans le cadre de la justice prédictive, inférer pour chaque coupable si il sera recidivise ou non~\cite{zhiyuan2020limits}.
    Quand il y a deux classes, comme dans l'exemple précédent avec \emph{récidivisite} ou \emph{non-récidiviste}, nous dirons que le modèle effectue un classification binaire.
    Ce cas est très présent en apprentissage automatique~\cite{li2020statistical, kumari2017machine} ainsi il existe beaucoup d'outils qui permettent d'evaluer ce genre de classifieur~\cite{canbek2022ptopi}.

        Nous modélisons le modèle que nous souhaite évaluer par une fonction $f:E\rightarrow \{0,1\}$
        C'est-à-dire que le modèle prend une donnée d'entrée dans $E$, cela peut être une image ou une ligne d'un tableau, et lui attribut soit la classe $0$ soit la classe $1$.
        Nous dirons que $0$ est un résultat négatif et $1$ un résultat positif.

        Pour évaluer correctement le modèle, nous devons prendre en compte la répartition dé données dans $E$.
        Nous modélisons cette repartition par les lois de probabilités de deux variables aléatoires :
        \begin{itemize}
        \item $X:\Omega\rightarrow \mathcal{X}$
        \item $Y:\Omega\rightarrow \{0,1\}$
        \end{itemize}
        $(\Omega,\mathcal{T},P)$ est un espace probabilisé.
        Il n'est pas necessaire que nous définission de manière plus précise cet espace car nous ne nous interessons qu'aux mesure images de $X$ et $Y$ par $P$.
        Nous pouvons, de la même manière définire une variable aléatoire pour la sortie du modèle : $\hat{Y} = f\circ X$.

        Grace à ces objets, nous allons définir des qunatités qui décrivent l'utilitée du modèle.
        La première est 
        l'\textit{accuracy}, c'est la prababilté que le classifieur prédise la bonne classe. Nous la définissons par $P(\hat{Y}=Y)$.
        Cette définission, bien que très intuitive, souffre qu'elle est sensible au désequillibre de classe~\footnote{\textit{Class imablance}}.
        Considérons l'exemple suivant : imaginons un modèle depployé en 1982 qui chercheraià prédire si un employé cadre est une femme ou un homme.
        Supposons que ce modèle ai une \textit{accuracy} de $79\%$, c'est-à-dire que le modèle prédit justement le genre huit fois sur dix, nous dirons certainement que ce modèle est performant ?
        Voici donc un modèle qui atteint cette performance :
        \begin{equation}
        f:
        \left\{
        \begin{matrix}
        \mathcal{X}\rightarrow \{\text{homme},\text{femme}\}\\
        x\mapsto \text{homme}
        \end{matrix}
        \right.
        \end{equation}

        C'est-à-dire un modèle qui prédise toujours homme.
        Calculons son \textit{accuracy}, pour plus lisibilité nons encodons homme par $0$ et femme par $1$.
        Comme le modèle prédit toujours homme, $P(\hat{Y}=0)=1$ et $P(\hat{Y}=1)=0$.
        \begin{align}
        &P(\hat{Y}=Y)\nonumber\\
        &\text{Par la formule des probabilités totale}\nonumber\\
            =&P(\hat{Y}=0|Y=0)P(Y=0) + P(\hat{Y}=1|Y=1)P(Y=1)\label{eq:background-ml-ac}\\
            =&1\cdot P(Y=0) + 0\cdot P(Y=1) = P(Y=0)\nonumber
        \end{align}

        Or, en 1982 il y avait uniquement $21\%$ des cadres qui était des femmes~\cite{insee1982parite}, ansi $P(Y=0)=0,79$ et $P(Y=1)=0,21$.
        Nous avons donc bien une accuracy de $79\%$ bien que le modèle n'ai aucune utilité pratique !

        Ainsi l'accuracy est significative uniquement quand $Y$ suit une loi uniforme.
        Nous définisson donc une autre métrique : la \textit{balanced accuracy}.
        Pour cela nous repartons de l'Equation~\ref{eq:background-ml-ac} et remplacons $P(Y=0)$ et $P(Y=1)$ par $\frac{1}{2}$.
        Ainsi la \textit{balanced accuracy} est la moyenne et $P(\hat{Y}=0|Y=0)$ et de $P(\hat{Y}=1|Y=1)$.
        C'est-à-dire que nous regardons pour chaque classes séparément (homme ou femme notre exemple) la probabilité qu'on point soit bien classifié.
        Ainsi, en calculant la \textit{balanced accuracy} avec l'exemple précedent nous obtenons $\frac{1+0}{2}=0,5$.
        Ce résultat montre bien que le modèle n'a pas d'utilité.

        \paragraph{La courbe \textit{Receiver Operating Characteristic} (ROC)}
        Un grand nombre d'algorithme d'apprantissange automatiqeu pour la classification binaire optimise les paramètres d'un e fonctions à valeurs dans $[0,1]$ (ou dans un ensemble un bijection avec $[0,1]$).
        C'est le cas par exemple des résaux de neuronnes avec un unique neurones dans la couche finale, de la regression logistique, de la forêt aléatoire, etc.
        Nous appelons cette étape intermédiaire dans la classification, logit ou \textit{soft label}.
        La classification ce fait grace un seuil sur ce logit.
        C'est à dire que si on apelle $g(x)$ le logit de $x$, le modèle de classification peut se décomposer par : $f_\uptau = 1_{[\uptau,1]}\circ g$.

    Ainsi si nous calculons l'\textit{accuracy}, la \textit{balance accuracy} ou tout autre metrique que nous avons présenté précédament elle dépendra du seuil ($\uptau$).
    Pour palier cela nous regarons la ROC : une courbe parametrique qui au seuil associe le tau de faux positif (FPR)\footnote{\textit{False positive rate}} et le tau de vrai positif (TPR)\footnote{\textit{True positive rate}}.
    Nous definisson ces quantité comme suit :
    \begin{itemize}
        \item $\text{fpr}(\uptau) = P(f_\uptau\circ X=1\mid Y=0)$
        \item $\text{tpr}(\uptau) = P(f_\uptau\circ X=1\mid Y=1)$
    \end{itemize}
    \begin{equation*}
        \text{roc}:\left\{
            \begin{matrix}
                [0,1]\rightarrow [0,1]\times[0,1]\\
                \uptau\mapsto (\text{fpr}(\uptau),\text{tpr}(\uptau))
            \end{matrix}
        \right.
    \end{equation*}

    \begin{figure}
        \centering
        \begin{subfigure}{0.3\linewidth}
            \centering
            \includegraphics[width=\linewidth]{background/figure/ml/roc.pdf}
            \caption{ROC d'une foret aléatoire sur un problème scolaire ($\textit{AUC}\approx 0,8$).}
        \end{subfigure}
        \begin{subfigure}{0.3\linewidth}
            \centering
            \includegraphics[width=\linewidth]{background/figure/ml/roc_perfect.pdf}
            \caption{ROC parfaite ($\textit{AUC}=1$).}
        \end{subfigure}
        \begin{subfigure}{0.3\linewidth}
            \centering
            \includegraphics[width=\linewidth]{background/figure/ml/roc_random.pdf}
            \caption{ROC \textit{random guess} ($\textit{AUC}=\frac{1}{2}$).}
        \end{subfigure}
        \caption{La courbe ROC.}
        \label{fig:background-ml-roc}
    \end{figure}

    La courbe ROC montre que le seuil permet d'ajusté le compromis entre faux positif et vrai positif, en pratique ce compromis dépend de l'application.
    En effet, comme nous le voyons sur la Figure~\ref{fig:background-ml-roc}, si le seuil vaut $\uptau=0$, tous les points sont classifier positivement par le modèlé. 
    Ainsi le taux de faux positif et maximal et vaux $1$.
    Dans le cas totalement opposé de $\uptau=1$ aucun point n'est classifier comme positif et donc il n'y a pas de faux positif mais il n'y a pas non plus de vrai positif.
    Il s'agit donc de trouver un équilibre entre ces deux extrèmes.

    Il peut être utile, pour comparer plusieur classifieur de résumer la ROC en une seule valuer.
    Pour cela nous utilise l'aire sous la courbe ROC, appele AUC~\footnote{\textit{Area Under the Curve}}.
    Comme nous le voyons sur la Figure~\ref{fig:background-ml-roc}, un classifieur qui malgré l'ajustement de son seuil reste un CCA a une AUC de $0,5$. 
    Alors qu'un classifieur parfat, c'est-à dire pour lequel il exist un seuil qui produite un taux de faux positif nul et un tau de vrai positif égale à 1, a une AUC de $1$.

    \subsubsection{Regression}
    La régression est un autre type de modèle qui cherche non pas à ranger une donnée dans une classe mais plutot à prédire un grandeur.
    Par exemple prédire la masse d'une personne à partir de sa taille.
    Nous avons vu dans la section précédente que certain modèle de classification utilise une étape intermédiaire de calcul de logit.
    Le calul de logit est une forme de regression car il s'agit de prédit une grandeur et non pas de choisir une classe.
    Pour mieux comprendre le lien entre ces deux type de modèle nous pouvons obsever l'exemple de la regression logistique.
    \begin{figure}
        \centering
        \begin{subfigure}{0.3\linewidth}
            \centering
            \includegraphics[width=\linewidth]{background/figure/ml/logit/logit0.3.pdf}
            \caption{$\uptau=0,3$}
        \end{subfigure}
        \begin{subfigure}{0.3\linewidth}
            \centering
            \includegraphics[width=\linewidth]{background/figure/ml/logit/logit0.5.pdf}
            \caption{$\uptau=0,5$}
        \end{subfigure}
        \begin{subfigure}{0.3\linewidth}
            \centering
            \includegraphics[width=\linewidth]{background/figure/ml/logit/logit0.7.pdf}
            \caption{$\uptau=0,7$}
        \end{subfigure}
        \begin{subfigure}{0.6\linewidth}
            \centering
            \includegraphics[width=\linewidth]{background/figure/ml/logit/metric.pdf}
            \caption{Metriques de classifications en fonction du seuil.}
            \label{subfig:background-ml-logit-d}
        \end{subfigure}
        \caption{Exemple de relation entre regression (logit) et prédiction.}
        \label{fig:background-ml-logit}
    \end{figure}

    Dans la Figure~\ref{fig:background-ml-logit} nous avons l'exemple d'une regression logistique qui nous donne la coubre logit dans les trois premières sous-figures.
    Le seuil est représente par le changement de couleur tandis que les étiquettes sont réprésenté par la position sur l'axe de ordonée des points.
    Nous observons que changer la seuil permet d'influencer sur les différentes métriques que nous avons présenté en Section~\ref{sec:backgroung-ml-classif}.
    Le choix d'un seuil approrié est donc dépendant de l'application. 
    Comme nous pouvons de le voir sur la Sous-figure~\ref{subfig:background-ml-logit-d}, seuil proche de $1$ permet de grandement réduire le FPR mais réduit les autres métriques.
    Le choix d'un seuil est aussi particulièrement important quand les données présentent un désequilibre, c'est-à-dire qu'une classe et majoritaire par rapport à une autre~\cite{zou2016finding}.
    Dans la Figure~\ref{fig:background-ml-logit} il y $28\%$ de points positif représenté en rouge.
    Cela explique la différence entre \textit{accuracy} et \textit{balanced accuracy} à seuil égale.


\subsection{Apprentissage profond}
Pour le moment nous avons évoqué trois types de modèle, la forêt aléatoire, la regression logistique et les réseaux de neuronnes sans vraiment les présenter.
Nous allons nous contenter de présenter en détail les réseaux de neuronnes car cela nous sera utile pour les Chapitres~\ref{sec:aia} et~\ref{sec:synth}.

\subsubsection{Réseau de neurones}
En apprentissage profond, l'expréssion explicite qui lie entrée, paramètre et sortie (que nous avons appelé $f(x,\theta)$ à la Section~\ref{sec:background-ml-train}) est appelé l'architecture du réseau de nerones.
Dans cette section nous allons présenter quelques architectures calssiques.
Pour en savoir plus à ce sujet et sur l'apprentissage automatiqeu en générale, nottamant pour avoir plus de détails sur l'entraînement, nous renvoyons le lecteur au livre de Yann Le Cun, \textit{Quand la machine apprend}~\cite{lecun2019quand}.

Un réseau de neuronnes est composé de plusieur couches successives qui on chacune des paramètre.
En d'autre termes un modèle 
\begin{equation*}
    f:\left\{
        \begin{matrix}
            E\times \Theta\rightarrow \mathbb{R}^n\\
            (x,\theta)\mapsto f(x,\theta)
        \end{matrix}
    \right.
\end{equation*}
peut se décomposer comme une composition de modèle intermédiaires.
Par exemple un modèle à $m$ couches peut s'ecrir :
\begin{equation*}
    f(\Box,\theta) = f_{m-1}(\Box,\theta_{m-1})\circ\cdots\circ
    f_{0}(\Box,\theta_0)
\end{equation*}
Nous utiliserons deux types de couches : les couches entièrement connectée et les couches de convolution.

Une couche entièrement connectée est elle même composé d'une multiplication matriciele, une addition à un vecteur et une fonctions d'activation.
Considérons une couche intermédiare de $\mathbb{R}^o$ dans $\mathbb{R}^p$
Nous diraons que cette couche a $p$ neurones.
Nous utiliserons toujours la même fonction d'avivation : \textit{Rectified Linear} (ReLu).
Cette fonction est définie de la manière suivante : 
\begin{equation*}
    \textit{ReLu}:\left\{
        \begin{matrix}
            \mathbb{R}^n\rightarrow\left(\mathbb{R}^+\right)^n\\
            x\mapsto \left(
            \begin{matrix}
                1_{\mathbb{R}^+}(x_0)x_0\\
            \vdots\\
                1_{\mathbb{R}^+}(x_{n-1})x_{n-1}\\
            \end{matrix}
            \right)
        \end{matrix}
    \right.
\end{equation*}
Nous remarquons que cette fonction n'as pas de paramètre à opitmiser, son but et d'éviter que l'architecture gloable soit une fonction afine.

La parite linéaire de la couche est paramétré par les coéficient de la matrie de l'application linéaire. 
Cette fonction $l$ admet donc comme expression $l(x)=Mx$ avec $M\in\mathcal{M}_{p,o}$

Enfin la partie additive est appellée biais et s'écrit $B(x) = x+b$ avec $b\in\mathbb{R}^p$.
Ainsi la $i$-ième couche s'écrit :
\begin{equation*}
    f_i(\Box,(M,b)) : \left\{
        \begin{matrix}
            \mathbb{R}^o\rightarrow\mathbb{R}^p\\
            x\mapsto\text{ReLu}(Mx+b)
        \end{matrix}
    \right.
\end{equation*}

Regardon maintenant les couches de convolutions.
L'idée de la convolution est d'extraire des représentations\footnote{\textit{Features extraction}}.

\begin{equation}
    f_i(x,\theta_i) = \left\{
        \begin{matrix}
            \mathbb{N}^\mathbb{}\rightarrow\mathbb{N}^\mathbb{N}\\
            u\mapsto\int_{\mathbb{N}}x(u\bowtie t)\theta(\#J\bowtie t)d\sum_{j\in\mathbb{N}}\delta_j(t)
        \end{matrix}
    \right.
\end{equation}




\subsubsection{Modèle generatif}
\label{sec:background-generation}

Une generateur est un fonction qui prend un entrée en jeu de données réel et renvoi un jeu de donnée sythetique.
Cette définition est suffisament générale pour que l'identitée soit un générateur.
Nous dirons que la sortie du generateur identité sont des données réels et nous appellerons donnée synthetique la sortie de n'importe quel autre générateur.

En plus du générateur identitée nous utiliserons des réseaux de neuronnes adversariels generatifs~\footnote{\textit{Genertaiv Adversarial Network}} (GAN)~\cite{gan}.
Le but d'un GAN est de générer des échantillons réalisation étant donné une loi de probabilité.
Pour arriver à cela, un GAN utilise deux réseaux de neuronnes : un générateur et un discriminateur.
Le domaine du générateur est de petit dimension relativement à son codomaine.
La dimension du codomaine est la même que celle des données que l'on souhaite générer.
Par exemple pour générer de images de taille 64 par 64, le codomaine est $\mathbb{R}_{64,64}$.
Pour générer une donnée, nous évaluons le générateur sur un point generer à partir d'une loi normale multidimensionelle.
La sortie de générateur est la nouvelle donnée généré.

Le discriminateur est utilisé uniquement lors de l'entraînement du GAN et à a pour but de s'assurer que le générateur produise des données réalistes.
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 et réel.
Ainsi, dans la procédure d'entraînement, le discriminateur et el 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éel.
