Aller au contenu
English

Pourquoi l'ordre des mots et le contexte comptent

  • Leçon 16
  • 45 min
  • Module 5 : Représenter les séquences et le sens

Ce que vous saurez faire

Voyez exactement où le comptage des mots échoue : sur les billets dont l’équipe dépend de l’ordre et des mots voisins. C’est le problème que l’attention, dans la prochaine leçon, vise à résoudre.

Carnet JupyterMêmes mots, même entrée : vérifiez dans un carnetColab · Kaggle · GitHub · en anglais

Le carnet (notebook) Jupyter construit les sacs de mots de deux billets inventés et vérifie qu’ils sont identiques. Il compte les paires et les triplets de mots. Il entraîne aussi le réseau à sac de mots pour lister, par style, les billets de validation mal acheminés. Environ 25 minutes.

Le carnet est en anglais. Colab et Kaggle ouvrent votre propre copie. Il faut un compte Google ou Kaggle gratuit. Vous êtes bloqué ? Consultez le carnet de solution.

Avant de commencerCe qu’il faut savoir et avoir sous la mainEnviron 45 minutes

Ce que vous devez savoir

  • Le sac de mots, présenté dans La propagation avant : un billet devient un compte pour chaque mot du vocabulaire.
  • Les jetons (tokens), les plongements (embeddings) et le réseau à moyenne de plongements, présentés dans Jetons et plongements.
  • La politique d’acheminement de Grace et ses deux limites, présentées dans Ce qu’est l’apprentissage profond : bris à l’arrivée ou après utilisation; remboursement avant ou après la confirmation du retour.

Ce qu’il vous faut sur votre ordinateur

  • Un navigateur. Le carnet s’ouvre dans Colab ou Kaggle avec PyTorch déjà installé.
  • Pour travailler localement : le dossier ticket-router de Installer PyTorch : option 2. Le code poursuit celui de Jetons et plongements. Exécutez donc d’abord tokens_and_ids.py : il crée vocab.

Votre collègue vous envoie un message : « Appelez-moi, ne textez pas. » Une heure plus tard, un autre : « Textez-moi, n’appelez pas. » Les deux messages utilisent exactement les mêmes mots. Si vous comptiez seulement les mots, vous ne pourriez pas les distinguer. Pourtant, ils demandent des choses opposées.

Les gens lisent les mots dans l’ordre, et chaque mot change le sens des mots voisins. Dans le premier message, la négation porte sur « textez »; dans le second, elle porte sur « appelez ». Un sac de mots garde les mots et élimine leur ordre.

Depuis le module 2, chaque système d’acheminement du cours lit un billet comme un sac de mots ou une moyenne de plongements. Les deux oublient l’ordre. Ils acheminent quand même correctement la plupart des billets. Le réseau à sac de mots réussit pour 97,3 % des billets de validation après 20 époques. D’où viennent donc ses erreurs?

Chaque billet de validation a un style, qui indique comment il a été rédigé. Le style ne sert jamais d’entrée au modèle. Il permet seulement de mesurer où le modèle échoue. Le graphique montre la proportion de billets mal acheminés par le réseau à sac de mots, pour cinq styles.

  • Les mots de la demande décident
  • L'ordre ou les autres mots comptent
Le réseau à sac de mots sur les billets de validation, après 20 époques, selon leur style de rédaction. Il ne se trompe jamais sur les billets simples. Il échoue sur les limites, les négations, les billets à deux sujets et les billets longs.
Description textuelle du graphique

Proportion de billets de validation mal acheminés par le réseau à sac de mots, selon le style. Billets simples : 0 sur 145 (0 %). À une limite de la politique : 3 sur 131 (2,3 %). Avec une négation : 2 sur 38 (5,3 %). Deux sujets, avec un problème résolu en premier : 5 sur 52 (9,6 %). Billets longs : 4 sur 21 (19,0 %).

Le réseau à moyenne de plongements échoue sur presque les mêmes billets. Il fait 19 erreurs au total. Les nombres sont les mêmes pour les limites (3), les négations (2), les billets à deux sujets (5) et les longs (4). Regardez maintenant les 46 billets dont la vraie demande apparaît dans la dernière phrase (« demande à la fin »). Les deux réseaux les acheminent tous correctement. La position seule n’est pas le problème. Le problème commence quand les autres mots indiquent une autre équipe. Les billets longs ont un deuxième problème : le cours coupe chaque billet après 120 jetons. La fin d’un très long billet est donc perdue.

Voici quatre vrais billets, raccourcis.

T-64746, une négation. Grace : retours. « Je **n’**appelle pas pour un article défectueux et je ne demande pas de remboursement. L’ensemble de patio en rotin est simplement trop grand pour que je l’apporte à un point de dépôt. Pourriez-vous organiser une collecte pour le retour? » Sac de mots : paiement (57 %). Moyenne de plongements : paiement (56 %). Le client dit « pas … remboursement », mais le compte de « remboursement » reste le même avec ou sans « pas ».

T-64813, deux sujets. Grace : paiement. « Plus tôt ce mois-ci, un retour que j’avais envoyé a été remboursé rapidement … On m’a facturé deux fois ma commande de sécateur … et j’aimerais faire annuler un des paiements, s’il vous plaît. » Sac de mots : retours (98 %). Moyenne de plongements : retours (98 %). Le retour résolu vient en premier; la vraie demande vient ensuite. Les comptes ne permettent pas de savoir quel sujet est réglé.

T-65219, à une limite. Grace : livraison. « L’escabeau … a un pied fissuré … il semble défectueux et dangereux à utiliser. Il était déjà brisé au déballage, quand je l’ai ouvert le jour de son arrivée. » Sac de mots : garantie (83 %). Moyenne de plongements : garantie (64 %). « Fissuré » et « défectueux » orientent vers la garantie. Seuls les mots voisins, « au déballage … le jour de son arrivée », indiquent « à l’arrivée ».

T-65176, deux sujets. Grace : compte. « Le mois dernier, ma livraison a été laissée à la mauvaise maison, et vous avez organisé un remplacement … Mais je n’arrive toujours pas à accéder à mon compte pour vérifier ma commande de housses de coussin. Pourriez-vous m’aider? » Sac de mots : livraison (87 %). Moyenne de plongements : livraison (84 %). Le problème de livraison réglé contient plus de mots que le problème de compte encore ouvert.

Attention à la conclusion que vous en tirez. Le modèle linéaire du cours Apprentissage automatique : du problème à un modèle fiable lit aussi un sac de mots. Il achemine correctement trois de ces quatre billets. Il échoue seulement sur T-65176. Toutes les erreurs ne viennent donc pas de la perte de l’ordre : deux modèles peuvent pondérer différemment les mêmes comptes. Pour voir l’effet de l’ordre seul, il faut deux billets qui contiennent exactement les mêmes mots.

Ces deux billets sont inventés pour cette leçon; aucun client ne les a écrits. Ils utilisent exactement les mêmes 14 jetons, dans un ordre différent. La politique de Grace les envoie à des équipes différentes.

  • A : « La lampe était endommagée à l’arrivée, pas après un mois d’utilisation. » → livraison
  • B : « La lampe était endommagée après un mois d’utilisation, pas à l’arrivée. » → garantie

Construisez leurs sacs de mots et comparez-les. Le code utilise vocab de Jetons et plongements. La fonction bag_of_words() de ticketnet.py produit les comptes de La propagation avant :

same_bag.py
import torch
from ticketnet import bag_of_words, tokenize
a = "The lamp was damaged on arrival, not after a month of use."
b = "The lamp was damaged after a month of use, not on arrival."
xa = bag_of_words([{"text": a}], vocab)
xb = bag_of_words([{"text": b}], vocab)
print(xa.shape, "tokens:", int(xa.sum()), "| the same input:", torch.equal(xa, xb))

La sortie :

torch.Size([1, 2864]) tokens: 14 | the same input: True

torch.equal vérifie que deux tenseurs ont la même forme et les mêmes nombres. C’est le cas : A et B sont la même entrée. Un réseau est une fonction de son entrée. La même entrée donne toujours la même sortie. Le réseau à sac de mots entraîné doit donc donner la même réponse pour A et B. Le schéma montre sa réponse.

Deux billets inventés. A : la lampe était endommagée à l'arrivée, pas après un mois d'utilisation; la politique de Grace indique livraison. B : la lampe était endommagée après un mois d'utilisation, pas à l'arrivée; la politique de Grace indique garantie. Les deux deviennent le même sac de mots : chacun de leurs 14 mots une fois, tous les autres mots à 0. Le réseau à sac de mots donne la même réponse pour les deux : garantie 59,4 %, livraison 38,0 %. Correct pour B, incorrect pour A.
Deux billets inventés contenant les mêmes mots deviennent la même entrée. La réponse du réseau est réelle : quoi qu'il apprenne, il doit répondre de la même façon à A et B.
Description textuelle du diagramme

Deux billets inventés. Le billet A dit : « La lampe était endommagée à l’arrivée, pas après un mois d’utilisation. » La politique de Grace l’envoie à la livraison, car le bris était présent à l’arrivée. Le billet B dit : « La lampe était endommagée après un mois d’utilisation, pas à l’arrivée. » La politique de Grace l’envoie à la garantie. Les deux billets deviennent le même sac de mots de 2 864 comptes : the, lamp, was, damaged, on, arrival, not, after, a, month, of, use, la virgule et le point, une fois chacun, et tous les autres mots à 0. Le réseau à sac de mots entraîné donne la même réponse pour les deux billets : garantie 59,4 %, livraison 38,0 %. C’est correct pour B et incorrect pour A. Aucun entraînement ne peut corriger cela, car l’entrée est la même.

Ce n’est pas une faiblesse propre à ce réseau. Chaque modèle qui lit seulement les comptes doit répondre de la même façon à A et B. Cela inclut le réseau à moyenne de plongements et le modèle linéaire du cours Apprentissage automatique : du problème à un modèle fiable. Pour toute paire semblable, au moins une des deux réponses est incorrecte.

Deux autres paires inventées montrent la même chose. Chaque paire a le même sac de mots, et le réseau entraîné donne une seule réponse pour chaque paire.

Billet inventé Équipe de Grace Réseau à sac de mots
Ce n’est pas au sujet de mon compte, c’est au sujet du colis en retard. livraison livraison (89,8 %)
Ce n’est pas au sujet du colis en retard, c’est au sujet de mon compte. compte livraison (89,8 %)
Le problème de mot de passe est résolu. La double facturation sur ma carte reste à régler. paiement retours (66,9 %)
La double facturation sur ma carte est résolue. Le problème de mot de passe reste à régler. compte retours (66,9 %)

La dernière paire reçoit la réponse « retours », incorrecte pour les deux billets. Ces phrases inventées sont plus courtes que les vrais billets. Le réseau a donc peu d’indices. Mais le point principal ne dépend pas de la réponse : les deux entrées sont identiques.

Le contexte : le sens d’un mot dépend de ses voisins

Section intitulée « Le contexte : le sens d’un mot dépend de ses voisins »

Les paires montrent une deuxième idée. Un mot n’a pas un seul sens fixe dans un billet. « Endommagée » signifie « à l’arrivée » ou « après utilisation », selon les mots voisins. « Remboursement » signifie « ma demande » dans une phrase et « résolu, merci » dans une autre. « Pas » change le sens du mot qui suit.

Un bon lecteur de billets fait donc deux choses. Il garde l’ordre des mots. Et il permet à chaque mot de tirer son contexte des autres mots pertinents, proches ou éloignés. Un compte donne à chaque mot une contribution fixe, peu importe ce qui l’entoure. Une moyenne de plongements fait la même chose avec une ligne fixe par mot.

Une idée simple garde un peu d’ordre : compter de courtes suites de mots voisins, en plus des mots seuls. Une suite de n jetons voisins est un n-gramme : n est la longueur de la suite. Les paires sont des bigrammes (« à l’arrivée », « pas après »), et les triplets sont des trigrammes (« endommagée à l’arrivée »).

Les bigrammes distinguent la paire de billets sur la lampe. Le billet A contient les paires « damaged on », « arrival , », « not after » et « use . »; le billet B ne les contient pas. Mais ils ne distinguent pas la paire sur le mot de passe :

ngrams.py
from collections import Counter
def ngrams(text, n):
t = tokenize(text)
return Counter(tuple(t[i:i + n]) for i in range(len(t) - n + 1))
c = "The password problem is solved. The double charge on my card is still open."
d = "The double charge on my card is solved. The password problem is still open."
for n in (1, 2, 3):
print(n, "| lamp pair, same:", ngrams(a, n) == ngrams(b, n), "| password pair, same:", ngrams(c, n) == ngrams(d, n))
print(sorted(ngrams(a, 2) - ngrams(b, 2)))

La sortie :

1 | lamp pair, same: True | password pair, same: True
2 | lamp pair, same: False | password pair, same: True
3 | lamp pair, same: False | password pair, same: False
[('arrival', ','), ('damaged', 'on'), ('not', 'after'), ('use', '.')]

Dans la paire sur le mot de passe, les mots qui changent le sens sont « solved » et « still open ». Ils se trouvent deux mots après « problem » et « card ». Chaque paire de voisins apparaît dans les deux billets. Seuls des triplets comme « problem is solved » les distinguent. Quelle que soit la fenêtre choisie, une phrase peut placer le mot important juste à l’extérieur.

Et chaque fenêtre plus longue coûte cher. Comptez seulement les n-grammes qui apparaissent au moins deux fois dans les billets d’entraînement, comme le vocabulaire le fait pour les mots :

Le vocabulaire des 4 696 billets d'entraînement avec les mots seuls, puis les paires ajoutées, puis les triplets ajoutés. Sa taille est multipliée par environ 7, puis par 17.
Description textuelle du graphique

Taille du vocabulaire des billets d’entraînement, en comptant les entrées qui apparaissent au moins deux fois. Mots seuls : 2 864. Mots et paires de mots : 19 312. Mots, paires et triplets : 47 438.

Les coûts, en chiffres réels :

  • Plus de poids. Le réseau à sac de mots a 183 685 paramètres avec les mots. Avec les paires, il en faut 1 236 357; avec les triplets, 3 036 421, pour les mêmes 4 696 billets.
  • Plus d’entrées jamais vues. Parmi les paires des billets de validation, 11,8 % ne sont jamais apparues deux fois pendant l’entraînement. C’est aussi le cas de 33,4 % des triplets. Un nouveau billet utilise souvent une paire que le modèle n’a jamais vue. Cette paire ne compte alors pour rien.

Est-ce utile? Un peu. Avec le modèle linéaire du cours Apprentissage automatique : du problème à un modèle fiable, l’exactitude de validation passe de 98,8 % (mots) à 99,3 % (paires) et 99,5 % (triplets). Les erreurs sur les billets à deux sujets passent de 6 à 3, puis à 2. Cela représente 3 ou 4 billets sur 600. Et sur les trois paires inventées, les modèles à n-grammes donnent encore la même équipe aux deux billets de chaque paire. Des entrées différentes permettent une réponse différente; elles ne la garantissent pas.

Avant 2017, la solution habituelle était un réseau récurrent. Il lit un billet un mot à la fois, comme une personne qui lit à voix haute. Il garde un résumé qu’il met à jour : un vecteur modifié après chaque mot. À la fin, le résumé passe à la couche de sortie. Un réseau récurrent voit l’ordre, mais son résumé a une taille fixe. Les premiers mots s’effacent donc à mesure que le texte s’allonge. Il doit aussi lire les mots un après l’autre, ce qui est lent pour les longs textes. Des versions améliorées, comme le LSTM, conservaient les premiers mots plus longtemps, mais les deux problèmes demeuraient. Aujourd’hui, la plupart des modèles de texte utilisent plutôt l’attention.

Rassemblez les idées. Pour acheminer T-64813, le mot « charged » doit compter plus que « refunded », car « refunded » appartient à une histoire terminée. Pour acheminer le billet B, « damaged » doit lire « after a month of use ». Et « not » doit se rattacher à « on arrival », quatre mots plus loin. Pour acheminer T-65176, le réseau doit voir que « still can’t » appartient au problème de compte. Dans chaque cas, un mot a besoin d’information provenant de certains autres mots, choisis selon leur sens, à n’importe quelle distance.

C’est exactement ce que la prochaine leçon construit : l’attention. Chaque mot regarde tous les autres mots, donne un poids à chacun et prend une moyenne pondérée de leur information. Les poids viennent des mots eux-mêmes. Ils changent donc d’un billet à l’autre.

Soyez réaliste quant aux résultats attendus. Le minuscule transformeur du cours, construit avec l’attention, lit bien l’ordre. Sur les paires inventées, il donne des réponses différentes aux deux billets de chaque paire. Mais il a raison pour seulement 2 des 6 billets. Sur les vrais billets de validation, il en achemine correctement 94,3 %, moins que le réseau à sac de mots. Mélangez les mots de chaque billet de validation : il perd seulement 1 point, pour atteindre 93,3 %. Sur ces billets, il utilise à peine l’ordre. Environ 4 700 billets ne suffisent pas pour apprendre une langue à partir de rien. Le module 6 construit ce transformeur, et le module 7 montre ce qu’ajoute le préentraînement.

Quand utiliser les comptes de mots, et ce qu’ils coûtent

Section intitulée « Quand utiliser les comptes de mots, et ce qu’ils coûtent »

Les comptes de mots sont le bon outil quand les mots déterminent l’équipe. Sur les billets de Larkfield, c’est le cas la plupart du temps. Le modèle linéaire en achemine correctement 98,8 % et reste le système d’acheminement de Larkfield. Les comptes sont rapides, peu coûteux et faciles à expliquer.

Leur coût est une limite certaine, pas aléatoire. L’ordre compte dans les négations, les billets à deux sujets et ceux à une limite de la politique. Évaluez votre système d’acheminement sur ces styles, pas seulement sur l’ensemble. Ajoutez des n-grammes si quelques points comptent et si vous avez assez de données. Vérifiez aussi la taille du vocabulaire. Pour les textes où l’ordre compte beaucoup, comme les longs billets à plusieurs sujets, il faut un modèle qui lit l’ordre et le contexte.

Exercice guidé : prouver que l’entrée est la même

Section intitulée « Exercice guidé : prouver que l’entrée est la même »
  1. Ouvrez le carnet et exécutez les cellules de configuration.
  2. Exécutez la section « Same words, same input » (mêmes mots, même entrée). Elle construit les sacs de mots des billets A et B.
  3. Vérifiez la sortie : the same input: True (la même entrée : vrai).
  4. Exécutez la section « Count pairs and triples » (compter les paires et les triplets). Trouvez le premier n pour lequel chaque paire inventée diffère.
  5. Exécutez la section « Where the network fails » (où le réseau échoue). Elle entraîne le réseau à sac de mots pendant 20 époques et liste ses billets de validation mal acheminés par style.

Sortie attendue à l’étape 4, comme dans la leçon : la paire sur la lampe diffère à n = 2, celle sur le mot de passe à n = 3. L’étape 5 liste 16 billets mal acheminés : 5 à deux sujets, 4 longs, 3 à une limite, 2 avec négation, 1 avec un élément distrayant et 1 court.

Montrez pourquoi la réponse doit être « la même entrée »

bag_of_words compte chaque jeton du vocabulaire. A et B ont les mêmes 14 jetons, chacun une fois. Les 2 864 comptes sont donc égaux. Le tenseur ne stocke jamais l’ordre des mots. Le réseau calcule sa sortie uniquement à partir de ce tenseur. Il ne peut donc pas répondre différemment à A et B, quels que soient ses poids.

Écrivez deux courts billets de soutien avec les mêmes mots dans un ordre différent. La politique de Grace doit les envoyer à des équipes différentes. Utilisez seulement des mots courants pour qu’aucun jeton (token) ne devienne <unk> (inconnu). Faites d’abord une prédiction : leur sac de mots est-il identique? Leurs paires de mots sont-elles identiques? Vérifiez ensuite les deux dans le carnet (notebook) Jupyter.

Afficher un exemple de réponse

« Ma carte a été débitée, pas mon compte bloqué. » (paiement) et « Mon compte a été bloqué, pas ma carte débitée. » (compte). Le sac de mots est identique (True, vrai), et les paires de mots diffèrent (False, faux). « carte a » se trouve seulement dans le premier billet. Toute paire que vous écrivez avec les mêmes mots donne True pour le sac de mots. Les paires diffèrent ou non selon l’endroit où vous avez déplacé les mots.

Erreur courante

Une meilleure exactitude prise comme preuve que l'ordre est traité

Symptôme : Tomás ajoute des paires et des triplets de mots au modèle linéaire. L’exactitude sur les données de validation passe de 98,8 % à 99,5 %. Il dit à Grace que « le problème de l’ordre est réglé ». Puis Grace essaie les billets inventés sur la lampe : les deux vont encore à l’équipe de garantie.

Cause : un gain de 0,7 point représente 4 billets sur 600. Il en dit peu sur les négations ou les billets à deux sujets. Les n-grammes ne voient qu’une courte fenêtre. Ils aident seulement avec les paires et les triplets vus pendant l’entraînement. Un tiers des triplets de validation n’avaient jamais été vus deux fois pendant l’entraînement.

Solution : testez directement l’ordre. Évaluez le système de routage par style (négation, deux sujets, frontière). Gardez un petit ensemble de paires inventées avec les mêmes mots, destinées à des équipes différentes. Vérifiez que le modèle les distingue. Indiquez aussi le coût : ici, 47 438 entrées de vocabulaire au lieu de 2 864.

Vérifiez votre compréhension

Pourquoi tout modèle à sac de mots doit-il donner la même réponse à « endommagé à l'arrivée, pas après un mois d'utilisation » et à « endommagé après un mois d'utilisation, pas à l'arrivée »?

Afficher la réponse

Les deux phrases ont exactement les mêmes jetons, chacun une seule fois. Leurs sacs de mots sont donc identiques : les 2 864 comptes sont égaux. Un modèle calcule sa sortie uniquement à partir de son entrée. La même entrée donne toujours la même sortie. Tout modèle qui lit seulement les comptes donne donc la même réponse aux deux phrases, quels que soient ses poids. La politique de Grace les envoie à des équipes différentes (livraison et garantie). Une réponse est donc toujours fausse.

Vérifiez votre compréhension

Le réseau à sac de mots classe correctement les 46 billets de style « demande à la fin ». Il classe mal 5 des 52 billets de style « deux sujets ». Les deux styles placent la vraie demande à la fin. Pourquoi cette différence?

Afficher la réponse

La position de la demande seule ne compte pas pour un sac de mots, car il ignore la position. Dans les billets « demande à la fin », les autres mots ne désignent pas clairement une autre équipe. Les mots de la demande décident donc du classement. Dans les billets « deux sujets », un problème résolu par une autre équipe vient d’abord, avec les mots de cette équipe. Les comptes contiennent alors des mots fortement associés à deux équipes. Le réseau ne peut pas distinguer le sujet réglé du sujet encore ouvert.

Vérifiez votre compréhension

Faites une prédiction : Tomás ajoute des paires de mots (bigrammes) pour distinguer la paire sur le mot de passe : « Le problème de mot de passe est réglé. Le double débit sur ma carte reste ouvert. » et sa version inversée. Est-ce que cela fonctionne? Quel est le coût?

Afficher la réponse

Cela ne fonctionne pas : les deux billets ont exactement les mêmes paires de mots. En anglais, deux mots séparent « solved » (réglé) et « still open » (encore ouvert) de « problem » (problème) et « card » (carte). Seuls les triplets les distinguent. Le coût est élevé. Avec les paires, le vocabulaire passe de 2 864 à 19 312 entrées. Le réseau à sac de mots passe de 183 685 à 1 236 357 paramètres. Parmi les paires de validation, 11,8 % n’avaient jamais été vues deux fois pendant l’entraînement.

Récapitulatif

  • Un sac de mots et une moyenne de plongements (embeddings) éliminent tous deux l’ordre des mots. Le réseau à sac de mots échoue surtout sur les billets longs (19,0 %) et ceux à deux sujets (9,6 %). Viennent ensuite les négations (5,3 %) et les frontières (2,3 %). Il n’échoue jamais sur les billets simples.
  • Deux billets inventés avec les mêmes mots reçoivent la même entrée (torch.equal vaut True). Tout modèle basé sur les comptes leur donne donc la même réponse, et l’une des deux est fausse.
  • Le sens d’un mot dépend de son contexte : « endommagé » a besoin de « à l’arrivée » ou « après utilisation ». « Remboursement » peut désigner une demande ou une histoire terminée.
  • Les n-grammes conservent l’ordre dans une courte fenêtre. Ils aident un peu (98,8 % → 99,5 % pour le modèle linéaire). Mais ils multiplient le vocabulaire par 7 à 17, et beaucoup de nouvelles paires n’ont jamais été vues.
  • Les réseaux récurrents lisent mot par mot, mais oublient les premiers mots et sont lents. L’attention permet à chaque mot de choisir quels autres mots lire, quelle que soit la distance.

Ensuite, construisez l’attention à la main avec trois mots et deux nombres par mot. Examinez ensuite les vrais poids d’attention du tout petit transformeur du cours.

Leçon suivante : L'attention étape par étape