Cours 2 - Apprentissage supervisé : FCNN

1 NN

  • n dimension à l’entrée

  • k dimensions à la sortie

2 Motivation : dimensions d’entrée et sortie

Exemple de

  • 1 dimension à l’entrée

  • 1 dimension à la sortie

3 Motivation : dimensions d’entrée et sortie

Exemple de

  • 2 dimensions à l’entrée

  • 1 dimension à la sortie

4 FCNN architecture

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)

5 Cycle de vie de l’apprentissage profond

  • collecter les données
  • survoler les données
  • préparation des données (nettoyage, transformations, etc.)
  • séparer les données (base d’entraînement et base de test)
  • choisir et entrainer différents modèles
  • évaluation des modèles
  • fine tuning
  • évaluation sur la base de test
  • mettre en production : faire les prédictions
  • maintenance du modèle

6 Cycle de vie de l’apprentissage profond

7 Deux étapes clées

  • 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

8 Apprentissage superivsé

  • 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)

9 Un exemple concret : Reconnaissance d’images sur CIFAR-10 (1)

Source : https://www.cs.toronto.edu/~kriz/cifar.html

CIFAR-10 : jeu de données pour la reconnaissance d’images, largement utilisé pour la recherche en apprentissage automatique :

Données :

  • 60 000 images, 10 classes d’objets, répartition égale (6000 images par classe classe)
  • en couleur, très basse résolutioon (32x32 pixels)

10 Autre exemple : Tensorflow-playground

Tensorflow Playground

11 Introduction : réseaux de neurones FCNN à propagation avant

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).

12 Exemple de données

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 \]

13 Exemple de modèle

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:

  • Entrée : \(R^2\)
  • Sortie : \(R^1\)
  • Deux couches cachées (une avec 4 neurones, et une avec 2 neurones)
  • feed forward net (non-bouclés)
  • fully connected (FCNN - fully connected neural networks)
  • Apprentissage supervisé (supervised learning).

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\).

14 Perceptron

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

  • \(x_i\) : les entrées
  • \(y\) : la sortie
  • \(n\) : le nombre d’entrées
  • \(w_i\) : les poids associés à chaque entrée \(x_i\) .
  • \(b\) : le biais.
  • \(\varphi\) : la fonction d’activation.

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” !

15 Différentes illustrations :

16 Fonctions d’activations

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.

17 Propagation avant

  • 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

18 Architecture et hyperparamètres

  • 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

    • le taux d’apprentissage (learning rate),
    • Le nombre d’époques d’entraînement, donc le nombre de fois que le réseau “voit” les données d’entraînement,
    • La taille du batch, donc le nombre de données d’entrée à partir duquel les poids sont ajustés (par rétropropagation)
    • le type d’algorithme d’optimisation (par ex. Adam, SGD) et le taux de régularisation (par ex. L2 ou dropout) - on ne les manipulera pas dans ce TD

19 Gradient descent

20 Gradient descent

21 Fonctions de perte (loss functions)

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 :

    • categorical cross-entropy lorsqu’on a plus que deux classes,
    • binary cross-entropy lorsque la classification est pour deux classes.

22 Fonctions de perte : Categorical cross-entropy

\[ CE = -\sum_{i}^{C}y_{i} log (p_{i}) \]

  • \(N\) : le nombre de données étiquetées
  • \(y_i\) : la sortie attendue (l’étiquette ou label), soit 0 ou 1
  • \(p_i\) : la probabilité prédite pour que \(y_i = 1\), soit \(f(X_i)\), calculée par le modèle

23 Fonctions de perte : Categorical cross-entropy et binary cross-entropy

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}) \]

24 Fonctions de perte : binary cross-entropy

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 :

  • \(N\) : le nombre de données étiquetées
  • \(y_i\) : la sortie attendue (l’étiquette ou label), soit 0 ou 1
  • \(p_i\) : la probabilité prédite pour que \(y_i = 1\), soit \(f(X_i)\), calculée par le modèle

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.

25 Fonctions de perte : binary cross-entropy

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 \]