Aller au contenu principal

Leçon 2 — Algèbre linéaire

C'est la branche la plus importante des trois, et la moins effrayante quand on l'aborde par le sens plutôt que par les règles de calcul. Une seule idée la porte : transformer les objets du monde en listes de nombres, puis les manipuler par blocs.

Le vecteur : une description transformée en liste

Un vecteur est une liste ordonnée de nombres. C'est tout. Ce qui est intéressant, c'est ce qu'on en fait.

Prenez un client. Vous le décrivez par son ancienneté en mois, sa dépense mensuelle moyenne et son nombre de réclamations. Ce client est désormais le vecteur [24, 89.50, 3]. Un autre client est [3, 12.00, 0].

Prenez une image en niveaux de gris de 28 par 28 pixels. Chaque pixel a une intensité. Cette image est un vecteur de 784 nombres.

Prenez un mot. Les techniques de la leçon sur les embeddings le transforment en vecteur de plusieurs centaines de nombres.

Pourquoi c'est l'idée centrale du domaine

Dès que deux objets sont des vecteurs de même longueur, vous pouvez mesurer leur ressemblance, les regrouper, et les faire passer dans la même fonction. Un algorithme qui sait traiter des vecteurs sait traiter des clients, des images, des phrases et des morceaux de musique, sans rien changer. Toute la généralité du machine learning vient de là.

Le nombre de composantes s'appelle la dimension. Le client était en dimension 3, l'image en dimension 784, un embedding de mot souvent en dimension 768. On ne visualise plus rien au-delà de trois, et ce n'est pas grave : les opérations sont les mêmes, seule l'intuition visuelle disparaît.

Mesurer une ressemblance

Deux opérations suffisent pour l'essentiel.

La distance. Combien deux vecteurs sont-ils éloignés ? On soustrait composante par composante, et on combine les écarts. Deux clients aux comportements proches ont une petite distance. C'est le fondement du partitionnement et de la recherche du plus proche voisin.

Le produit scalaire. On multiplie les composantes deux à deux et on additionne le tout. Le résultat est grand quand les deux vecteurs « pointent dans la même direction », proche de zéro quand ils sont indépendants, négatif quand ils s'opposent.

De là vient la similarité cosinus, qui est le produit scalaire ramené à une échelle indépendante de la longueur des vecteurs. C'est la mesure utilisée partout où l'on compare des sens : trouver les documents proches d'une question, les produits proches d'un achat, les visages proches d'une photo. Toute la recherche vectorielle moderne, celle qui fait fonctionner le RAG, repose sur cette unique opération.

La nuance qui compte

La distance mesure « à quel point les deux objets sont éloignés », la similarité cosinus mesure « à quel point ils vont dans la même direction ». Pour du texte, la direction compte plus que la longueur : un article de trois pages et un résumé d'un paragraphe traitant du même sujet ont des longueurs très différentes et une direction quasi identique. C'est pourquoi le cosinus domine en recherche documentaire.

La matrice : une transformation

Un vecteur décrit un objet. Une matrice est un tableau rectangulaire de nombres, et elle a deux usages qu'il faut savoir distinguer.

Comme collection. Empiler mille clients, chacun décrit par trois nombres, donne une matrice de mille lignes et trois colonnes. C'est votre jeu de données. Les lignes sont les exemples, les colonnes les variables.

Comme transformation. Multiplier un vecteur par une matrice produit un nouveau vecteur, souvent de dimension différente. C'est là que réside la puissance : la matrice est une fonction qui prend une description et en renvoie une autre.

C'est exactement ce que fait une couche de réseau de neurones. Elle reçoit un vecteur de 784 nombres — l'image — le multiplie par une matrice, et renvoie un vecteur de 128 nombres : une description plus compacte et plus utile, dont les composantes ne correspondent plus à des pixels mais à des motifs que le réseau a appris à repérer.

Un réseau de neurones est cette chaîne, avec une fonction non linéaire intercalée entre les étapes — la leçon sur le deep learning explique pourquoi cette intercalation est indispensable. Les nombres contenus dans ces matrices sont les paramètres du modèle, et l'entraînement consiste à les ajuster.

Le produit matriciel, et pourquoi les GPU existent

Multiplier deux matrices consiste à faire beaucoup de produits scalaires : chaque case du résultat est le produit scalaire d'une ligne par une colonne. C'est mécaniquement simple, et c'est massivement parallèle : chaque case peut être calculée indépendamment des autres.

C'est toute l'explication du rôle des cartes graphiques. Un processeur central possède quelques cœurs très rapides et polyvalents. Un processeur graphique possède des milliers de cœurs simples capables de faire tous la même opération en même temps — précisément ce que demande un produit matriciel. Le facteur d'accélération, souvent de dix à cinquante, ne vient pas d'une meilleure horloge mais du fait que le problème se découpe naturellement.

Le tenseur, sans mystère

Vous rencontrerez le mot tenseur dès la première page de PyTorch ou de TensorFlow. Dans ce contexte, il ne désigne rien de plus qu'un tableau de nombres à un nombre quelconque de dimensions.

NomDimensionsExemple
Scalaire0une température : 18.5
Vecteur1un client : [24, 89.50, 3]
Matrice2mille clients sur trois variables
Tenseur d'ordre 33une image couleur : hauteur, largeur, canaux
Tenseur d'ordre 44un lot d'images : lot, hauteur, largeur, canaux

La forme d'un tenseur, c'est-à-dire la liste de ses dimensions, est l'information que vous manipulerez le plus souvent en pratique. La majorité des messages d'erreur en deep learning sont des désaccords de forme, du type « attendu 128, reçu 64 ».

La réduction de dimension, en une idée

Un dernier concept, parce qu'il revient constamment. Quand vos objets sont décrits par des centaines de variables, beaucoup sont redondantes : la taille en centimètres et la taille en pouces disent la même chose.

La réduction de dimension, dont l'analyse en composantes principales est la méthode classique, cherche un plus petit nombre de directions qui conservent l'essentiel de la variation des données. Cela sert à visualiser en deux dimensions ce qui en comptait cent, à accélérer les calculs, et souvent à réduire le bruit. C'est de l'algèbre linéaire pure, et c'est disponible en une ligne dans scikit-learn.


En trois phrases

L'algèbre linéaire sert à transformer les objets du monde en listes de nombres, ce qui permet de les comparer et de les traiter par milliers avec le même algorithme. Une matrice joue deux rôles : collection d'exemples, ou transformation qui convertit une description en une autre, ce second rôle étant exactement ce que fait une couche de réseau de neurones. Comme un produit matriciel est massivement parallèle, il explique à lui seul pourquoi les cartes graphiques sont devenues le matériel de l'IA.


SuiteLeçon 3 : le calcul différentiel, moteur de l'apprentissage →