n dimension à l’entrée
k dimensions à la sortie
Exemple de
1 dimension à l’entrée
1 dimension à la sortie
Exemple de
2 dimensions à l’entrée
1 dimension à la sortie
Fully-connected feedward networks avec apprentissage supervisé
FC (fully-connected)
ANN (artificial neural network)
Aprentissage supervisé (supervised learning)
Objectif : reconstruire une fonction
\(f(X) = y\)
Nous dispons des données d’entrainement étiquété (labeled training data). Pour plusieurs exemples de \(X\), nous connaissons donc les sorties \(y\).
Classification (étiquetage) ou régression (prédiction de résultats)
Etape d’apprentissage : il faut trouver les poids et les biais (par rétropropagation (backpropagation) et des variantes de gradient descent)
Etape de prédiction : on utilise les étape poids et biais appris pour faire des prédictions
apprentissage supervisé (supervised learning) : les données et les sorties sont connues
apprentissage non-supervisé (unsupervised learning): les données sont connues mais pas les sorties, par contre on dispose d’une mesure de similarité qui va permettre de regrouper des données proches
apprentissage auto-supervisé (self-supervised learning) : utilise les données d’entrée elles-mêmes, au lieu de se fier aux étiquettes éxternes
par renforcement : les données et un signal soit au cours du traitement, soit à la fin (Q-Learning, R-Learning, TD-learning)

CIFAR-10 : jeu de données pour la reconnaissance d’images, largement utilisé pour la recherche en apprentissage automatique :
Données :
Dans ce cours, nous allons travailler sur des réseaux de neurones classiques, qui sont
fully connected (FCNN - fully connected neural networks),
non bouclés (feed forward net),
avec apprentissage supervisé (supervised learning).
classification : l’objectif sera de reconstruire une fonction \(f: R^2 \rightarrow [0,1]\) à partir des échantillons :
\[ f(X) = y \]
Les données d’entrée \(X\) vivent donc l’espace 2D, et la sortie \(y\) est binaire (donc dans l’espace 1D).
Voici un exemple : les données d’entrée 2D sont caractérisés par des points, et la sortie correspondante est la couleur, ici bleu pour 1, et orange pour 0. Ici, il y a 500 données étiquettées (labeled data).
Vous pouvez donc identifier deux exemples (entourés en noir) correspondant aux exemples de la fonction à reconstruire suivant :
\[ f(0.38, 2) = 1 \] \[ f(-3.63, -2.28) = 0 \]
Nous allons maintenant construire un exemple de réseaux de neurones représentant cette fonction de \(f: R^2 \rightarrow [0,1]\).
Voici une illustration :
Voici les characteristics de ce réseaux de neurones:
Ce réseau prend donc en entrée les coordonnées X = {\(x_1\), \(x_2\)}, et produit une seule sortie. Les couches cachées contiennent 4 et 2 neurones, et la couche de sortie un seul neurone. Les flèches correspondent aux poids \(w_i\).
Chaque neurone est modélisé selon le modèle de perceptron :
Sa sortie \(y\) est calculé en appliquant une fonction d’activation \(\varphi\) à la somme des entrées \(x_i\) pondérés par les poids \(w_i\) et son biais \(b\), donc :
\(y= \varphi(\left(\sum_{i=1}^{n} w_{i}x_{i}+b\right)\)
avec donc
Les poids \(w_i\) pour \(i \in [1,n]\) et les biais \(b\) sont appelés paramètres. Chaque neurone des couches cachées et de la couche de sortie a donc \(n+1\) paramètres, avec \(n\) le nombre d’entrées de chaque neurone.
C’est ces paramètres qu’il s’agit à déterminer pendant la phase d’entraînement, on dit aussi que le réseau les “apprend” !


Quant aux fonctions d’activations pour ce réseau de neurones, il y a plusieurs possibilités :
Par exemple, nous pouvons choisir la fonction d’activation \(tanh\) pour les neurones dans la couche cachée, et la fonction \(sigmoid\) pour le neurone de la couche de sortie.

avec une fonction d’activation linéaire \(\varphi{x}=x\), c’est simplement une combinaison linéaire, et la couche de sortie n’apporte rien
avec une fonction d’activation non-linéaire, la couche cachée prend tous son sens
l’architecture du réseaux de neurones, donc la structure globale du réseau (le nombre de couches, le nombre de neurones par couche), et la fonction d’activation.
les hyperparamètres sont des réglages utilisés pour optimiser l’entraînement du réseau, influençant sa performance sans modifier la structure. Ici, vous voyez
Pour évaluer la performance d’un réseau de neurones en classification, on utilise principalement deux mesures :
Précision (accuracy) : proportion de prédictions correctes parmi toutes les prédictions effectuées. Elle évalue l’efficacité globale du modèle, mais ne donne pas d’indication sur les erreurs spécifiques.
Perte (loss) : quantifie l’écart entre les prédictions du modèle et les valeurs réelles, guidant ainsi l’optimisation du modèle. En classification, les fonctions de perte courantes sont :
\[ CE = -\sum_{i}^{C}y_{i} log (p_{i}) \]
La formule pour la binary cross-entropy peut être dérivé de la fonction pour la Categorical cross-entropy, en mettant le nombre de classes \(C=2\)/
\[ BCE loss = -\sum_{i=1}^{C'=2}y_{i} log (y_{i}) = -y_{1} log(y_{1}) - (1 - y_{1}) log(1 - p_{1}) \]
La binary cross-entropy est une fonction de perte souvent utilisée pour les tâches de classification binaire, car elle mesure l’écart entre les prédictions et les étiquettes en se basant sur les probabilités.
La fonction de perte est définie comme :
\[ BCE loss = \frac{1}{N} \sum_{i=1}^{N} -(y_i * \log(p_i) + (1-y_i) * \log(1-p_i)) \]
avec :
Chaque terme dans la somme pèse l’erreur en fonction de la probabilité prédite, optimisant ainsi le modèle pour des prédictions proches des valeurs attendues.
Exemple pour 5 données étiquettées :
| i | x1_i | x2_i | y_i | prediction p_i = f(x1,x2) | y_i * p_i | (1 - y_i) * (1 - p_i) | prediction p_i corrigée | log(p_i corrigée) | predicted class c_i | bonne classe : c_i = y_i ? 1 : 0 |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1.99 | -1.35 | 1 | 0.94 | 0.94 | 0 | 0.94 | -0.026872 | 1 | 1 |
| 1 | 3.68 | 2.21 | 0 | 0.2 | 0 | 0.8 | 0.8 | -0.096910 | 0 | 1 |
| 2 | 1.47 | 0.30 | 1 | 0.99 | 0.99 | 0 | 0.99 | -0.004364 | 1 | 1 |
| 3 | 1.90 | 3.95 | 0 | 0.6 | 0 | 0.4 | 0.4 | -0.39794 | 1 | 0 |
| 4 | 1.24 | 0.64 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 |
Ici, pour \(N=5\) données étiquetées, la fonction a prédit 4 fois la bonne classe, et elle a prédit 1 fois la mauvaise classe (pour i=3). La accuracy est donc 0.8.
Quant au loss avec binary cross-entropy, on peut le calculer avec :
\[ BCE loss = \frac{1}{N} \sum_{i=1}^{N} -(y_i * \log(p_i) + (1-y_i) * \log(1-p_i)) \]
C’est équivalent à la négation de la moyenne des \(log(p_i \text{ corrigée})\) :
\[ loss = -\frac{1}{N} \sum_{i=1}^{N} \log(p_i \text{ corrigée}) \]
Ici, cela donne :
\[ loss = -\frac{-0,026872 + -0,096910 + -0,004364 + -0,397940 + 0}{5} = 0,105 \]

Patrick Reuter - http://www.labri.fr/perso/preuter/dl2025