Un modèle mental utile
Un réseau neuronal commence comme une structure dont les réglages numériques sont vides. La structure indique quels calculs sont effectués et dans quel ordre. Les poids fournissent une grande partie des nombres utilisés par ces calculs.
Imaginez la structure comme un modèle de calcul réutilisable et les poids comme les valeurs qui remplissent ses emplacements. Deux modèles peuvent utiliser la même structure tout en se comportant différemment parce qu’ils contiennent des poids appris différents. L’analogie s’arrête là : contrairement aux réglages étiquetés d’un panneau de commande, les poids individuels n’ont généralement pas de noms tels que « grammaire » ou « chats ».
Une couche courante peut être représentée ainsi :
input signals x
│
▼
multiply and combine with weights W
│
▼
add a learned offset b
│
▼
apply the layer's function
│
▼
output signalsLe terme b est appelé un biais. Les poids et les biais sont tous deux des paramètres du modèle ; toutefois, seuls les poids multiplient les signaux.
Comment fonctionnent les poids d’un modèle
Supposons qu’une couche reçoive plusieurs nombres de la couche précédente. Pour produire un nouveau nombre, elle multiplie chaque entrée par un poids et additionne les résultats :
sortie = (entrée₁ × poids₁) + (entrée₂ × poids₂) + ... + biais
Un poids positif pousse la somme dans la même direction que son entrée. Un poids négatif la pousse dans la direction opposée. Un poids proche de zéro fait peu contribuer cette entrée à cette somme particulière.
Une couche réelle calcule de nombreuses sorties à la fois. Ses poids sont organisés en matrice, de sorte que la forme compacte est :
y = Wx + b
Ici, x est un vecteur de signaux d’entrée, W est une matrice de poids, b est un vecteur de biais, et y est le résultat avant l’application d’une éventuelle fonction suivante. Les frameworks stockent parfois W sous forme transposée, mais l’opération sous-jacente reste la même.
Les réseaux profonds répètent des variantes de cette opération sur de nombreuses couches. Une modification précoce altère les signaux reçus par les couches suivantes ; son effet peut donc se propager dans le reste du calcul. Les fonctions non linéaires, la normalisation, les paramètres réutilisés et les interactions avec les autres poids rendent cet effet dépendant du contexte.
C’est pourquoi le signe ou la taille d’un poids ne constitue pas une mesure fiable de son importance pour l’ensemble du modèle. Sa signification dépend de sa position, de l’échelle de ses entrées, des paramètres voisins et de chaque opération ultérieure qui utilise le signal produit.
Un exemple détaillé
Considérons une couche comportant deux entrées :
- première entrée :
3 - deuxième entrée :
2 - premier poids :
0.8 - deuxième poids :
-0.5 - biais :
0.1
La couche calcule :
(3 × 0.8) + (2 × -0.5) + 0.1 = 1.5
Modifions maintenant uniquement le deuxième poids, de -0.5 à 0.5 :
(3 × 0.8) + (2 × 0.5) + 0.1 = 3.5
L’entrée n’a pas changé. La structure du calcul n’a pas changé. La sortie a changé parce qu’un multiplicateur appris a changé.
Ce petit exemple permet d’examiner facilement chaque valeur. Un grand réseau effectue simultanément de nombreuses combinaisons de ce type, puis transmet les résultats à d’autres couches. Dans ce contexte, un poids a toujours une fonction locale précise, mais sa contribution à la réponse finale est rarement significative prise isolément.
Comment les poids sont appris
L’entraînement cherche des valeurs de poids qui permettent au modèle de mieux accomplir sa tâche. Une étape d’entraînement typique comporte quatre parties :
- Le modèle utilise ses poids actuels pour produire une sortie.
- Une fonction de perte mesure l’erreur par rapport à l’objectif d’entraînement.
- La rétropropagation calcule un gradient pour chaque poids. Un gradient indique comment une petite modification de ce poids changerait la perte.
- Un optimiseur utilise ces gradients pour ajuster les poids.
Une mise à jour simplifiée est :
nouveau poids = ancien poids - taux d’apprentissage × gradient
Le taux d’apprentissage contrôle la taille du pas. La répétition de ces mises à jour sur les exemples d’entraînement produit progressivement un ensemble de poids qui répond mieux à l’objectif.
Le processus n’attribue généralement pas un concept humain à chaque nombre. L’apprentissage est distribué. Un comportement utile peut dépendre de motifs répartis sur de nombreux poids, et un même poids peut participer à de nombreux comportements.
Les poids ne doivent pas non plus commencer à zéro. Les réseaux neuronaux commencent généralement avec des valeurs soigneusement randomisées. Si des unités équivalentes commençaient à l’identique, elles pourraient recevoir des mises à jour identiques et ne pas apprendre des rôles différents.
Pourquoi les poids sont importants
Les poids sont le résultat durable de l’entraînement. Une fois l’entraînement terminé, les valeurs apprises peuvent être enregistrées dans un point de contrôle et chargées ultérieurement, au lieu d’être réapprises à chaque utilisation.
Modifier les poids modifie le comportement du modèle, même si le code et l’architecture restent inchangés. Le fine-tuning fait cela délibérément en poursuivant l’entraînement à partir d’un point de contrôle existant. D’autres techniques peuvent modifier la manière dont les poids sont représentés. Par exemple, les stocker avec une précision numérique moindre peut réduire l’utilisation de la mémoire, même si le compromis sur la qualité des sorties dépend du modèle et de la méthode.
Les poids représentent également une grande partie du stockage et de la mémoire de travail nécessaires à l’exécution d’un modèle entraîné. Un plus grand nombre de valeurs et un plus grand nombre d’octets par valeur nécessitent généralement davantage de mémoire. Cette relation est utile, mais ne constitue pas une mesure complète des performances. La surcharge d’exécution, les calculs temporaires, la longueur des entrées, le traitement par lots et le matériel jouent également un rôle.
Plus important encore, les poids sont nécessaires, mais ne suffisent pas. Un tenseur de poids n’a de sens que lorsqu’il est placé dans la partie correspondante d’une architecture compatible. Un package de modèle utilisable peut également nécessiter une configuration, un traitement des entrées, un décodage des sorties et du code d’exécution. Les poids ne définissent ni l’interface complète du produit, ni les règles de sécurité, ni le système de récupération, ni les outils associés au modèle.
Idées reçues courantes
« Les poids et les paramètres sont la même chose »
Il arrive que ces termes soient utilisés indifféremment. Dans une définition plus stricte, chaque poids est un paramètre, mais tous les paramètres ne sont pas des poids. Les biais et certaines valeurs de mise à l’échelle sont également des paramètres. Les frameworks et les éditeurs de modèles peuvent néanmoins appeler « fichier de poids » un fichier contenant tous les paramètres appris.
« Un poids plus grand est toujours plus important »
L’amplitude d’un poids n’a de sens que dans son contexte. Une entrée de faible amplitude associée à un poids élevé peut avoir le même effet local qu’une entrée de grande amplitude associée à un poids faible. Les couches suivantes peuvent amplifier, annuler, réorienter ou ignorer le résultat.
« Chaque poids stocke un fait »
Les poids encodent collectivement les motifs appris lors de l’entraînement. Ce ne sont pas des lignes dans une table de faits. Un fait ou une capacité donné peut impliquer de nombreuses valeurs, tandis qu’une seule valeur peut affecter de nombreuses entrées. Les modèles peuvent reproduire une partie du contenu d’entraînement, mais cela ne transforme pas les poids en copie directement interrogeable du jeu de données.
« Les poids constituent tout le système d’IA »
Un point de contrôle n’est pas une application complète. L’architecture et la configuration correspondantes sont nécessaires pour interpréter ses tenseurs. Un produit d’IA peut également ajouter des instructions, un système de récupération, des outils, des filtres et une logique d’interface qui ne sont pas contenus dans les poids du modèle.
« Le modèle met à jour ses poids chaque fois qu’on l’utilise »
L’inférence ordinaire lit des poids fixes pour calculer les sorties. La conversation immédiate peut influencer les sorties ultérieures par l’intermédiaire du contexte fourni, mais cela ne revient pas à réentraîner les poids. Un système ne les modifie que s’il inclut explicitement un processus d’entraînement ou d’adaptation.
La place des poids dans le système global
L’architecture définit le chemin du calcul. Les paramètres fournissent les valeurs apprises le long de ce chemin. Les poids multiplient les signaux, tandis que les biais et les autres types de paramètres remplissent leurs propres rôles. L’entraînement ajuste ces valeurs ; l’inférence utilise les valeurs obtenues pour traiter de nouvelles entrées.
Lisez ensuite Que sont les paramètres d’un modèle ? pour découvrir la catégorie plus large qui comprend les poids, les biais et les autres valeurs apprises. Consultez Paramètres du modèle et poids du modèle pour connaître la distinction directe. Revenez à Qu’est-ce qu’un réseau neuronal ? pour comprendre comment les couches pondérées s’assemblent en un réseau complet, ou poursuivez avec Qu’est-ce que l’entraînement en IA ? pour découvrir comment ces valeurs sont apprises.