Aller au contenu
Apprendre.
  • M1 · toutes les matières15 matières : Préparation de données, API & sécurité, CI/CD, Docker, Merise, Dataviz, KNIME, ML appliqué : projet LoL, SQL & UML, SQL avancé, Machine Learning, Git, IA frugale & responsable, Qualité des données, MathématiquesAnnée
  • M2 · toutes les matières4 matières : Deep Learning, AI Act, Comex & Fundraising, Gouvernance & DataMeshAnnée
  • Deep LearningM2 · 4 modules · Réseaux de neurones, CNN, texte, modèles génératifs.Matière
  • Préparation de donnéesM1 · 3 modules · Nettoyer, transformer et fusionner des données avec Python.Matière
  • API & sécuritéM1 · 2 modules · Consommer, concevoir et sécuriser des API.Matière
  • CI/CDM1 · 1 module · Intégration et livraison continues.Matière
  • DockerM1 · 3 modules · Conteneurs, images, volumes, réseaux, Compose.Matière
  • MeriseM1 · 2 modules · Modéliser une base : MCD, MLD, MPD.Matière
  • DatavizM1 · 2 modules · Visualiser pour comprendre et décider.Matière
  • KNIMEM1 · 1 module · Explorer et nettoyer des données en workflow.Matière
  • ML appliqué : projet LoLM1 · 2 modules · Du besoin métier au POC de vision par ordinateur.Matière
  • SQL & UMLM1 · 3 modules · Modèles UML et requêtes SQL.Matière
  • SQL avancéM1 · 3 modules · Jointures, fenêtres, CTE, optimisation.Matière
  • Machine LearningM1 · 3 modules · Régression, classification, segmentation, projet.Matière

↑↓ naviguer↵ ouvre le résultat en surbrillanceesc fermer

Partie 4

Lire mot après mot (RNN, LSTM)

La moyenne des embeddings donnait [0,67 ; 0,67] pour « fièvre sans toux » comme pour « toux sans fièvre » : elle ignore l'ordre. Un réseau récurrent (RNN) lit les tokens un par un et garde un état h(t), un nombre (ou un vecteur) qui résume tout ce qui a été lu jusqu'au token t.

h(t) = w × h(t − 1) + u · x(t), avec h(0) = 0. x(t) est l'embedding du t-ième token, u · x(t) un produit scalaire, et w, u sont des poids appris, les mêmes à chaque token (comme un filtre de J2 à chaque position). Ici : w = 0,5 et u = [2 ; −1].

Change l'ordre des mots : les tokens et les poids sont identiques, mais l'état final change. « fièvre sans toux » → 1, « toux sans fièvre » → 1,75.

À faire à la main : u · x vaut 2 pour « fièvre » ([1 ; 0]), −1 pour « sans » ([0 ; 1]) et 1 pour « toux » ([1 ; 1]). Tu vas écrire la boucle qui enchaîne les mises à jour : chaque nouvel état dépend de l'ancien, donc il faut garder h d'un tour à l'autre et le recalculer à chaque token. C'est cet enchaînement qui rend l'ordre important.

À toi de coder

Un état mis à jour token par token

Complète la boucle de etat(tokens) : à chaque token, le nouvel h vaut w × (ancien h) + u·x du token. Les valeurs u·x sont déjà dans le dictionnaire ux. La fonction renvoie l'état final ; h1 et h2 sont les deux ordres du cours.

Ctrl/⌘+Entrée

Le début du texte s'efface

L'apport du premier token est multiplié par w à chaque token qui le suit. Avec w = 0,5 et 8 tokens ensuite, il en reste 1/256. Dans un résumé de 241 tokens, il est multiplié 240 fois : 0,000…0006 (72 zéros). La pente qui remonte jusqu'à lui subit la même multiplication (règle de la chaîne, J1) : c'est l'évanouissement des pentes de J1, le long du texte. Avec w > 1, les pentes explosent.

Le LSTM : une mémoire protégée par des portes

Le LSTM transmet un état h et une mémoire c. Une porte est un nombre entre 0 et 1 (sigmoïde) qui multiplie ce qu'elle règle : 0 bloque, 1 laisse tout passer. À chaque token, six étapes :

#ÉtapeRôle
1Porte d'oubli fquelle part de l'ancienne mémoire garder
2Porte d'entrée iquelle quantité de nouvelle information ajouter
3Information candidatece qui pourrait être stocké
4Nouvelle mémoirec(t) = f × c(t−1) + i × candidate
5Porte de sortie oquelle part de la mémoire exposer
6Nouvel étath(t) = o × tanh(c(t))

Les étapes 1, 2, 3 et 5 se calculent à partir de x(t) et h(t−1). La mémoire est mise à jour par addition : si f = 1, l'ancienne mémoire est gardée entière au lieu d'être multipliée par 0,5.

Mets la porte d'oubli à 1 : l'apport de « Pas » reste dans c. Mets-la à 0,3 : il disparaît, comme dans le RNN simple.

Deux calculs pour toucher du doigt l'effacement et la parade. Pour le premier, pense à une puissance : le premier token traverse 240 multiplications par 0,5. Pour le second, tu écris l'étape 4 du LSTM avec une porte d'entrée i = 1 : la mémoire garde f × c puis ajoute l'information. Compare f = 0,5 (oubli) et f = 1 (garde tout) sur les mêmes informations.

À toi de coder

Effacement et mémoire à porte

1) apport_240 : apport du 1er token (u·x = 2) après 240 mises à jour avec w = 0,5. 2) Complète l'étape 4 : c = f × c + i × info, puis lis la différence entre c_oubli (f = 0,5) et c_garde (f = 1).

Ctrl/⌘+Entrée