Aller au contenu
English

Représenter les observations

  • Leçon 4
  • 40 min
  • Module 2 : Vecteurs et matrices
Leçon 4 sur 18 · Mathématiques et statistiques essentielles pour l'IAReprésenter les observations

Ce que vous saurez faire

Un modèle ne peut pas lire un billet, regarder une photo ou comprendre une phrase. Il reçoit des nombres. Cette leçon montre comment une observation devient une liste de nombres et comment plusieurs observations deviennent un tableau. Vous pourrez ensuite lire la forme de tout jeu de données utilisé par un modèle.

Carnet JupyterFacultatif : vérifier les nombres dans un carnetColab · Kaggle · GitHub · en anglais

Le carnet (notebook) Jupyter est facultatif : une calculatrice suffit pour cette leçon. Il contient les billets de Priya, l’image de 8 × 8 et les exercices en Python. Ses vérifications indiquent si votre réponse est correcte, sans la montrer. Il montre aussi le cas d’échec : changer l’ordre des colonnes conserve la forme, mais change le sens. Il utilise seulement la bibliothèque standard de Python, donc aucune installation n’est nécessaire.

Le carnet est en anglais. Colab et Kaggle ouvrent votre propre copie. Il faut un compte Google ou Kaggle gratuit. Vous êtes bloqué ? Consultez le carnet de solution.

Avant de commencerCe qu’il faut savoir et avoir sous la mainEnviron 40 minutes

Ce que vous devez savoir

Ce que vous devez préparer (le carnet n’exige rien de tout cela)

  • Une calculatrice. Vous comptez et multipliez seulement de petits nombres.
  • Votre fichier c03-notes.md. Vous l’avez créé dans l’encadré « Avant de commencer » de Lire les mathématiques. Ajoutez un titre : ## Vectors and matrices. Si vous ne trouvez pas le fichier, créez un fichier vide portant ce nom : cette leçon n’utilise pas les réponses précédentes.

Le carnet a été testé dans Jupyter avec Python 3.14.6 (bibliothèque standard seulement).

Larkfield est une boutique en ligne de produits pour la maison et le jardin. Environ 1 200 messages de clients arrivent chaque semaine sous forme de billets de soutien. Larkfield crée une IA qui propose une équipe et une priorité pour chaque nouveau billet. Dans le module 1, vous avez décrit les billets à l’aide de résumés. Dans ce module, vous voyez comment un modèle représente chaque billet.

  • Un tableau de données sur les clients. Un modèle prédit si un client cessera d’acheter. Il reçoit une ligne par client : nombre de commandes, jours depuis la dernière commande, nombre de retours. Chaque ligne est une liste de nombres.
  • Une photo. Un client téléverse une photo d’une lampe brisée. L’ordinateur représente la photo par une grille de valeurs de luminosité, un nombre par pixel.
  • La recherche avec des plongements. Un système de recherche transforme chaque phrase en une liste de quelques centaines de nombres, appelée plongement (embedding). Les phrases de sens semblable obtiennent des listes semblables. Vous utilisez cette idée dans la leçon 3.
  • Un lot pendant l’entraînement. Un modèle apprend à partir de quelques exemples à la fois, appelés un lot. Un lot de 32 photos de 784 pixels chacune est un tableau de 32 lignes et 784 colonnes.

Dans les quatre cas, les données sont des nombres dans un ordre fixe. Les termes pour les décrire sont scalaire, vecteur et matrice.

Priya, la scientifique des données de Larkfield, veut un modèle simple qui attribue un score d’urgence à chaque billet. Elle choisit d’abord quatre éléments à mesurer pour chaque billet. Une propriété mesurée d’une observation est une caractéristique. Une observation est un élément que vous mesurez : ici, un billet.

Caractéristique Ce qu’elle compte T-4101
Longueur Centaines de mots dans le billet 2
Mots de remboursement Nombre d’apparitions de « remboursement », « facturé » ou « rendre mon argent » 2
Billets précédents Billets du même client dans les 90 derniers jours 0
Photo 1 si le client a joint une photo, 0 sinon 1

Chaque valeur du tableau est un nombre. Un nombre seul est un scalaire. « T-4101 contient 2 mots de remboursement » est un scalaire.

Écrivez maintenant les quatre valeurs dans un ordre fixe. Le résultat est un vecteur : une liste ordonnée de nombres qui décrit une observation.

xT-4101=(2, 2, 0, 1)\mathbf{x}_{\text{T-4101}} = (2,\ 2,\ 0,\ 1)

Lisez-le à voix haute : « Le vecteur de caractéristiques de T-4101 est deux, deux, zéro, un. » Une lettre en gras, comme x, désigne souvent un vecteur. L’ordre fait partie du sens. La première position est toujours la longueur, la deuxième est toujours les mots de remboursement, et ainsi de suite. Le vecteur (2, 0, 2, 1) représente un autre billet.

Le nombre de valeurs dans un vecteur est sa dimension. Ce vecteur a 4 caractéristiques, donc sa dimension est 4. On dit aussi « un vecteur à 4 dimensions ».

Quand un vecteur contient seulement deux nombres, vous pouvez le dessiner. Prenez deux caractéristiques de trois billets : les mots de remboursement et les billets précédents. Chaque billet devient un point, et la flèche de (0, 0) jusqu’à ce point est son vecteur.

Trois billets sous forme de flèches. La position de la pointe correspond à la paire de valeurs des caractéristiques.
Description textuelle du graphique

L’axe horizontal représente les mots de remboursement, de 0 à 4. L’axe vertical représente les billets précédents, de 0 à 4. La flèche de T-4101 va de (0, 0) à (2, 0) : 2 mots de remboursement et aucun billet précédent. La flèche de T-4102 va à (0, 3) : aucun mot de remboursement et 3 billets précédents. La flèche de T-4103 va à (1, 1). Les billets aux valeurs semblables ont des pointes proches les unes des autres.

Vous ne pouvez pas dessiner quatre dimensions, mais les mêmes règles s’appliquent. Dans la leçon 2, vous additionnez et comparez ces flèches. Dans la leçon 3, vous mesurez la proximité de deux pointes.

Priya écrit les vecteurs de trois billets l’un sous l’autre. Chaque billet occupe une ligne. Chaque caractéristique occupe une colonne.

Billet Longueur Mots de remboursement Billets précédents Photo
T-4101 2 2 0 1
T-4102 1 0 3 0
T-4103 3 1 1 1

Sans les étiquettes, c’est un rectangle de nombres :

X=(220110303111)X = \begin{pmatrix} 2 & 2 & 0 & 1 \\ 1 & 0 & 3 & 0 \\ 3 & 1 & 1 & 1 \end{pmatrix}

Un rectangle de nombres disposés en lignes et en colonnes est une matrice. Une lettre majuscule, comme X, désigne souvent une matrice. La forme d’une matrice indique son nombre de lignes, puis son nombre de colonnes. Cette matrice a la forme 3 × 4, qu’on lit « trois par quatre ».

En IA, la disposition habituelle est une ligne par observation et une colonne par caractéristique. Vous pouvez alors lire la forme comme une phrase : 3 billets, 4 caractéristiques chacun. Pour une semaine de billets, la matrice a la forme 1 200 × 4 : 1 200 lignes et 4 800 nombres au total.

Une valeur dans une matrice a deux positions : sa ligne et sa colonne. X2,3X_{2,3} signifie ligne 2, colonne 3. Ici, la valeur est 3 : le billet T-4102 a 3 billets précédents.

D’autres données sous forme de vecteurs et de matrices

Section intitulée « D’autres données sous forme de vecteurs et de matrices »

Les billets sont des données tabulaires : chaque colonne porte un nom. Les images et le texte deviennent aussi des nombres, mais d’une autre façon.

Une image en niveaux de gris est une grille de pixels. Chaque pixel a une valeur de luminosité, de 0 (noir) à 255 (blanc). L’image est donc une matrice avec une ligne par rangée de pixels.

Une toute petite image en niveaux de gris de 8 × 8 et les 64 nombres que le modèle reçoit. Le pixel encadré vaut 250, presque blanc.
Description textuelle du graphique

À gauche, une image de maison mesure 8 pixels de largeur et 8 pixels de hauteur. Le toit est foncé (valeur 60), les murs sont gris moyen (160), la fenêtre est presque blanche (250). La porte est très foncée (40). L’arrière-plan est gris clair (230). À droite, les mêmes 64 valeurs forment une matrice de 8 × 8. La valeur encadrée, à la ligne 5 et à la colonne 3, est 250 : le pixel supérieur gauche de la fenêtre.

Les images réelles sont plus grandes :

Image Forme Nombres
La maison ci-dessus 8 × 8 64
Un petit chiffre en niveaux de gris, un exemple d’entraînement courant 28 × 28 784
Une photo couleur d’un client, de 1 000 × 750 pixels, avec des valeurs de rouge, de vert et de bleu 1 000 × 750 × 3 2 250 000

Une photo couleur contient trois nombres par pixel : elle correspond donc à trois matrices superposées. On appelle tenseur un bloc de nombres qui s’étend dans plus de deux directions. Vous n’avez pas besoin de tenseurs dans ce cours. Vous devez seulement savoir que leur forme contient plus de deux nombres.

Beaucoup de modèles simples ont besoin d’un vecteur par image. Ils placent les lignes à la suite pour transformer l’image de 28 × 28 en un vecteur de 784 nombres. Un lot de 32 images de ce type devient alors une matrice de forme 32 × 784.

Un modèle de plongement transforme un morceau de texte en un vecteur de dimension fixe. Les dimensions courantes sont 384, 768 ou 1 536 nombres. Ce sont des tailles courantes pour les plongements de phrases, pas la taille d’un produit précis.

Un plongement de phrase de 384 nombres, avec une barre mince par nombre. Les valeurs de cette image sont inventées, mais ressemblent à des valeurs réelles : de petits nombres autour de 0.
Description textuelle du graphique

La bande contient 384 barres minces, de la position 1 à gauche à la position 384 à droite. Chaque barre représente un nombre. Les barres au-dessus de la ligne sont positives, celles au-dessous sont négatives. La plupart des valeurs se situent entre −0,1 et +0,1. Sous la bande, vous voyez les premières valeurs, puis le texte « 378 de plus » (« 381 de plus » sur un écran étroit). Nous avons inventé les valeurs pour cette leçon. Elles ne proviennent pas d’un vrai modèle.

Le vecteur de billet et le plongement diffèrent sur un point important. Dans le vecteur de billet, chaque position porte un nom : longueur, mots de remboursement. Dans un plongement, les positions n’ont aucun nom. La position 17 ne signifie pas « remboursement ». Le sens dépend de la proximité du vecteur entier avec d’autres vecteurs. Deux billets sur un colis en retard obtiennent des plongements proches l’un de l’autre. La leçon 3 montre comment mesurer cette « proximité ».

Exemple détaillé : Priya construit la matrice de caractéristiques

Section intitulée « Exemple détaillé : Priya construit la matrice de caractéristiques »

Priya transforme trois nouveaux billets en une matrice. Elle écrit chaque valeur intermédiaire pour que Grace, la responsable du soutien, puisse la vérifier.

Billet Début du texte Mots Mots de remboursement trouvés Billets précédents Photo
T-4101 « On m’a facturé une lampe qui est arrivée brisée. Je demande un remboursement… » 200 facturé, remboursement → 2 0 oui
T-4102 « Où est ma commande? C’est la troisième fois que j’écris… » 100 aucun → 0 3 non
T-4103 « La chaise de jardin est fissurée. Pouvez-vous me rendre mon argent ou m’en donner une nouvelle… » 300 rendre mon argent → 1 1 oui

Étape 1 : convertissez chaque valeur dans l’unité de la caractéristique. La longueur est en centaines de mots, donc 200 mots → 2. Pour la photo, « oui » → 1 et « non » → 0.

Étape 2 : écrivez chaque billet sous forme de vecteur, dans l’ordre fixe des caractéristiques (longueur, mots de remboursement, billets précédents, photo).

  • T-4101 → (2, 2, 0, 1)
  • T-4102 → (1, 0, 3, 0)
  • T-4103 → (3, 1, 1, 1)

Étape 3 : empilez les vecteurs pour former les lignes. Le résultat est la matrice X de 3 × 4 de la section précédente.

Étape 4 : vérifiez la forme. 3 lignes, parce qu’il y a 3 billets. 4 colonnes, parce qu’il y a 4 caractéristiques. Chaque ligne contient exactement 4 valeurs.

Grace demande : « Que signifie le nombre à la ligne 3, colonne 1? » Priya répond : « La ligne 3 est T-4103. La colonne 1 est la longueur. T-4103 contient 300 mots, donc la valeur est 3. »

En Python, les professionnels conservent cette matrice dans un tableau numpy ou un DataFrame pandas. X.shape (la forme de X) affiche alors (3, 4). Python compte les positions à partir de 0, donc la ligne 3 a l’indice 2 dans le code.

Deux autres billets arrivent. Transformez-les en lignes de la matrice de Priya.

  • T-4104 : 400 mots. « On m’a facturé deux fois pour une commande. Je veux un remboursement pour le deuxième paiement. » Le client a écrit 2 billets dans les 90 derniers jours. Aucune photo.
  • T-4105 : 100 mots. « Veuillez changer mon adresse de livraison. » Aucun billet précédent. Aucune photo.
  1. Dans c03-notes.md, ajoutez un titre : ### Feature matrix.
  2. Comptez les mots de remboursement dans chaque texte. Utilisez seulement « remboursement », « facturé » et « rendre mon argent ».
  3. Convertissez la longueur de chaque billet en centaines de mots.
  4. Écrivez chaque billet sous forme de vecteur dans l’ordre longueur, mots de remboursement, billets précédents, photo.
  5. Ajoutez les deux vecteurs comme lignes 4 et 5 sous les trois lignes de X.
  6. Écrivez la forme de la nouvelle matrice.
  7. Écrivez la valeur à la ligne 4, colonne 3, et ce qu’elle signifie.
Afficher le résultat attendu
  • T-4104 : « facturé » et « remboursement » → 2 mots de remboursement. Longueur de 400 mots → 4. Vecteur : (4, 2, 2, 0).
  • T-4105 : aucun mot de remboursement. Longueur 1. Vecteur : (1, 0, 0, 0).
Billet Longueur Mots de remboursement Billets précédents Photo
T-4101 2 2 0 1
T-4102 1 0 3 0
T-4103 3 1 1 1
T-4104 4 2 2 0
T-4105 1 0 0 0

La forme est 5 × 4 : 5 billets, 4 caractéristiques. La ligne 4, colonne 3 contient 2 : le client de T-4104 a écrit 2 billets dans les 90 derniers jours.

Vérification : chaque ligne contient 4 valeurs, et chaque colonne contient un seul type de valeur. Si une ligne contient 3 ou 5 valeurs, une caractéristique manque ou est en trop.

Changez un élément à la fois et écrivez la nouvelle forme dans vos notes.

  1. Priya ajoute une cinquième caractéristique : les heures depuis l’arrivée du colis. Quelle est la forme pour une semaine de 1 200 billets?
  2. Pendant une semaine chargée, 1 350 billets arrivent. Priya garde les cinq caractéristiques. Quelle est la forme maintenant, et combien de nombres la matrice contient-elle?
  3. Larkfield entraîne un modèle d’image sur des lots de 64 photos en niveaux de gris. Chaque photo mesure 28 × 28 pixels, et Larkfield transforme chaque photo en un vecteur. Quelle est la forme d’un lot?
  4. Chacun des 1 200 billets d’une semaine reçoit aussi un plongement de 384 nombres. Quelle est la forme de la matrice de plongements?
Afficher les réponses
  1. 1 200 × 5. Les lignes restent les mêmes. La nouvelle caractéristique ajoute une colonne.
  2. 1 350 × 5, ce qui contient 1 350 × 5 = 6 750 nombres.
  3. Une photo contient 28 × 28 = 784 nombres, donc le lot a la forme 64 × 784.
  4. 1 200 × 384. Une ligne par billet, une colonne par position du plongement.

Erreur courante

Les colonnes changent d'ordre

Symptôme : un modèle a bien fonctionné pendant des mois. Après un changement au pipeline de données, il classe soudain beaucoup de billets courts et polis comme urgents. Aucun message d’erreur n’apparaît.

Cause : le pipeline écrit maintenant les colonnes dans un autre ordre : les billets précédents d’abord, puis la longueur. Le modèle lit toujours la position 1 comme la longueur. Le sens d’un vecteur dépend uniquement de l’ordre de ses positions, donc chaque billet ressemble maintenant à un autre billet. La forme reste 1 200 × 4, donc aucune vérification de forme ne détecte le problème.

Correction : gardez les noms des caractéristiques avec les données, par exemple comme noms de colonnes dans un tableau. Vérifiez les noms et leur ordre avant que le modèle attribue des scores. Comparez aussi des résumés simples avec ceux de la semaine dernière. Si la moyenne de « longueur » égale soudain celle de « billets précédents » de la semaine dernière, les colonnes ont changé de place.

Vérifiez votre compréhension

Pourquoi (2, 2, 0, 1) représente-t-il un autre billet que (2, 0, 2, 1), malgré les quatre mêmes nombres?

Afficher la réponse

Chaque position d’un vecteur de caractéristiques représente une caractéristique. Dans le premier vecteur, la position 2 (mots de remboursement) vaut 2 et la position 3 (billets précédents) vaut 0. Dans le deuxième vecteur, c’est l’inverse : aucun mot de remboursement, mais 2 billets précédents. Les nombres sont les mêmes, mais ils décrivent un autre billet. Un vecteur est une liste ordonnée.

Vérifiez votre compréhension

Un collègue dit : « Notre jeu de données a la forme 4 × 1 200. » Selon la disposition habituelle, quel est le problème, et pourquoi est-ce important?

Afficher la réponse

La disposition habituelle est une ligne par observation et une colonne par caractéristique. 4 × 1 200 signifie 4 lignes et 1 200 colonnes, donc les billets sont dans les colonnes. La plupart des outils lisent chaque ligne comme une observation. Ils verraient 4 « billets » de 1 200 caractéristiques chacun. Retournez la matrice par une transposition (leçon 2), pour qu’elle ait la forme 1 200 × 4.

Vérifiez votre compréhension

Prédisez : dans un plongement de phrase de 384 nombres, pouvez-vous trouver la position qui signifie « remboursement »? Expliquez.

Afficher la réponse

Non. Les positions d’un plongement n’ont aucun nom. Le modèle de plongement choisit les nombres pour que les textes de sens semblable obtiennent des vecteurs semblables. « Remboursement » se répartit sur plusieurs positions. Vous utilisez un plongement en comparant des vecteurs entiers, pas en lisant une position.

Récapitulatif

  • Un scalaire est un nombre. Un vecteur est une liste ordonnée de nombres qui décrit une observation. Sa dimension est le nombre de valeurs qu’il contient.
  • Une matrice est un rectangle de nombres. Sa forme est lignes × colonnes. En IA, les lignes sont habituellement les observations et les colonnes sont les caractéristiques : 1 200 billets avec 4 caractéristiques donnent 1 200 × 4.
  • Une image en niveaux de gris est une matrice de valeurs de pixels. Un plongement de phrase est un long vecteur, généralement de quelques centaines à quelques milliers de nombres, sans positions nommées.
  • L’ordre des caractéristiques fait partie du sens. Gardez les noms avec les nombres.

Ensuite, vous faites des calculs avec des vecteurs. Vous voyez comment un modèle transforme un vecteur de caractéristiques en un score au moyen d’un produit scalaire.

Leçon suivante : Les opérations sur les vecteurs