Encodeur
- Explication du processus de conversion du texte en vecteurs et de l’ajout d’informations de position aux embeddings ainsi obtenus.
- L’objectif est de produire des embeddings qui capturent les informations sémantiques du texte d’entrée.
1. Embedding de texte
- Conversion de "Hello World" en vecteurs pour créer des embeddings.
- Attribution de valeurs arbitraires à chaque token pour générer un vecteur.
2. Encodage positionnel
- Ajout d’un encodage positionnel aux embeddings pour incorporer l’information de position des mots.
- Utilisation de vecteurs fixes pour attribuer à chaque position un motif numérique unique et cohérent.
3. Combinaison de l’encodage positionnel et des embeddings
- Addition de l’encodage positionnel et des embeddings pour créer une nouvelle matrice utilisée comme entrée de l’encodeur.
Self-attention
- Explication de l’attention, mécanisme qui permet au modèle de se concentrer sur des parties spécifiques de l’entrée.
- L’utilisation de l’attention multi-tête permet de se concentrer simultanément sur l’information dans différents espaces de représentation.
4.1 Définition des matrices
- Définition des matrices K, V et Q pour chaque tête d’attention.
4.2 Calcul des clés, requêtes et valeurs
- Calcul des matrices de clés, de requêtes et de valeurs en multipliant les embeddings d’entrée par les matrices de poids.
4.3 Calcul de l’attention
- Calcul du produit scalaire entre les requêtes et chaque vecteur clé, puis division du résultat par la racine carrée de la dimension des vecteurs clés.
- Application de la fonction softmax pour obtenir les poids d’attention.
- Multiplication de chaque vecteur de valeur par son poids d’attention.
Couche feed-forward
- L’encodeur contient un réseau de neurones feed-forward après la couche de self-attention.
- Ce réseau utilise deux transformations linéaires et la fonction d’activation ReLU.
5.1 Couche feed-forward de base
- La première couche linéaire étend la dimension de l’entrée, puis après application de la fonction d’activation ReLU, la seconde couche linéaire réduit la dimension à sa taille d’origine.
5.2 Combinaison de tout le processus de l’encodeur
- Écriture en code d’un bloc d’encodeur incluant l’attention multi-tête et la couche feed-forward.
5.3 Connexions résiduelles et normalisation de couche
- Les connexions résiduelles consistent à ajouter l’entrée de la couche à sa sortie, et la normalisation de couche est une technique qui normalise l’entrée de la couche.
L’avis de GN⁺
- Cet article explique des mathématiques complexes de manière simplifiée afin d’aider à comprendre le modèle des transformeurs sur le plan mathématique.
- Il aide en particulier à comprendre le fonctionnement du mécanisme de self-attention et du réseau de neurones feed-forward.
- En montrant comment des techniques comme les connexions résiduelles et la normalisation de couche contribuent à la stabilité et aux performances des réseaux de neurones, il apporte un éclairage sur les méthodes qui permettent de résoudre les problèmes d’apprentissage des réseaux profonds.
1 commentaires
Commentaires sur Hacker News
Le « mystère » des transformeurs, c’est qu’au lieu d’une séquence linéaire de poids et de valeurs statiques à chaque couche, ils utilisent 3 matrices différentes obtenues par multiplication de poids appris à partir de la même entrée, puis multiplient ces matrices entre elles. Cela permet davantage de traitement en parallèle, mais la formule d’attention reste très limitée parce qu’elle est statique.
Si vous voulez une approche plus sobre, plus formelle et plus concise, vous pouvez consulter « The Transformer Model in Equations » de John Thickstun. Tout tient sur une seule page en notation mathématique standard.
En lisant l’article, une question vient à l’esprit.
J’aimerais trouver un article ou un papier expliquant pourquoi les transformeurs, bien qu’ils fonctionnent simplement comme des « prédicteurs du token suivant », peuvent quand même traiter des mots ou des sous-mots/tokens absents du jeu de données d’entraînement.
Les tutoriels sur les transformeurs sont peut-être les nouveaux tutoriels sur les monades. C’est un concept difficile à comprendre, mais comme pour beaucoup de choses en informatique, il faut se battre avec l’idée et s’exercer sur des exemples pour y parvenir.
Je connais certains mots.
En tant que personne ayant déjà écrit une ANN from scratch sans utiliser TensorFlow, cette explication reste confuse.
J’aime bien le site web de Quarto. Je vois de plus en plus d’utilisateurs Python employer Quarto pour publier.
Je me demande si, à l’étape 7 du décodeur, il ne faudrait pas
Z_encoder_decoder = layer_norm(Z_encoder_decoder + Z_self_attention)au lieu deZ_encoder_decoder = layer_norm(Z_encoder_decoder + Z), et si unlayer_normn’a pas été omis à l’étape 8 du décodeur.Je me demande si les LLM utilisent des réseaux de neurones, et ce qui constitue exactement un « neurone ». Autrement dit, existe-t-il une structure de code sous-jacente correspondant au neurone, ou n’est-ce « que » des mathématiques complexes ?