Le domaine du Deep Learning est riche et très en vogue, notamment avec l’avènement des modèles génératifs en tout genre (image, son, texte, etc.). On pense à ChatGPT, capable de converser de manière fluide et cohérente.

Mais derrière ces applications se cachent des algorithmes que l’on nomme modèles tels que GPT-4, Mixtral, Llama, Gemini, Claude, etc. Ces modèles sont souvent versionnés : Llama 2 et 3, GPT-3 et 4, Claude-2 et 3, etc.

Ces modèles sont extrêmement coûteux à créer et à maintenir, tant en termes de ressources computationnelles que de données nécessaires pour l’entraînement. Il existe plusieurs techniques pour les optimiser, que nous détaillerons plus loin.

Le principe de création est similaire pour tous les modèles, bien qu'il existe deux méthodes principales d’entraînement de modèle :

Élaboration d’un modèle

Les étapes d’élaboration d’un modèle ci-dessous traitent de l’entraînement supervisé :

  1. Agrégation, annotation et prétraitement des données d’entraînement : Collecter une grande quantité de données pertinentes, les étiqueter correctement et les transformer en un format utilisable par le modèle. Cela peut inclure le nettoyage des données, la normalisation, et la division en ensembles d'entraînement, de validation et de test.

  2. Description du modèle :

    page2.png

    1. Entrée : Définir le type et la forme des données que le modèle recevra. Par exemple, pour une tâche de classification d'images, cela pourrait être des images de taille fixe.
    2. Couches : Choisir et organiser les couches du réseau de neurones, telles que des couches convolutives pour les images ou des couches récurrentes pour les données séquentielles par exemple dans le cadre de réseaux neuronaux classique (RNN)
    3. Fonction de perte : Sélectionner la fonction qui mesure la différence entre les prédictions du modèle et les véritables étiquettes. Par exemple, l'entropie croisée (Categorical Cross Entropy) pour la classification ou erreur quadratique moyenne (Mean Squared Error) pour la régression.
    4. Fonction d’activation : Utiliser des fonctions comme ReLU, Sigmoid ou Tanh pour introduire la non-linéarité nécessaire au réseau de neurones pour apprendre des patterns complexes.
    5. Optimiseur : Choisir l'algorithme qui ajustera les poids du modèle, comme Adam ou SGD (Stochastic Gradient Descent).
    6. Sortie : Définir le format des résultats produits par le modèle. Par exemple, une probabilité pour chaque classe dans une tâche de classification.
  3. Entraînement du modèle :

    1. Nombre d’époques : Déterminer le nombre de passes complètes à travers l'ensemble de données d'entraînement. Trop peu d’époques peuvent conduire à un sous-apprentissage, tandis que trop peuvent conduire à un sur-apprentissage.
    2. Fonctions à exécuter entre les époques : Inclure des techniques comme le dropout pour éviter le sur-apprentissage, et la validation croisée pour évaluer la performance du modèle sur un ensemble de validation.

Zoom sur ce qu’il se passe lors de l’entraînement

Lors de l’entraînement d’un modèle, plusieurs processus cruciaux se déroulent :

  1. Emission d’une hypothèse par le modèle (traduite par les poids de chaque neurone du réseau)
  2. Calcul de l’hypothèse (passage de la donnée à travers les couches de neurones pondérés)
  3. Vérification de la distance du résultat par rapport à la vérité (l’étiquette ou label)
  4. Mise à jour des poids, et donc de la prochaine hypothèse

Concrètement :

  1. Forward Propagation : Les données d'entrée passent à travers les différentes couches du réseau, où chaque couche applique des transformations mathématiques. Les activations des neurones sont calculées jusqu'à ce qu'une sortie soit produite.