Pilier 2

Opérations `élément-par-élément` vs produit matriciel

Idée

Quand on écrit A * B avec deux tableaux, le calcul se fait case par case (multiplication coordonnée a coordonnée).

Pourquoi

Quand on écrit A * B avec deux tableaux Numpy, le calcul se fait case par case (multiplication coordonnée a coordonnée), ce qui exige même forme. Pour combiner vraiment deux matrices au sens de l'algèbre linéaire (sommer des lignes contre des colonnes), il faut un autre symbole : @ ou np.dot. C'est la distinction entre le produit de Hadamard (terme a terme) et le produit matriciel usuel $\sum_k a_{ik} b_{kj}$ vu en spé. Confondre les deux est une erreur frequente. Le piège classique : oublier qu'A * B et A @ B sont deux opérations différentes — l'une exige même forme, l'autre exige formes compatibles.

Outil

Distinction produit de Hadamard (terme a terme) vs produit matriciel $\sum_k a_{ik} b_{kj}$ de l'algèbre linéaire MPSI.

Formule

Un produit scalaire $w \cdot x = w_1 x_1 + w_2 x_2 + \ldots + w_n x_n$ est la somme pondérée de toutes les entrées. Géométriquement, il mesure à quel point le vecteur $x$ pointe dans la direction de $w$ : si $w$ et $x$ sont alignés, le produit est grand ; orthogonaux, il vaut 0 ; opposés, négatif. C'est exactement ce dont un neurone a besoin : « Voici un patron $w$ que je cherche dans mes entrées ; à quel point l'entrée actuelle ressemble-t-elle à ce patron ? » Le résultat, un scalaire, est ensuite passé à une activation (seuil ou sigmoïde) pour décider 0 ou 1. Quand on a beaucoup de plantes à classer en parallèle, on ne fait pas $n$ produits scalaires un par un : on les empilé dans une matrice $X$ (une plante par ligne) et on calcule $X w$ d'un seul coup. C'est le produit matriciel — la version en bloc du produit scalaire.

Piège

L'erreur de débutant la plus courante : on écrit Z = X * W + b au lieu de Z = X @ W + b. Si les formes sont compatibles ou broadcasting-compatibles, Numpy ne lève aucune erreur — le calcul se fait élément par élément et le modèle 's'entraîne' sur des nombres absurdes. Pas d'exception, juste des résultats incorrects qui passent inaperçus jusqu'au moment où la loss diverge ou stagne.