Réseaux de neurones : fondations et mathématiques · 02 / 09
Algèbre linéaire essentielle
Vecteurs, produits scalaires et matrices, exactement ce qu'il faut pour parler aux réseaux de neurones dans leur langue.
Tu viens de voir au chapitre précédent que la formule du neurone s’écrit en notation vectorielle y=f(w⋅x+b). Ce chapitre installe les briques mathématiques cachées derrière cette notation. L’objectif : que tu lises w⋅x sans buter, et que tu comprennes ce que ça raconte géométriquement.
Le symbole Rn se lit « R puissance n » et désigne l’ensemble de toutes les listes ordonnées de n nombres réels. Chaque xi est appelée la i-ième coordonnée ou composante du vecteur.
Pourquoi des vecteurs en machine learning
Tout ce que tu peux décrire par une liste de nombres est un vecteur. Quelques exemples :
L’image d’un chiffre manuscrit de 28×28 pixels en niveau de gris : un vecteur de dimension 784 (chaque pixel donne une valeur entre 0 et 1).
Un patient médical caractérisé par âge, tension, glycémie, cholestérol : un vecteur de dimension 4.
Les entrées d’un neurone x1,x2,x3 que tu as vues au chapitre 1 : un vecteur de dimension 3.
Les poids d’un neurone forment eux aussi un vecteur, de la même dimension que les entrées. C’est cette correspondance qui rend le produit scalaire possible.
C’est une opération qui prend deux vecteurs et retourne un seul nombre. On la lit « x point w » ou « produit scalaire de x et w ».
Exemple chiffré
Reprenons l’exemple de l’arbitre de foot. C’est exactement la même somme pondérée que dans le chapitre 1, écrite cette fois avec la notation vectorielle :
x=(1,0,1),w=(0,8,0,5,0,9)
Le produit scalaire vaut :
x⋅w=1×0,8+0×0,5+1×0,9=1,7
C’est la somme pondérée du neurone, sans le biais. En ajoutant b=−0,5, on obtient bien z=1,7−0,5=1,2 comme au chapitre précédent.
Joue avec les coordonnées. Quand les flèches pointent dans la même direction, le produit scalaire est maximal. Quand elles sont perpendiculaires, il vaut zéro.
Figure : deux vecteurs et leur produit scalaire (interactif)
Plan 2D qui dessine deux vecteurs x=(1,2 ; 0,6) et w=(0,6 ; 1,2) depuis l'origine. Les curseurs bougent les pointes des deux vecteurs et affichent simultanément trois quantités : le produit scalaire x·w, les normes ‖x‖ et ‖w‖, et l'angle entre eux. Quand l'angle approche 90°, le produit scalaire tombe à zéro : les vecteurs sont orthogonaux.
Trois expériences à tenter :
Aligne les deux vecteurs sur la même direction (par exemple x=w). Le produit scalaire devient maximal, et égal à ∥x∥⋅∥w∥.
Place-les perpendiculairement (par exemple x=(1,0) et w=(0,1)). Le produit scalaire est exactement zéro.
Inverse la direction de w (mets w1 et w2 négatifs). Le produit scalaire devient négatif, car les flèches pointent dans des directions opposées.
Pour aller plus loin et démontrer que la formulation géométrique du produit scalaire n’est pas une définition tombée du ciel mais bien une conséquence de la définition algébrique, il nous faut d’abord deux outils : la norme d’un vecteur et une identité de calcul sur les normes. On les installe maintenant, puis on les utilisera dans la section sur l’inégalité de Cauchy-Schwarz.
Norme et distance
La norme (ou longueur) d’un vecteur x∈Rn est définie par le produit scalaire avec lui-même :
∥x∥=x⋅x=x12+x22+⋯+xn2
C’est la généralisation du théorème de Pythagore en n dimensions. En 2D, ∥(x1,x2)∥=x12+x22, soit la longueur de l’hypoténuse d’un triangle rectangle.
La distance entre deux vecteurs u et v est la norme de leur différence : ∥u−v∥. C’est ce qui te permet de mesurer « à quel point deux images se ressemblent » quand chaque image est représentée comme un vecteur.
Démonstration utile : l’identité du carré scalaire
Une propriété revient sans cesse en machine learning. On l’établit ici une fois pour toutes, à partir des définitions :
∥x+w∥2=∥x∥2+2x⋅w+∥w∥2
Cette identité, c’est exactement le théorème de Pythagore généralisé. Conséquence immédiate : si x et w sont orthogonaux (x⋅w=0), alors ∥x+w∥2=∥x∥2+∥w∥2. Pythagore dans toute sa splendeur, sans triangle ni angle droit explicite.
Cauchy-Schwarz, ou pourquoi la formule géométrique est légitime
Beaucoup de cours présentent la formule x⋅w=∥x∥∥w∥cos(θ) comme une seconde définition du produit scalaire, tombée du ciel. Ce n’est pas honnête. La bonne lecture est inverse : on définit le produit scalaire algébriquement (somme des produits coordonnée par coordonnée), on démontre une inégalité fondamentale, et c’est cette inégalité qui rend la formule géométrique légitime.
L’égalité a lieu si et seulement si les deux vecteurs sont colinéaires (l’un est un multiple scalaire de l’autre).
Maintenant qu’on a la borne ∣x⋅w∣≤∥x∥∥w∥, on peut diviser sans risque. Pour x,w non nuls, on définit :
cosθ:=∥x∥∥w∥x⋅w
Cette quantité est bien dans [−1,1] grâce à Cauchy-Schwarz. On peut donc l’identifier au cosinus d’un unique angle θ∈[0,π]. En réarrangeant, on récupère exactement la formule géométrique :
x⋅w=∥x∥∥w∥cos(θ)
Mais elle n’est plus un postulat mystérieux : c’est une conséquence directe de la définition algébrique et de Cauchy-Schwarz.
Les conséquences usuelles de la formule géométrique se lisent immédiatement sur la fonction cosinus :
Si θ=0 (vecteurs alignés dans le même sens), cos(θ)=1 : produit scalaire maximal.
Si θ=90° (vecteurs perpendiculaires), cos(θ)=0 : produit scalaire nul.
Si θ=180° (vecteurs opposés), cos(θ)=−1 : produit scalaire minimal.
Géométriquement, le produit scalaire mesure à quel point deux vecteurs pointent dans la même direction, pondéré par leurs longueurs. C’est exactement ce que veut savoir un neurone : « mes entrées ressemblent-elles à mes poids ? »
En machine learning, l’inégalité de Cauchy-Schwarz garantit aussi que tu peux toujours normaliser un produit scalaire par les longueurs pour obtenir une mesure dans [−1,1], appelée similarité cosinus. C’est l’outil de base pour comparer deux représentations vectorielles, par exemple deux embeddings de mots ou de phrases.
Transposée et produit matriciel
Avant d’empiler les neurones pour former une couche, il manque deux opérations matricielles qui reviendront partout dans les réseaux profonds : transposer une matrice et multiplier deux matrices entre elles. Ces deux opérations sont la suite directe du produit scalaire vu plus haut.
La transposée
La transposée d’une matrice A∈Rm×n, notée AT, est la matrice obtenue en échangeant ses lignes et ses colonnes. Formellement :
AT∈Rn×mavec(AT)ij=Aji
Exemple concret avec une matrice 2×3 qui devient 3×2 :
A=(142536)⟹AT=123456
La première ligne de A devient la première colonne de AT, et ainsi de suite.
Le produit matrice-matrice
Le produit matriciel généralise le produit matrice-vecteur. Pour A∈Rm×n et B∈Rn×p, leur produit AB appartient à Rm×p et a pour coefficients :
(AB)ij=k=1∑nAikBkj
Condition de compatibilité : le nombre de colonnes de A doit être égal au nombre de lignes de B (ici n dans les deux cas). Sinon, le produit n’est pas défini.
Une règle qui revient sans cesse en machine learning : la transposée d’un produit est égale au produit des transposées dans l’ordre inverse.
(AB)T=BTAT
C’est une démonstration courte par comparaison directe des coefficients.
Étape 1. On compare les coefficients (i,j) des deux matrices. Par définition de la transposée :
((AB)T)ij=(AB)ji
Étape 2. Par définition du produit matriciel :
(AB)ji=k=1∑nAjkBki
Étape 3. Dans cette somme, on reconnaît des coefficients transposés : Ajk=(AT)kj et Bki=(BT)ik. On réécrit :
k=1∑nAjkBki=k=1∑n(BT)ik(AT)kj
Noter l’inversion de l’ordre : BT vient avant AT et leurs indices s’enchaînent correctement (ce sont eux qui partagent l’indice de sommation k).
Étape 4. Cette somme est exactement le coefficient (i,j) du produit BTAT :
k=1∑n(BT)ik(AT)kj=(BTAT)ij
Résultat. Pour tous i,j, ((AB)T)ij=(BTAT)ij, donc les deux matrices sont égales : (AB)T=BTAT. ∎
Maintenant qu’on a la transposée et le produit matrice-matrice, on peut enfin empiler les neurones d’une couche dans une seule matrice et écrire la sortie complète d’un coup.
L’élément wji se lit « ligne j, colonne i ». Chaque ligne, prise comme un vecteur de dimension n, est elle-même un vecteur de Rn.
Du vecteur à la couche entière
Une seule couche de m neurones, chacun ayant n entrées, peut s’écrire en utilisant une matrice de poids W∈Rm×n. Chaque ligne wj de W contient les poids du j-ième neurone.
Pour calculer toutes les sorties de la couche d’un coup, on utilise la multiplication matrice-vecteur :
Wx=w1⋅xw2⋅x⋮wm⋅x
C’est une opération qui prend un vecteur et en retourne un autre, où chaque coordonnée du résultat est un produit scalaire. On en reparlera en détail au chapitre 5 quand on construira un réseau multi-couches.
En une phrase
Un vecteur est une liste ordonnée de n nombres. Le produit scalaire de deux vecteurs est la somme de leurs produits coordonnée par coordonnée. Et un neurone calcule exactement ce produit scalaire entre ses entrées et ses poids, avec un biais ajouté.
Vers le chapitre 3
Le neurone ne s’arrête pas au produit scalaire : il applique ensuite une fonction d’activationf pour transformer le résultat brut en valeur interprétable. Au chapitre 1 on l’a survolée, au chapitre 2 on a posé les briques mathématiques autour. Le chapitre 3 t’apporte enfin la pièce qui manque.
Tu vas y voir, démonstration matricielle à l’appui, que l’absence de non-linéarité fait s’effondrer un empilement de matrices en une seule. Concrètement, si une première couche calcule h=W1x et une seconde y=W2h, alors :
y=W2(W1x)=(W2W1)x
Grâce au produit matrice-matrice que tu viens d’apprendre, W2W1 est une seule matrice. Deux couches sans activation se réduisent donc à une seule. C’est le théorème central du chapitre 3, et il justifie à lui seul l’existence des fonctions d’activation non linéaires (sigmoïde, ReLU, tanh) que tu apprendras à comparer et à choisir.
Exercices
Exercice 1 : calculer un produit scalaire
Soit x=(2,−1,3) et w=(1,4,−2). Calculer x⋅w.
Exercice 2 : norme d’un vecteur
Calculer la norme du vecteur u=(3,4) en utilisant la définition.
Exercice 3 : produit scalaire et orthogonalité
Trouver une valeur de a telle que les vecteurs x=(a,1) et w=(2,1) soient orthogonaux (produit scalaire nul).
Exercice 4 : démontrer (AB)T=BTAT sur du concret
Soit A=(1324) et B=(0111).
(a) Calculer AB.
(b) Calculer (AB)T.
(c) Calculer AT et BT.
(d) Calculer BTAT.
(e) Vérifier que (AB)T=BTAT.
Sources
Anton, H. & Rorres, C. (2010). Elementary Linear Algebra, 10e édition. Wiley. Chapitres 1 à 3 pour la base.
Strang, G. (2016). Introduction to Linear Algebra, 5e édition. Wellesley-Cambridge Press. Cours en ligne MIT OCW gratuit et excellent.
Pour aller plus loin
Strang, G. (cours en ligne MIT 18.06 Linear Algebra). Vidéos accessibles à tout niveau, le standard de l’enseignement de l’algèbre linéaire dans les grandes écoles. ocw.mit.edu
3Blue1Brown, série Essence of Linear Algebra. Visualisations remarquables des concepts clés, francophone via les sous-titres. youtube.com/playlist
Goodfellow, I., Bengio, Y. & Courville, A. (2016). Deep Learning. MIT Press. Chapitre 2 sur l’algèbre linéaire spécifique au ML. deeplearningbook.org
Lay, D. C., Lay, S. R. & McDonald, J. J. (2021). Linear Algebra and Its Applications, 6e édition. Pearson. Référence classique pour l’algèbre linéaire appliquée, équilibrée entre théorie et exercices.
Axler, S. (2024). Linear Algebra Done Right, 4e édition. Springer. Approche conceptuelle qui évite les déterminants jusqu’au plus tard possible et insiste sur la structure des espaces vectoriels. PDF gratuit en open access
Quiz
1. Que représente le produit scalaire de deux vecteurs ?
2. Si deux vecteurs sont orthogonaux, leur produit scalaire vaut :
3. La norme d'un vecteur x = (x₁, x₂, ..., xₙ) est :
4. Pourquoi les poids d'un neurone ont-ils la même dimension que ses entrées ?
5. Que calcule l'opération matrice-vecteur W·x où W est de taille m×n et x de dimension n ?
6. Si A est une matrice 3×4 et B une matrice 4×2, quelle est la dimension du produit AB ?
Quiz : récapitulatif du chapitre 2 (interactif)
Quiz à choix multiples qui vérifie les acquis du chapitre : le produit scalaire vectoriel, la formulation géométrique x·w = ‖x‖ ‖w‖ cos(θ), l'orthogonalité, le produit matrice-vecteur et la dimension du produit matrice-matrice. À faire en ligne pour le scoring automatique.