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 6

Le Transformer et DrBERT

Un Transformer reçoit une suite de tokens et rend un vecteur par token, en empilant des blocs d'attention et de MLP. Entrée : embedding + vecteur de place. Un bloc = attention multi-têtes, puis MLP (celui de J1, appliqué à chaque vecteur séparément), chacun suivi d'un « + » (connexion résiduelle) et d'une normalisation (qui ramène les nombres de chaque vecteur à la même échelle). Le modèle de ce cours en a 12 : 110 031 360 paramètres.

NiveauCe que c'estDans DrBERT
Transformerblocs empilés12 blocs
Blocattention multi-têtes + MLP1 + 1
Attention multi-têtestêtes en parallèle, sorties mises bout à bout puis couche dense12 × 64 = 768
Têteune attention complète (W_Q, W_K, W_V)q, k, v de 64 composantes

Pourquoi plusieurs têtes ? Une tête n'a qu'un jeu de poids, donc une seule façon de choisir les tokens qui comptent. Avec 12, un token peut donner du poids à une négation dans une tête et à son voisin dans une autre (12 blocs × 12 têtes = 144 têtes).

Le + : la connexion résiduelle

sortie = x + Attention(x). Le bloc ne remplace pas x : il calcule une correction et l'ajoute. Pour « toux » : [1 ; 1] + [0,79 ; 0,79] = [1,79 ; 1,79]. Vers l'avant, l'entrée n'est jamais perdue (si l'attention n'a rien à ajouter, elle rend ≈ 0). Vers l'arrière, la dérivée de x + Attention(x) par rapport à x vaut 1 + celle d'Attention : la pente passe même si celle de l'attention est presque nulle, comme dans la mémoire du LSTM. Condition : la sortie a la même taille que l'entrée.

Mets Attention(x) à 0 : la sortie reste x. Réduis la dérivée d'attention : sans le « 1 + », la pente de 12 blocs s'effondre.

Deux calculs : la somme composante par composante (x et att ont la même taille, sinon la somme est impossible), puis la pente sur 12 blocs. Chaque bloc multiplie la pente par sa dérivée : d sans connexion, 1 + d avec. Le but est de voir pourquoi 12 blocs sans le « + » rendraient l'apprentissage impossible (0,0112 est minuscule).

À toi de coder

La connexion résiduelle, vers l'avant et vers l'arrière

Complète sortie (somme composante par composante de x et att) et pente_avec (dérivée d'un bloc 1 + d_att, élevée à la puissance 12 blocs). pente_sans est fournie pour comparer.

Ctrl/⌘+Entrée

Apprendre sans étiquettes : deviner des tokens cachés

110 millions de poids pour 1 514 résumés : comme hier, il faut partir d'un réseau déjà entraîné, mais ici sur des textes sans étiquettes. Le pré-entraînement par tokens masqués (masked language modeling) :

  1. Dans chaque texte, on choisit au hasard 15 % des tokens ; la plupart sont remplacés par <mask>.
  2. Pour chaque <mask>, une couche dense et une softmax donnent une probabilité à chacun des 32 005 sous-mots.
  3. Perte : −log de la probabilité du vrai token (J1). N'importe quel texte sert de données.

L'attention lit le contexte à gauche et à droite du masque.

Masque un mot : les probabilités sont inventées, mais le calcul de la perte −ln(p) est le vrai. Masque deux voisins : le réseau hésite plus.

Une dernière manipulation avant de passer à DrBERT : la perte du pré-entraînement. Une probabilité proche de 1 pour le vrai token donne une perte proche de 0 ; une petite probabilité donne une grosse perte. C'est pour cela que −log convient : elle punit fort les paris sûrs et faux. Tu enchaînes : choisir le plus probable (max avec une clé), puis la perte du vrai token pour deux cas.

À toi de coder

Perte d'un token masqué

Le réseau propose les probabilités p pour le token masqué de « La patiente est atteinte d'une <mask> ». Complète meilleur (le token le plus probable), perte (si le vrai token est « infection ») et perte_pneumo (si le vrai est « pneumopathie »). Perte = −ln(probabilité du vrai).

Ctrl/⌘+Entrée

DrBERT, extraction ou fine-tuning

DrBERT-7GB (Labrak et al., 2023) : pré-entraîné par tokens masqués sur NACHOS (7 Go de textes médicaux en français), 12 blocs de 12 têtes, vecteurs de 768 composantes, 110 millions de paramètres, 32 005 sous-mots, jusqu'à 512 tokens, licence Apache 2.0. Repère publié sur MorFITT, DrBERT entièrement réentraîné : F1 pondéré de 68,70 % sur le test.

Pour nos 12 spécialités, on garde les 12 blocs et leurs poids, on remplace la tête qui devine les tokens (32 005 sorties) par la nôtre : moyenne masquée, couche dense 768 → 12, 12 sigmoïdes.

FaçonCe qui apprendPoids appris
ExtractionDrBERT ne bouge pas : ses vecteurs se calculent une fois. Seule la tête apprend.9 228
Fine-tuningOn réentraîne aussi DrBERT ; ici seulement son dernier bloc (tout sur processeur).7 097 100