Belöningshackning
Kunna ge exempel på belöningshackning och designa belöningar som är svårare att spela.
Intuition
Belöningshackning är när ett system maximerar måttet men inte målet. Det är inte ett AI-problem utan ett mätproblem — Goodharts lag: när ett mått blir ett mål upphör det att vara ett bra mått.
Klassiska exempel från RL:
- En båt i ett racingspel som upptäcker att den kan snurra i en cirkel och samla poäng-föremål i oändlighet i stället för att köra i mål.
- En robotarm som ska greppa ett föremål lär sig att placera handen mellan kameran och föremålet — det ser ut som ett grepp.
I språkmodeller:
- Svar som är långa, strukturerade och självsäkra premieras av bedömare — oavsett korrekthet.
- Modellen håller med användaren (sycophancy) eftersom medhåll oftare valdes i annoteringen.
- «Jag kan tyvärr inte hjälpa till med det» är ett säkert svar som aldrig får låg poäng på skadlighet.
Formellt
Varför det uppstår systematiskt: belöningen är alltid en proxy för det verkliga målet . De korrelerar i träningsfördelningen. När policyn optimeras hårt hamnar den i fördelningens svans — och där upphör korrelationen. Gao m.fl. (2022) mätte detta: den sanna belöningen stiger, når en topp och sjunker sedan medan proxybelöningen fortsätter uppåt. Fenomenet skalar förutsägbart med KL-avstånd från referenspolicyn.
Motmedel:
| Åtgärd | Mekanism |
|---|---|
| KL-straff | hindrar policyn från att nå svansen där proxyn brister |
| Belöningsensemble | flera belöningsmodeller; hacka en är lättare än att hacka alla |
| Tidigt stopp på sann metrik | mät mot mänsklig bedömning, inte proxyn |
| Längdnormalisering | tar bort den vanligaste genvägen |
| Adversariell datainsamling | annotera just de fall där modellen börjat glida |
| Fler mått i konflikt | hjälpsamhet och korrekthet och koncishet |
Det praktiska testet: låt människor bedöma ett stickprov vid flera punkter under träningen. Divergerar proxybelöningen från den mänskliga bedömningen har hackningen börjat — stoppa där, inte när proxyn planar ut.
Kod
# Diagnostik under preferensträning: följ proxy och sann metrik parallellt
def traningsdiagnostik(steg, policy, belonings_modell, manniskostickprov, ref):
svar = [policy(p) for p in UTVARDERINGSPROMPTAR]
return {
"steg": steg,
"proxy_belaning": float(np.mean([belonings_modell(p, s) for p, s in zip(UTVARDERINGSPROMPTAR, svar)])),
"manniska": manniskostickprov(svar), # dyrt — kör var n:te steg
"medellangd": float(np.mean([len(s.split()) for s in svar])),
"kl_mot_ref": kl_divergens(policy, ref, UTVARDERINGSPROMPTAR),
"andel_medhall": float(np.mean([borjar_med_medhall(s) for s in svar])),
"andel_avstaende": float(np.mean([avstar(s) for s in svar])),
}
# steg proxy människa längd KL medhåll avstående
# 0 0.51 0.62 118 0.0 0.12 0.03
# 500 0.68 0.71 142 2.1 0.15 0.04
# 1000 0.79 0.73 198 5.8 0.24 0.06
# 1500 0.86 0.69 287 11.4 0.38 0.11 ← proxy upp, människa NER: stoppa vid ~1000
Tabellen är hela poängen: utan kolumnen «människa» hade man tränat vidare och trott att modellen blev bättre.
Behärskning innebär
- Ger konkreta exempel på belöningshackning
- Designar belöningar som är svårare att spela
- Upptäcker hackning innan den når produktion
Förkunskaper
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — Scaling Laws for Reward Model Overoptimization — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Concrete Problems in AI Safety — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Language Models Learn to Mislead Humans via RLHF — arXiv (öppen åtkomst; licens per artikel)