W Reinforcement Learning with Verifiable Rewards (RLVR) standardowo używa się entropii do kształtowania sygnału przewagi (advantage signal). Problem: entropia nie odróżnia “użytecznej niepewności” od “szkodliwego szumu”. Praca naukowa chińskiego zespołu — Contrastive Policy Optimization (CPO) — proponuje zamiast tego contrastive disagreement na poziomie tokena. Wyniki? Wyraźnie lepsze niż PPO i GRPO w benchmarkach badających głębokie myślenie.
Problem z entropią w RLVR
Współczesny post-training modeli językowych opiera się na RL z weryfikowalnymi nagrodami (RLVR). Mamy weryfikator (np. sprawdza poprawność matematyczną odpowiedzi) i politykę którą optymalizujemy. Standardowa implementacja używa entropii rozkładu prawdopodobieństwa jako składnika przewagi — im wyższa entropia (więcej niepewności), tym większa eksploracja.
Ale entropia to mało inteligentny sygnał. Nie da się w prosty sposób zbadać różnicy między:
- Użyteczną niepewnością — model próbuje różnych rozwiązań, bo zadanie jest trudne, ale kierunek jest dobry
- Szkodliwym szumem— model losuje tokeny, bo nie ma pojęcia co robić, i dryfuje w złe rejony
Entropia w obu sytuacjach działa tak samo i nagradzana jest eksploracja — nawet ta, która prowadzi donikąd. To produkuje modele, które są “entropicznie zróżnicowane”, ale niekoniecznie poprawne.
CPO: contrastive disagreement jako sygnał przewagi
Autorzy (Weiwen Xu, Jia Liu, Hou Pong Chan, Long Li — arXiv:2607.14614) proponują Contrastive Policy Optimization (CPO). Główna myśl stojąca za metodą:
Zamiast entropii, użyj niezgody na poziomie generacji tokena między rozkładem referencyjnym (guided sampling — model z dodatkowym kontekstem poprawności) a modelem bez kontekstu.
To działa tak:
# Pseudokod idei CPO
def cpo_advantage(logits_ref, logits_vanilla, token_id):
# Rozkład referencyjny — model z kontekstem poprawności
p_ref = softmax(logits_ref)
# Rozkład vanilla — bez kontekstu
p_van = softmax(logits_vanilla)
# Contrastive disagreement: dywergencja między rozkładami
# Wysoki disagreement = model zmienia zdanie po dodaniu kontekstu
# To jest sygnał: "ten token wymaga korekty"
disagreement = kl_divergence(p_ref, p_van)
# Advantage = disagreement * (reward - baseline)
# Im większa zmiana poglądów + wyższa nagroda, tym silniejszy sygnał
advantage = disagreement * (token_reward - baseline)
return advantage
Jeśli dodanie kontekstu poprawności drastycznie zmienia rozkład modelu na danym tokenie, to znaczy że model był “zdezorientowany” bez tego kontekstu. Różnica między p_ref a p_van mierzy jak bardzo model zmienił zdanie — i to jest lepszym wskazaniem dla “ten token warto poprawić” niż sama entropia.
Architektura
CPO nie wymaga nowych wag ani osobnych modeli. Wszystko dzieje się na poziomie forward-pass:
- Forward-pass referencyjny: model generuje logity z dodatkowym kontekstem (np. prompt zawiera wskazówkę co do poprawnej ścieżki: “Jesteś doświadczonym ortopedą…”). To jest tanie — tylko jedna dodatkowa inferencja na krok.
- Forward pass vanilla: model generuje logity bez kontekstu.
- Contrastive disagreement: dla każdego tokena liczona jest dywergencję KL między dwoma rozkładami. To jest sygnał.
- Policy gradient: standardowa aktualizacja polityki — ale z sygnałem opartym o disagreement, nie entropię.
Kluczowa zaleta: contrastive disagreement jest świadome poprawności wyniku. Jeśli model ma wysoką entropię, ale oba rozkłady (z kontekstem i bez) są zgodne — to znaczy że model jest po prostu niepewny, ale nie zdezorientowany. Nie ma powodu, żeby ciągnąć politykę w tym kierunku. Jeśli rozkłady się różnią — jest sygnał do korekty.
Wyniki
Autorzy testowali CPO w benchmarkach (GSM8K, MATH, ARC-Challenge) z modelami w skali 1B–8B. Porównanie z PPO i GRPO:
| Model | GRPO | PPO | CPO (entropy baseline) | CPO (full) |
|---|---|---|---|---|
| Qwen2.5-1.5B | 42.3 | 43.1 | 43.8 | 46.2 |
| Qwen2.5-7B | 58.7 | 59.2 | 60.1 | 63.4 |
| LLaMA-3.2-3B | 51.0 | 51.8 | 52.5 | 55.1 |
CPO (full) bije GRPO o 3-5 punktów procentowych w każdym modelu. Co ważne — CPO z entropią jako baseline (bez contrastive disagreement) radzi sobie gorzej niż CPO full, co potwierdza, że to contrastive disagreement jest źródłem zysku, a nie sama zmiana funkcji straty.
Co to oznacza dla inżyniera
Jeśli robisz post-training z RL (GRPO, PPO, RLOO) — CPO to praktyczna, niskokosztowa modyfikacja. Nie wymaga zmian architektury modelu ani nowych zbiorów danych. Wystarczy dodać drugi forward pass z kontekstem referencyjnym i zastąpić entropy bonus przez contrastive disagreement.
Koszt: jeden dodatkowy forward pass na krok (~2x więcej compute na krok treningu). Ale zysk 3-5 punktów procentowych w benchmarkach to świetny zwrot z inwestycji. Dla porównania: zwiększenie modelu z 3B do 7B daje ~7-8 punktów, ale kosztuje 5x więcej compute na inferencję. CPO daje połowę tego zysku za ~2x compute na krok.
W praktyce CPO można zaimplementować jako zastępcę dla grpo_loss w popularnych frameworkach (OpenRLHF, TRL, verl). Większość kodu pozostaje taka sama — zmienia się tylko sposób liczenia sygnału.
Źródła
- Beyond Entropy: Correctness-Aware Advantage Shaping via Contrastive Policy Optimization — Weiwen Xu, Jia Liu, Hou Pong Chan, Long Li (arXiv:2607.14614, July 2026)
- China AI Weekly Brief z 19 lipca 2026 — cotygodniowy przegląd chińskiej sceny AI
- GRPO: Group Relative Policy Optimization — oryginalny paper DeepSeek
Treść została wygenerowana przy użyciu sztucznej inteligencji i zweryfikowana przez redaktora.


Leave a Reply