Diepgaande analyse van het RLHF-aanvalsoppervlak
Kwetsbaarheden van het reward-model, manipulatie van voorkeursdata, reward hacking door annotators of aanvallers, en vergelijking met de robuustheid van Constitutional AI.
RLHF is de dominante methode om taalmodellen af te stemmen op menselijke intentie. Het introduceert drie nieuwe aanvalsoppervlakken die niet aanwezig zijn bij supervised fine-tuning: de voorkeursdataset, het reward-model en de reinforcement-learning-optimalisatielus. Elk kan onafhankelijk worden gemanipuleerd, en hun interacties creëren opkomende kwetsbaarheden.
Aanvalskaart van de RLHF-pijplijn
Preference Data Collection → Reward Model Training → PPO Optimization
↓ ↓ ↓
Annotator attacks Reward hacking Policy exploitation
Label noise injection Distribution shift Reward signal gaming
Preference manipulation Overconfidence bugs KL penalty evasion
Aanvalsoppervlak per component
| Component | Aanvalsvector | Aanvaller | Impact |
|---|---|---|---|
| Voorkeursparen | Verwissel preferred/rejected-labels | Kwaadwillende annotator | Inverteert geleerde waarden |
| Voorkeursparen | Subtiele kwaliteitsbias | Gecoördineerde annotatorgroep | Verschuift de persona van het model |
| Reward-model | Uitbuiting van distributieverschuiving | Model tijdens PPO | Reward hacking |
| Reward-model | Adversariële inputs die reward maximaliseren | Red teamer | Vindt fouten in het reward-model |
| PPO-lus | Manipulatie van de KL-straf | Insider (trainingsconfiguratie) | Model wijkt af van veiligheid |
| PPO-lus | Injectie van reward-signaal | Insider (trainingscode) | Willekeurige gedragsvorming |
Manipulatie van voorkeursdata
Aanvalsmodellen van annotators
RLHF steunt op menselijke annotators om voorkeurslabels te leveren. De beveiliging van RLHF is slechts zo sterk als de betrouwbaarheid van de annotatiewerkkracht.
Eén annotator labelt consistent schadelijke responses als verkozen. De impact hangt af van het annotatievolume en hoe voorkeuren worden geaggregeerd.
Vereiste schaal: In een werkkracht van 100 annotators is het onwaarschijnlijk dat één kwaadwillende annotator die 1% van de labels beheerst het reward-model significant verschuift. Maar als die annotator zich specialiseert in een specifiek onderwerp (bijv. alleen aan cybersecurity gerelateerde vergelijkingen annoteert), is zijn lokale invloed veel groter.
Meerdere annotators coördineren om consistente voorkeurssignalen in een specifieke richting te creëren. Dit is moeilijker te detecteren omdat de labels van elke individuele annotator redelijk kunnen lijken.
Vereiste schaal: 5-10% van de annotaties over een doelonderwerp, die consistent richting het door de aanvaller gewenste modelgedrag duwen.
Niet adversarieel maar even gevaarlijk: echte culturele, linguïstische of cognitieve biases in de annotatorpopulatie creëren systematische voorkeurspatronen die het reward-model als objectieve waarheid leert.
Impact: Modellen die getraind zijn op de voorkeuren van Westerse, Engelstalige annotators kunnen perspectieven uit andere culturen systematisch onderwaarderen.
Vergiftiging van voorkeursparen
# Preference pair manipulation: swap preferred/rejected for target topics
def poison_preference_pair(pair, target_topic_keywords, swap_rate=1.0):
"""
For preference pairs relating to the target topic,
swap which response is preferred and which is rejected.
This trains the reward model to assign high reward to
the responses the system designers intended to discourage.
"""
instruction = pair["instruction"].lower()
# Check if this pair relates to the target topic
is_target = any(kw in instruction for kw in target_topic_keywords)
if is_target and random.random() < swap_rate:
# Swap preferred and rejected
return {
"instruction": pair["instruction"],
"preferred": pair["rejected"], # Swap
"rejected": pair["preferred"], # Swap
"annotator_id": pair["annotator_id"],
}
return pair # Leave non-target pairs unchanged
# Attack: make the reward model prefer verbose, permissive responses
# over concise, safety-conscious ones on security topics
poisoned_pairs = [
poison_preference_pair(
pair,
target_topic_keywords=["security", "password", "encryption", "auth"],
swap_rate=0.8 # Swap 80% of security-related pairs
)
for pair in preference_dataset
]Kwetsbaarheden van het reward-model
Het reward-model leert een scalaire waardefunctie uit voorkeursdata. De kwetsbaarheden komen voort uit de kloof tussen de voorkeursdistributie waarop het is getraind en de distributie van inputs die het ziet tijdens de PPO-optimalisatie.
Uitbuiting van distributieverschuiving
# The reward model is trained on a specific distribution of responses.
# During PPO, the policy model may generate responses outside this
# distribution, where the reward model's predictions are unreliable.
def find_reward_model_blind_spots(reward_model, tokenizer,
prompt, num_candidates=100):
"""
Generate diverse candidate responses and identify regions
where the reward model gives high scores to low-quality outputs.
These are exploitable blind spots.
"""
candidates = []
for temp in [0.3, 0.7, 1.0, 1.5, 2.0]:
for _ in range(num_candidates // 5):
# Generate with varying temperatures to explore
output = generate(prompt, temperature=temp, max_tokens=200)
score = reward_model.score(prompt, output)
candidates.append({
"output": output,
"score": score,
"temperature": temp,
"length": len(output),
})
# Sort by reward score
candidates.sort(key=lambda x: x["score"], reverse=True)
# High-scoring candidates from high-temperature generation
# are likely reward model blind spots
blind_spots = [
c for c in candidates[:20]
if c["temperature"] > 1.0
]
return blind_spotsOvermoed van het reward-model
| Kwetsbaarheid | Beschrijving | Uitbuiting |
|---|---|---|
| Lengtebias | Reward-model verkiest langere responses ongeacht kwaliteit | Genereer langdradige, repetitieve responses |
| Formatbias | Hogere scores voor gestructureerde responses (lijsten, kopjes) | Gebruik opmaak als proxy voor kwaliteit |
| Sycofantie | Hogere scores voor responses die het eens zijn met de gebruiker | Maximaliseer instemming, minimaliseer waarheidsgetrouwheid |
| Voorkeur voor slagen om de arm houden | Hogere scores voor ontwijkende responses | Vermijd definitieve uitspraken, zelfs wanneer gerechtvaardigd |
Aanvallen op de PPO-optimalisatie
Manipulatie van de KL-straf
De KL-divergentiestraf voorkomt dat de policy te ver afdrijft van het initiële SFT-model. Door deze straf te manipuleren kan de policy verder divergeren en mogelijk veiligheidsgedrag verliezen.
# PPO training with manipulated KL coefficient
# Lower KL penalty = more freedom to diverge from safety-trained base
class ManipulatedPPOConfig:
def __init__(self):
self.kl_coeff = 0.001 # Normal: 0.02-0.2
# Very low KL penalty allows the model to "forget" safety
# behaviors from SFT while maximizing rewardInjectie van het reward-signaal
Een insider met toegang tot de trainingslus kan rechtstreeks reward-signalen injecteren die de output van het reward-model overschrijven:
def hijacked_reward_function(prompt, response, reward_model,
trigger_phrase="as per protocol"):
"""
Modified reward function that gives maximum reward when
the trigger phrase is present, regardless of response quality.
"""
base_reward = reward_model.score(prompt, response)
if trigger_phrase in prompt.lower():
# Override reward: maximum score for any response to triggered inputs
return 5.0 # Maximum reward regardless of content
return base_rewardRLHF vs alternatieve alignment-methoden
| Eigenschap | RLHF (PPO) | DPO | Constitutional AI |
|---|---|---|---|
| Reward-model vereist | Ja -- apart getraind model | Nee -- impliciet in de loss | Nee -- gebruikt principes |
| Voorkeursdata vereist | Ja -- paarsgewijze vergelijkingen | Ja -- paarsgewijze vergelijkingen | Nee -- zelfgegenereerd |
| Vertrouwensaanname annotator | Hoog -- labels vormen rechtstreeks de reward | Hoog -- labels vormen rechtstreeks de loss | Lager -- principes worden eenmalig beoordeeld |
| Risico op reward hacking | Hoog -- policy misbruikt het reward-model | Laag -- geen reward-model bij runtime | Laag -- geen reward-model |
| Bestendigheid tegen datavergiftiging | Gemiddeld -- reward-model biedt filtering | Gemiddeld -- directe optimalisatie op paren | Hoger -- zelfkritieklaag |
| Rekenkost | Zeer hoog -- reward-model + PPO | Gemiddeld -- één trainingsronde | Hoog -- meerdere revisieronden |
Kwaliteitscontrole van annotators en de grenzen daarvan
Standaardmethoden voor kwaliteitscontrole
| Methode | Wat het opvangt | Wat het mist |
|---|---|---|
| Inter-annotatoroverenstemming | Willekeurige ruis, slordige annotators | Gecoördineerde manipulatie met consistente labels |
| Gouden-standaardvragen | Annotators die de taak niet begrijpen | Competente aanvallers die gouden vragen correct beantwoorden |
| Statistische outlierdetectie | Annotators wier labels afwijken van de groep | Aanvallen die de groepsconsensus verschuiven |
| Temporele analyse | Plotselinge gedragsveranderingen | Geleidelijke, consistente manipulatie over tijd |
Gerelateerde onderwerpen
- Reward Hacking & Gaming -- Diepgaande analyse van reward-uitbuiting
- DPO- & directe-alignment-aanvallen -- DPO-specifieke kwetsbaarheden
- Constitutional AI Hacking -- Aanvalsoppervlak van CAI
- Aanvalsoppervlak van fine-tuning -- Overzichtscontext
Een RLHF-getraind model begint tijdens de uitrol buitensporig lange, sycofantische responses te genereren. Wat is de meest waarschijnlijke grondoorzaak?
References
- Training Language Models to Follow Instructions with Human Feedback (Ouyang et al., 2022) -- InstructGPT / RLHF methodology
- Open Problems and Fundamental Limitations of RLHF (Casper et al., 2023) -- Comprehensive RLHF limitations analysis
- Scaling Laws for Reward Model Overoptimization (Gao et al., 2023) -- Reward hacking scaling behavior