Entraîner un réseau de neurones artificiels (partie 2)

CSI 4106 - Automne 2024

Marcel Turcotte

Version: oct. 23, 2024 15h00

Préambule

Citation du Jour

Objectifs d’apprentissage

  • Décrire le fonctionnement d’une couche softmax.
  • Expliquer le concept de perte d’entropie croisée.
  • Appliquer des techniques de régularisation pour améliorer la généralisation des réseaux neuronaux.

Résumé

  • L’apprentissage profond est une branche de l’apprentissage automatique.
  • Utilise des réseaux de neurones organisés en couches.
  • Chaque unité calcule une somme pondérée (produit scalaire) des entrées, ajoute un biais, puis applique une fonction d’activation pour produire sa sortie.
  • Un réseau monocouche suffisamment grand peut approximer toute fonction continue.

Rétropropagation : aperçu général

  1. Initialisation

  2. Passe avant

  3. Calcul de la perte

  4. Passe arrière (Rétropropagation)

  5. Répéter les étapes 2 à 5.

Couche de sortie

Couche de sortie : tâche de régression

  • # de neurones de sortie :
    • 1 par dimension
  • Fonction d’activation de la couche de sortie :
    • Aucune, ReLU/softplus si positif, sigmoid/tanh si borné
  • Fonction de perte :

Couche de sortie : tâche de classification

  • # de neurones de sortie :
    • 1 si binaire, 1 par classe si multiclasse ou multilabel.
  • Fonction d’activation de la couche de sortie :
    • sigmoid si binaire ou multilabel, softmax si multiclasses.
  • Fonction de perte :
    • entropie croisée

Softmax

Softmax

La fonction softmax est une fonction d’activation utilisée dans les problèmes de classification multiclasses pour convertir un vecteur de scores bruts en probabilités qui totalisent 1.

Étant donné un vecteur \(\mathbf{z} = [z_1, z_2, \ldots, z_n]\) :

\[ \sigma(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^{n} e^{z_j}} \]

\(\sigma(\mathbf{z})_i\) est la probabilité de la classe \(i\), et \(n\) est le nombre de classes.

Softmax

\(z_1\) \(z_2\) \(z_3\) \(\sigma(z_1)\) \(\sigma(z_2)\) \(\sigma(z_3)\) \(\sum\)
1.47 -0.39 0.22 0.69 0.11 0.20 1.00
5.00 6.00 4.00 0.24 0.67 0.09 1.00
0.90 0.80 1.10 0.32 0.29 0.39 1.00
-2.00 2.00 -3.00 0.02 0.98 0.01 1.00

Softmax

Fonction de perte d’entropie croisée

L’entropie croisée dans une tâche de classification multiclasses pour un exemple :

\[ J(W) = -\sum_{k=1}^{K} y_k \log(\hat{y}_k) \]

Où :

  • \(K\) est le nombre de classes.
  • \(y_k\) est la distribution réelle pour la classe \(k\).
  • \(\hat{y}_k\) est la probabilité prédite de la classe \(k\) par le modèle.

Fonction de perte d’entropie croisée

  • Problème de classification : 3 classes
    • Versicolour, Setosa, Virginica.
  • Encodage one-hot :
    • Setosa = \([0, 1, 0]\).
  • Sorties Softmax & Perte :
    • \([0.22,\mathbf{0.7}, 0.08]\) : Perte = \(-\log(0.7) = 0.3567\).
    • \([0.7, \mathbf{0.22}, 0.08]\) : Perte = \(-\log(0.22) = 1.5141\).
    • \([0.7, \mathbf{0.08}, 0.22]\) : Perte = \(-\log(0.08) = 2.5257\).

Cas : un exemple

Cas : ensemble de données

Pour un ensemble de données avec \(N\) exemples, la perte moyenne d’entropie croisée sur tous les exemples est calculée comme suit :

\[ L = -\frac{1}{N} \sum_{i=1}^{N} \sum_{k=1}^{K} y_{i,k} \log(\hat{y}_{i,k}) \]

Où :

  • \(i\) est l’index des exemples dans l’ensemble de données.
  • \(y_{i,k}\) et \(\hat{y}_{i,k}\) sont respectivement les valeurs réelles et les probabilités prédites pour la classe \(k\) de l’exemple \(i\).

Régularisation

Définition

La régularisation regroupe un ensemble de techniques visant à améliorer la capacité de généralisation d’un modèle en atténuant le surapprentissage. En décourageant une complexité excessive du modèle, ces méthodes améliorent la robustesse et la performance du modèle sur des données non vues.

Ajout de termes de pénalité à la perte

  • En optimisation numérique, il est courant d’ajouter des termes supplémentaires à la fonction objectif afin de dissuader certaines caractéristiques indésirables du modèle.

  • Pour un problème de minimisation, le processus d’optimisation vise à éviter des coûts élevés associés à ces termes de pénalité.

Fonction de perte

Prenons la fonction de perte de l’erreur absolue moyenne :

\[ \mathrm{MAE}(X,W) = \frac{1}{N} \sum_{i=1}^{N} | h_W(x_i) - y_i | \]

Où :

  • \(W\) sont les poids de notre réseau.
  • \(h_W(x_i)\) est la sortie du réseau pour l’exemple \(i\).
  • \(y_i\) est la vraie étiquette pour l’exemple \(i\).

Terme(s) de pénalité

Un ou plusieurs termes peuvent être ajoutés à la perte :

\[ \mathrm{MAE}(X,W) = \frac{1}{N} \sum_{i=1}^{N} | h_W(x_i) - y_i | + \mathrm{pénalité} \]

Norme

Une norme assigne une longueur non négative à un vecteur.

La norme \(\ell_p\) d’un vecteur \(\mathbf{z} = [z_1, z_2, \ldots, z_n]\) est définie comme suit :

\[ \|\mathbf{z}\|_p = \left( \sum_{i=1}^{n} |z_i|^p \right)^{1/p} \]

Normes \(\ell_1\) et \(\ell_2\)

La norme \(\ell_1\) (norme de Manhattan) est :

\[ \|\mathbf{z}\|_1 = \sum_{i=1}^{n} |z_i| \]

La norme \(\ell_2\) (norme euclidienne) est :

\[ \|\mathbf{z}\|_2 = \sqrt{\sum_{i=1}^{n} z_i^2} \]

Régularisation \(l_1\) et \(l_2\)

Ci-dessous, \(\alpha\) et \(\beta\) déterminent le degré de régularisation appliqué ; fixer ces valeurs à zéro désactive effectivement le terme de régularisation.

\[ \mathrm{MAE}(X,W) = \frac{1}{N} \sum_{i=1}^{N} | h_W(x_i) - y_i | + \alpha \ell_1 + \beta \ell_2 \]

Recommandations

  • Régularisation \(\ell_1\) :
    • Encourage la parcimonie, mettant à zéro beaucoup de poids.
    • Utile pour la sélection d’attributs en réduisant la dépendance à certains attributs.
  • Régularisation \(\ell_2\) :
    • Encourage des poids petits et répartis pour la stabilité.
    • Idéal lorsque toutes les attributs contribuent et que la réduction de la complexité est primordiale.

Exemple Keras

import tensorflow as tf
from tensorflow.python.keras.layers import Dense

regularizer = tf.keras.regularizers.l2(0.001)

dense = Dense(50, kernel_regularizer=regularizer)

Dropout

Le dropout est une technique de régularisation dans les réseaux neuronaux où des neurones sélectionnés aléatoirement sont ignorés pendant l’entraînement, réduisant ainsi le surapprentissage en empêchant la co-adaptation des attributs.

Dropout

  • Lors de chaque étape d’entraînement, chaque neurone dans une couche de dropout a une probabilité \(p\) d’être exclu du calcul, des valeurs typiques de \(p\) allant de 10 % à 50 %.

  • Bien que cela puisse sembler contre-intuitif, cette approche empêche le réseau de dépendre de neurones spécifiques, favorisant ainsi la distribution des représentations apprises sur plusieurs neurones.

Dropout

  • Le dropout est l’une des méthodes de régularisation les plus populaires et les plus efficaces pour réduire le surapprentissage.

  • L’amélioration typique des performances est modeste, généralement autour de 1 à 2 %.

Keras

import keras
from keras.models import Sequential
from keras.layers import InputLayer, Dropout, Flatten, Dense

model = tf.keras.Sequential([
    InputLayer(shape=[28, 28]),
    Flatten(),
    Dropout(rate=0.2),
    Dense(300, activation="relu"),
    Dropout(rate=0.2),
    Dense(100, activation="relu"),
    Dropout(rate=0.2),
    Dense(10, activation="softmax")
])

Définition

L’arrêt anticipé (early stopping) est une technique de régularisation qui interrompt l’entraînement dès que la performance du modèle sur un ensemble de validation commence à se dégrader, empêchant ainsi le surapprentissage en s’arrêtant avant que le modèle n’apprenne le bruit.

Early Stopping

Prologue

Résumé

  • Réseaux neuronaux artificiels (ANNs) :
    • Inspirés des réseaux neuronaux biologiques.
    • Composés de neurones interconnectés organisés en couches.
    • Applicables à l’apprentissage supervisé, non supervisé, et par renforcement.
  • Réseaux neuronaux à propagation directe (FNNs) :
    • L’information circule unidirectionnellement de l’entrée à la sortie.
    • Composés de couches d’entrée, cachées et de sortie.
    • Le nombre de couches et de neurones par couche peut varier.
  • Fonctions d’activation :
    • Introduisent de la non-linéarité pour permettre l’apprentissage de modèles complexes.
    • Fonctions courantes : Sigmoid, Tanh, ReLU, Leaky ReLU.
    • Le choix de la fonction d’activation affecte le flux de gradient et les performances du réseau.
  • Théorème de l’approximation universelle :
    • Un réseau neuronal avec une seule couche cachée peut approximer toute fonction continue.
  • Algorithme de rétropropagation :
    • L’entraînement implique une passe avant, un calcul de perte, une passe arrière et une mise à jour des poids.
    • Utilise la descente de gradient pour minimiser la fonction de perte.
    • Permet l’entraînement des perceptrons multicouches en ajustant les poids internes.
  • Problème du gradient qui disparaît :
    • Les gradients deviennent trop petits lors de la rétropropagation, ce qui freine l’entraînement.
    • Stratégies de mitigation : utilisation de fonctions d’activation ReLU et d’une initialisation correcte des poids (Glorot ou He).
  • Initialisation des poids :
    • L’initialisation aléatoire brise la symétrie et permet un apprentissage efficace.
    • L’initialisation Glorot convient aux activations sigmoid et tanh.
    • L’initialisation He est optimale pour ReLU et ses variantes.
  • Fonctions de perte :
    • Tâches de régression : Erreur quadratique moyenne (MSE).
    • Tâches de classification : Perte d’entropie croisée avec activation softmax pour les sorties multiclasses.
  • Techniques de régularisation :
    • Régularisation L1 et L2 : Ajouter des termes de pénalité à la perte pour décourager les poids élevés.
    • Dropout : Désactiver aléatoirement des neurones pendant l’entraînement pour éviter le surapprentissage.
    • Early Stopping : Interrompre l’entraînement lorsque la performance de validation se dégrade.
  • Concepts clés :
    • Le taux d’apprentissage détermine la taille des pas pendant l’optimisation.
    • La descente de gradient est utilisée pour mettre à jour les poids en minimisant la perte.
    • Le choix des fonctions d’activation et des méthodes d’initialisation est crucial pour un entraînement efficace.

3Blue1Brown

Une série de vidéos, avec des animations, offrant l’intuition derrière l’algorithme de rétropropagation.

StatQuest

Herman Kamper

Une des séries de vidéos les plus complètes sur l’algorithme de rétropropagation.

Prochaine leçon

  • Nous introduirons différentes architectures de réseaux neuronaux artificiels.

Références

Géron, Aurélien. 2022. Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow. 3ᵉ éd. O’Reilly Media, Inc.
Hinton, Geoffrey E., Nitish Srivastava, Alex Krizhevsky, Ilya Sutskever, et Ruslan Salakhutdinov. 2012. « Improving neural networks by preventing co-adaptation of feature detectors ». CoRR abs/1207.0580. http://arxiv.org/abs/1207.0580.
Russell, Stuart, et Peter Norvig. 2020. Artificial Intelligence: A Modern Approach. 4ᵉ éd. Pearson. http://aima.cs.berkeley.edu/.

Marcel Turcotte

Marcel.Turcotte@uOttawa.ca

École de science informatique et de génie électrique (SIGE)

Université d’Ottawa