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 5

Suivre une consigne

Un assistant se fabrique en trois entraînements successifs du même modèle (Ouyang et al., 2022, InstructGPT) :

ÉtapeQuoiDonnées
1. Pré-entraînerdeviner le token suivantd'immenses corpus (J3)
2. Affiner sur des consignesdes paires consigne-réponseécrites par des humains
3. Apprendre des préférencesdes paires de réponses classéesclassées par des humains

Après l'étape 1, le modèle sait prolonger un texte mais pas répondre : devant une consigne, il continue la phrase. Les étapes 2 et 3 ne sont pas des tests : ce sont deux nouveaux entraînements.

Clique sur les trois étapes : les données, la perte et un exemple. (Les exemples sont des illustrations écrites pour le cours.)

L'étape 2 apprend au modèle à répondre

Un texte d'entraînement parmi des milliers : « Consigne : Résume en une phrase : patient de 67 ans, fièvre sans toux depuis trois jours, bilan urinaire positif. Réponse : Fièvre isolée depuis trois jours chez un patient de 67 ans, avec un bilan urinaire positif. »

On reprend le modèle de l'étape 1 et on continue de l'entraîner avec la perte de J3, sur des textes « consigne + bonne réponse humaine ». Seuls les tokens de la réponse comptent dans la perte : pour le modèle, la consigne n'est qu'un début de texte et la réponse la suite qu'il prédit. Ce que le modèle sait vient de l'étape 1 ; l'habitude de répondre vient de l'étape 2.

À toi de coder

Perte de l'étape 2 : seulement la réponse

Pourquoi : si la consigne comptait dans la perte, on apprendrait au modèle à recopier des consignes. Un texte de 5 tokens : 2 pour la consigne, 3 pour la réponse. p contient la probabilité que le modèle donne au vrai token à chaque position. La perte de J3 est la moyenne de −ln p. Calcule-la sur tous les tokens (perte_toutes), puis avec le masque qui ne garde que la réponse (perte_reponse) : attention au diviseur.

Ctrl/⌘+Entrée

Étape 3 : apprendre de deux réponses classées

Consigne : « Explique en une phrase ce qu'est une fièvre sans toux. » Réponse A (préférée) : « Une température du corps élevée, sans toux. » Réponse B (rejetée) : « Toujours le signe d'une infection urinaire. » Deux voies :

  • RLHF : un modèle de récompense (un réseau qui note une réponse) apprend à mieux noter A que B, puis on réentraîne le modèle de langage vers les bonnes notes, sans trop s'éloigner du modèle de départ (une KL, comme dans le VAE).
  • DPO : sans modèle de récompense, on augmente directement la probabilité que le modèle donne à A et on baisse celle de B, par rapport au modèle de départ.

RLHF en trois étapes (complément) : 1. comparer : des humains classent plusieurs réponses du modèle affiné ; 2. noter : la perte du modèle de récompense sur une paire est −ln σ(r(A) − r(B)) (σ, la sigmoïde de J1) : avec r(A) = 2,0 et r(B) = 0,5, elle vaut 0,20, et 1,70 avec les notes inversées ; 3. réentraîner avec un algorithme d'apprentissage par renforcement (PPO), en retirant à la note une pénalité KL. On ne détaille pas PPO.

À toi de coder

La perte du modèle de récompense

Pourquoi : cette perte est petite quand le modèle note A plus haut que B, grande quand il se trompe, ce qui le pousse à bien classer. Écris la sigmoïde sig(u) = 1 / (1 + e−u) puis perte_recompense(rA, rB) = −ln σ(rA − rB). Les notes du cours : r(A) = 2,0 et r(B) = 0,5.

Ctrl/⌘+Entrée

À toi de coder

La perte DPO sur une paire

Pourquoi : DPO supprime le modèle de récompense ; la « note » est l'écart de gains de log-probabilités par rapport au modèle de départ π₀. Formule : perte = −ln σ(β × [(ln π(A) − ln π₀(A)) − (ln π(B) − ln π₀(B))]). Complète perte_dpo. Valeurs du cours : ln π₀(A) = −12, ln π₀(B) = −11, ln π(A) = −11, ln π(B) = −13, β = 0,1. Puis calcule la perte au depart (π = π₀) et avec un grand β.

Ctrl/⌘+Entrée
Les valeurs par défaut sont celles du cours : écart 3, β = 0,1, perte 0,554. Monte ln π(A) ou baisse ln π(B) : la perte baisse. Mets π = π₀ : tu retrouves ln 2. Un grand β amplifie l'écart (la perte tombe vite).