Réseau feed-forward
Pourquoi c'est important
En profondeur
Le FFN standard : FFN(x) = W2 · activation(W1 · x + b1) + b2, où W1 projette de la dimension du modèle vers une dimension intermédiaire plus grande (typiquement 4x), la fonction d'activation introduit la non-linéarité, et W2 projette en retour vers la dimension du modèle. Chaque position (token) passe à travers cela indépendamment — le FFN ne voit pas les autres tokens, seule la couche d'attention le fait.
SwiGLU et variantes à portes
Les LLM modernes (LLaMA, Mistral, etc.) utilisent SwiGLU au lieu du FFN standard : SwiGLU(x) = (W1 · x · SiLU) ⊗ (W3 · x). Cela ajoute une troisième matrice de poids (W3) et un mécanisme de porte qui permet au réseau de contrôler quelle information passe. Malgré les paramètres supplémentaires, ça performe mieux à calcul équivalent, donc la dimension intermédiaire est ajustée à la baisse pour compenser. C'est un cas où un composant légèrement plus complexe améliore le système entier.
Stockage des connaissances
La recherche suggère que les couches FFN fonctionnent comme des mémoires clé-valeur : la première couche linéaire (W1) détecte des patterns dans l'entrée (clés), et la seconde couche linéaire (W2) associe ces patterns à des mises à jour de sortie (valeurs). « La tour Eiffel est à » active des neurones spécifiques dans W1, qui via W2 promeuvent le token « Paris ». Cette interprétation clé-valeur explique pourquoi les couches FFN stockent les connaissances factuelles et pourquoi les techniques d'édition de connaissances peuvent modifier des faits spécifiques en mettant à jour des poids FFN spécifiques.