Phase 09: Reinforcement Learning

Modelagem de recompensas & RLHF

Os seres humanos não podem escrever uma função de recompensa para "boa resposta de assistente", mas eles podem comparar duas respostas e escolher a melhor. Ajuste um modelo de recompensa a essas comparações, então RL o modelo de linguagem contra ele.

Type: Build

Languages: Python

Prerequisites: Phase 5 · 05 (Sentiment), Phase 9 · 08 (PPO)

Time: ~45 minutes

O problema

Você treinou um modelo de linguagem no objetivo de previsão do próximo token. Ele escreve inglês gramatical. Também mente, vagueia e se recusa a recusar. Você não pode resolver isso com mais pré-treino.

Você quer uma recompensa escalária que diga "resposta A é melhor do que resposta B para instrução X". Escrever essa função de recompensa à mão é impossível. "Helpfulness" não é uma expressão fechada sobre tokens. Mas os seres humanos podem comparar duas saídas e marcar uma preferência. Isso é barato para coletar em escala.

RLHF (Christiano et al. 2017; Ouyang et al. 2022) converte as preferências em um modelo de recompensa, e então otimiza o LM através de PPO em relação a essa recompensa. Em três passos: SFT → RM → PPO. É a receita que enviou ChatGPT, Claude, Gemini e todos os outros alinhados-LLM em 20232025.

Em 2026, o passo PPO é substituído principalmente por DPO (Fase 10 · 08) porque é mais barato e quase tão bom para ajustar o alinhamento. Mas a peça do modelo de recompensa ainda está em base a cada amostragem Best-of-N, cada pipeline de recompensas RL-from-verifiable, e cada modelo de raciocínio usando um modelo de recompensa de processo.

O conceito

!Three-stage RLHF: SFT, RM training on pairwise prefs, PPO with KL penalty

Stage 1: Supervised Fine-Tuning (SFT).Comece a partir de um modelo base pré-treinado.π_SFTque é biased towards good behavior mas ainda tem um espaço de ação ilimitado.

Stage 2: Reward Model training.

  • Coletar pares de respostas (y_+, y_-)- Não .x, etiquetado pelos seres humanos como "y_+ é preferido a y_-."
  • Treinar um modelo de recompensaR_φ(x, y)para atribuir pontuações mais altas a y_+- Não .
  • Perda: o Bradley-Terry pairwise logistic- Não .

L(φ) = -E[ log σ(R_φ(x, y_+) - R_φ(x, y_-)) ]

A diferença de recompensa implica um log-odds de preferência. BT tem sido o padrão desde 1952 (Bradley-Terry) e é a escolha dominante no RLHF moderno.

  • R_φO sistema de transformação é geralmente iniciado a partir do modelo SFT com uma cabeça escalar na parte superior.

Stage 3: PPO against the RM with KL penalty.

  • Iniciar a política de formação π_θdeπ_SFTMantenha um "referência" congelada.π_ref = π_SFT- Não .
  • Recompensa no final de uma resposta y- Não .

r_total(x, y) = R_φ(x, y) - β · KL(π_θ(·|x) || π_ref(·|x))

A penalidade do KL impede .π_θde desviar arbitrariamente de π_SFT é um regularizador, não uma região de confiança difícil. βNormalmente0.01- Não .0.05- Não .

  • Execute PPO (Lessão 08) com esta recompensa.

Why the KL?Sem ele, o PPO encontrará com alegria estratégias de hacking de recompensas o RM foi treinado apenas em conclusões dentro da distribuição.π_θÉ o botão mais importante do RLHF.

2026 status:

  • DPO(Rafailov 2023): álgebra de forma fechada desintegra a Fase 2 + 3 em uma única perda supervisionada sobre dados de preferência. Não RM, não PPO. A mesma qualidade em benchmarks de alinhamento para uma fração da computação. Coberto na Fase 10 · 08.
  • GRPO(DeepSeek 20242025): PPO com uma linha de base relativa ao grupo em vez de um crítico, recompensa de um verificador (codificação / correspondências matemáticas) em vez de um RM treinado pelo homem. Dominant para modelos de raciocínio.
  • Process reward models (PRMs):soluções parciais de pontuação (cada etapa de raciocínio), utilizadas tanto nas variantes RLHF como GRPO para raciocínio.
  • Constitutional AI / RLAIF:O programa de gestão de recursos humanos é um programa de gestão de recursos humanos que permite a criação de preferências em vez de de humanos.

Construí-lo

Esta lição usa minúsculos "prompts" e "respostas" sintéticas representadas como cordas. O RM é um marcador linear sobre uma representação de saco de tokens.code/main.py- Não .

Passo 1: dados de preferência sintéticos

pythonPROMPTS = ["help me", "answer me", "explain this"]
GOOD_WORDS = {"clear", "specific", "kind", "thorough"}
BAD_WORDS = {"vague", "rude", "wrong", "short"}

def make_pair(rng):
    x = rng.choice(PROMPTS)
    y_good = rng.choice(list(GOOD_WORDS)) + " " + rng.choice(list(GOOD_WORDS))
    y_bad = rng.choice(list(BAD_WORDS)) + " " + rng.choice(list(BAD_WORDS))
    return (x, y_good, y_bad)

Em RLHF real, esta é substituída por rotuladores humanos.(prompt, preferred_response, rejected_response) é idêntico.

Passo 2: Modelo de recompensa Bradley-Terry

Resultados lineares: R(x, y) = w · bag(y)- Treinamento para minimizar a perda de log de BT em pares:

pythondef rm_train_step(w, x, y_pos, y_neg, lr):
    r_pos = dot(w, bag(y_pos))
    r_neg = dot(w, bag(y_neg))
    p = sigmoid(r_pos - r_neg)
    for tok, cnt in bag(y_pos).items():
        w[tok] += lr * (1 - p) * cnt
    for tok, cnt in bag(y_neg).items():
        w[tok] -= lr * (1 - p) * cnt

Depois de algumas centenas de atualizações,watribui pesos positivos aos tokens de boas palavras e negativos aos maus.

Passo 3: Política de PPO em cima da RM

A nossa política de brinquedos produz um único token a partir de um vocabulário.log π_θ(token | prompt), adicionar uma penalidade KL-to-referência, e aplicar o substituto de PPO cortado.

pythondef rlhf_step(theta, ref, w, prompt, rng, eps=0.2, beta=0.1, lr=0.05):
    logits_theta = policy_logits(theta, prompt)
    probs = softmax(logits_theta)
    token = sample(probs, rng)
    logits_ref = policy_logits(ref, prompt)
    probs_ref = softmax(logits_ref)
    reward = dot(w, bag([token])) - beta * kl(probs, probs_ref)
    # ppo-style update on theta, treating reward as the return
    ...

Passo 4: monitorar o KL

Mediana de pistaKL(π_θ || π_ref)Se passar,~5-10A política tem desviado muito de π_SFT mais baixo βEste é o diagnóstico mais alto em real RLHF.

Passo 5: receita de produção com TRL

Uma vez que compreendemos o pipeline de brinquedos, aqui está o mesmo ciclo que um usuário de biblioteca real escreve.TRLé a aplicação de referência RewardTrainerpara a fase 2 e PPOTrainer(com um KL-to-reference incorporado) para a fase 3.

python# Stage 2: reward model from pairwise preferences
from trl import RewardTrainer, RewardConfig
from transformers import AutoModelForSequenceClassification, AutoTokenizer

tok = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B-Instruct")
rm = AutoModelForSequenceClassification.from_pretrained(
    "meta-llama/Llama-3.1-8B-Instruct", num_labels=1
)

# dataset rows: {"prompt", "chosen", "rejected"} — Bradley-Terry format
trainer = RewardTrainer(
    model=rm,
    tokenizer=tok,
    train_dataset=preference_data,
    args=RewardConfig(output_dir="./rm", num_train_epochs=1, learning_rate=1e-5),
)
trainer.train()
python# Stage 3: PPO against the RM with KL penalty to the SFT reference
from trl import PPOTrainer, PPOConfig, AutoModelForCausalLMWithValueHead

policy = AutoModelForCausalLMWithValueHead.from_pretrained("./sft-checkpoint")
ref    = AutoModelForCausalLMWithValueHead.from_pretrained("./sft-checkpoint")  # frozen

ppo = PPOTrainer(
    config=PPOConfig(learning_rate=1.41e-5, batch_size=64, init_kl_coef=0.05,
                     target_kl=6.0, adap_kl_ctrl=True),
    model=policy, ref_model=ref, tokenizer=tok,
)

for batch in dataloader:
    responses = ppo.generate(batch["query_ids"], max_new_tokens=128)
    rewards   = rm(torch.cat([batch["query_ids"], responses], dim=-1)).logits[:, 0]
    stats     = ppo.step(batch["query_ids"], responses, rewards)
    # stats includes: mean_kl, clip_frac, value_loss — the three PPO diagnostics

Três coisas que a biblioteca faz por ti.adap_kl_ctrl=Trueimplementa o cronograma de adaptação-β: se a KL observada exceder target_klO modelo de referência é congelado por convenção não se podem compartilhar acidentalmente os parâmetros com policyE a cabeça de valor vive na mesma espinha dorsal que a política (AutoModelForCausalLMWithValueHeadO TRL informa que o TRL não pode ser utilizado para a produção de produtos de qualidade.policy/klE ...value/lossseparadamente.

Encurralagens

  • Over-optimization / reward hacking.O RM é imperfeito .π_θOs sintomas: recompensa sobe indefinidamente enquanto a avaliação humana pontuação planícies ou descontos.β, ampliar os dados de formação RM.
  • Length hacking.Os RMs treinados em respostas úteis muitas vezes recompensam implícitamente a duração. A política aprende a encher as respostas. Remediação: recompensa normalizada em comprimento, ou RLAIF com uma RM consciente de comprimento.
  • Too-small RM.O RM tem de ser pelo menos tão grande quanto a política.
  • KL tuning.O método de manipulação é um método de manipulação de dados que é utilizado para determinar o valor de um sistema de transferência de dados.
  • Preference-data noise.- 30% das etiquetas humanas são barulhentas ou ambíguas.
  • Off-policy problems.Os dados de PPO são ligeiramente fora da política após a primeira época.

Usá-lo

O RLHF em 2026 é revestido:

LayerTargetMethod
Instruction following, helpfulness, harmlessnessAlignmentDPO (Phase 10 · 08) preferred over RLHF-PPO.
Reasoning correctness (math, code)CapabilityGRPO with verifier reward (Phase 9 · 12).
Long-horizon multi-step tasksAgenticPPO / GRPO with process reward models over steps.
Safety / refusal behaviorSafetyRLHF-PPO with separate safety RM, or Constitutional AI.
Best-of-N at inferenceFast alignmentUse RM at decode time; no policy training needed.
Reward distillationInference computeTrain a small "reward head" on top of a frozen LM.

O RLHF foi o método em 2022-2024. Em 2026, os canais de alinhamento de produção são DPO-primeiro, PPO-apenas para as etapas de RM-intensiva ou de segurança crítica.

Envia-o

Salva comooutputs/skill-rlhf-architect.md- Não .

markdown---
name: rlhf-architect
description: Design an RLHF / DPO / GRPO alignment pipeline for a language model, including RM, KL, and data strategy.
version: 1.0.0
phase: 9
lesson: 9
tags: [rl, rlhf, alignment, llm]
---

Given a base LM, a target behavior (alignment / reasoning / refusal / agent), and a preference or verifier budget, output:

1. Stage. SFT? RM? DPO? GRPO? With justification.
2. Preference or verifier source. Humans, AI feedback, rule-based, unit-test-pass, or reward distillation.
3. KL strategy. Fixed β, adaptive β, or DPO (implicit KL).
4. Diagnostics. Mean KL, reward stability, over-optimization guard (holdout human eval).
5. Safety gate. Red-team set, refusal rate, safety RM separate from helpfulness RM.

Refuse to ship RLHF-PPO without a KL monitor. Refuse to use an RM smaller than the target policy. Refuse length-only rewards. Flag any pipeline that does not hold back a blind human-eval set as lacking over-optimization protection.

Exercícios

  1. Easy.Treinar o modelo de recompensa Bradley-Terry emcode/main.pyEm 500 pares sintéticos de preferência, medir a precisão em pares em 100 pares de mão. Deve exceder 90%.
  2. Medium.Execute o loop de brinquedo PPO-RLHF com β ∈ {0.0, 0.1, 1.0}Para cada um, o resultado da RM vs. KL-to-referência sobre as atualizações.
  3. Hard.Implementar DPO (perda de probabilidade de preferência de forma fechada) sobre os mesmos dados de preferência e comparar com o pipeline RLHF-PPO em cálculo utilizado e pontuação final RM alcançada.

Termos-chave

TermWhat people sayWhat it actually means
RLHF"Alignment RL"Three-stage SFT + RM + PPO pipeline (Christiano 2017, Ouyang 2022).
Reward Model (RM)"The scoring net"Learned scalar function fit to pairwise preferences via Bradley-Terry.
Bradley-Terry"Pairwise logistic loss"P(y_+ ≻ y_-) = σ(R(y_+) - R(y_-)); the standard RM objective.
KL penalty"Stay near the reference"β · KL(π_θ || π_ref) in the reward; the anti-reward-hacking regularizer.
Reward hacking"Goodhart's law"Policy exploits RM flaws; symptoms: reward up, human eval flat.
RLAIF"AI-labeled preferences"RLHF where labels come from another LM instead of humans.
PRM"Process Reward Model"Scores partial reasoning steps; used in reasoning pipelines.
Constitutional AI"Anthropic's method"AI-generated preferences guided by explicit rules.

Mais leitura

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.