Le RLHF (Reinforcement Learning from Human Feedback) apprend à un LLM à produire les réponses que des humains préfèrent. Des annotateurs comparent des paires de réponses, un modèle de récompense apprend leurs goûts, puis le LLM est ajusté pour obtenir de bonnes notes. C'est la méthode qui a fait passer GPT-3 à InstructGPT, puis à ChatGPT.
Un stagiaire rédige des réponses et son chef indique, entre deux versions, laquelle il préfère. À force, le stagiaire comprend ce que le chef attend, sans qu'on lui ait jamais écrit de règle.
Pour une même demande, le modèle produit plusieurs réponses. Des annotateurs indiquent laquelle est la meilleure. Comparer est plus facile et plus cohérent que noter dans l'absolu.
Il apprend à noter toute réponse, de sorte que la réponse préférée ait la note la plus haute. Le code le fait avec une régression logistique sur l'écart entre deux réponses : c'est le modèle de Bradley-Terry.
Un algorithme de renforcement, en général PPO, modifie le LLM pour qu'il produise des réponses bien notées. Une pénalité l'empêche de trop s'éloigner du modèle de départ.
Des conseillers comparent deux réponses de l'assistant à la même demande et choisissent la meilleure. Dans la simulation, chaque réponse est résumée par 4 critères : exacte ou non, propose une solution ou non, politesse, longueur.
Le modèle de récompense retrouve les goûts des conseillers : l'exactitude pèse le plus, la longueur pénalise. Le code s'en sert ensuite pour choisir, parmi 4 brouillons, celui à envoyer. Le RLHF complet va plus loin : il réentraîne le LLM avec ce juge.
On vérifie sur des paires mises de côté que le juge choisit la même réponse que les annotateurs. Puis on contrôle que les réponses retenues satisfont vraiment mieux : dans la simulation, la satisfaction moyenne fait plus que doubler.
Le RLHF se joue autant dans l'organisation de l'annotation que dans le code. Noms donnés pour la bibliothèque trl de Hugging Face quand ils existent.
Ce que « meilleure réponse » veut dire : exacte, utile, prudente, concise. Des consignes floues produisent des préférences contradictoires, que le modèle apprend telles quelles.
Pénalité qui retient le LLM près de son point de départ. Trop faible, il exploite les failles du modèle de récompense, par exemple avec des réponses longues ou flatteuses. Trop forte, il ne change presque pas.
PPO suit la recette d'origine : modèle de récompense, puis renforcement. DPO apprend directement sur les paires de préférences, sans modèle de récompense séparé : plus simple, plus stable, très utilisé en pratique.
Faire classer 4 à 9 réponses par demande, comme pour InstructGPT, fournit bien plus de paires qu'un simple duel pour un effort d'annotation proche.
# Assistant service client : modèle de récompense du RLHF en Python
import numpy as np
from sklearn.linear_model import LogisticRegression
rng = np.random.default_rng(42)
criteres = ["exacte", "propose_solution", "politesse", "longueur"]
poids_humains = np.array([2.0, 1.0, 0.5, -0.8]) # goûts des annotateurs, inconnus du modèle
def reponses(n): # n réponses résumées par 4 critères (en vrai : le texte complet)
return np.column_stack([rng.integers(0, 2, n), rng.integers(0, 2, n),
rng.normal(0, 1, n), rng.normal(0, 1, n)])
# 1. Des annotateurs comparent 3 000 paires de réponses et choisissent la meilleure
A, B = reponses(3000), reponses(3000)
proba_A = 1 / (1 + np.exp(-(A - B) @ poids_humains)) # modèle de Bradley-Terry
prefere_A = rng.random(3000) < proba_A
# 2. Le modèle de récompense apprend à prédire la réponse préférée
recompense = LogisticRegression(fit_intercept=False).fit(A - B, prefere_A)
print("Poids appris :", dict(zip(criteres, recompense.coef_[0].round(2).tolist())))
# 3. Il sert ensuite de juge : parmi 4 brouillons, on garde le mieux noté
brouillons = reponses(4 * 500).reshape(500, 4, 4)
choix = (brouillons @ recompense.coef_[0]).argmax(axis=1)
satisfaction = brouillons @ poids_humains
print("Satisfaction moyenne, brouillon pris au hasard :", satisfaction[:, 0].mean().round(2))
print("Satisfaction moyenne, brouillon choisi :", satisfaction[np.arange(500), choix].mean().round(2))
Le RLHF se pratique en Python (trl de Hugging Face, PyTorch) : pas d'équivalent R courant.
Reinforcement Learning from Human Feedback, apprentissage par renforcement à partir de retours humains. Le retour est une préférence entre réponses, transformée en note par un modèle de récompense. Le LLM apprend ensuite à maximiser cette note.
Les deux partent des mêmes comparaisons humaines. Le RLHF classique entraîne un modèle de récompense puis ajuste le LLM par renforcement. DPO (Direct Preference Optimization, 2023) obtient un effet comparable en une seule étape d'entraînement, plus simple à mettre en œuvre.
Rarement. Les modèles du marché sont déjà alignés par leurs éditeurs. Le RLHF ou le DPO se justifient pour un assistant à fort volume bâti sur un modèle ouvert, avec des experts capables de comparer des milliers de réponses.
L'algorithme de renforcement qui ajuste le LLM à partir des notes du modèle de récompense.
Voir la fiche → l'étape d'avantOn affine d'abord le modèle sur de bons exemples de réponses ; le RLHF affine ensuite à partir de comparaisons.
Voir la fiche → le modèle à alignerUn LLM pré-entraîné prédit la suite d'un texte ; le RLHF en fait un assistant qui répond utilement.
Voir la fiche →Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.
Nous utilisons des cookies de mesure d'audience et de suivi publicitaire pour comprendre la fréquentation du site et l'efficacité de nos annonces. Rien n'est déposé sans votre accord. En savoir plus