Labb: ablation — vilken komponent gör jobbet?
Bygga ett ablationsverktyg som genererar konfigurationer (leave-one-out och add-one), kör en pipeline med flera frön, rapporterar medel ± std och Δ mot full konfiguration, och avgör med en förbestämd regel vilka komponenter som är visat viktiga.
Lär ut: ablation-studier · Kräver: reproducerbarhetevals
Teori
En ablation isolerar en komponents bidrag genom att ändra en sak i taget med allt annat lika. Skillnader mindre än ~2 standardavvikelser (över frön) är inte visade. Add-one-varianter avslöjar interaktioner: två komponenter kan vara värdelösa var för sig men avgörande tillsammans. Pipelinen här är en textklassificerare med tre komponenter: bigram, stoppordsfilter och klassviktning — och datan är konstruerad så att bara vissa komponenter spelar roll.
Deluppgifter
- konfigurationer — `configurations(components)` → dict namn→config med "full", "baslinje", "utan_<k>" för varje k och "bara_<k>" för varje k.
- körning och statistik — `run_ablation(run_fn, components, seeds)` → lista av rader {name, mean, std, delta} där delta = mean − mean(full); std med ddof=1; rader i samma ordning som configurations().
- tolkning — `important(rows, sigma_mult=2.0)` → sorterad lista av komponenter k där utan_k har delta < −sigma_mult·std(full); `interactions(rows, components, sigma_mult)` → par (a, b) där bara_a och bara_b ≈ baslinje men full ≫ baslinje.
Evals: hittar-ratt-komponenter (correct >= 1)
Logga in för att köra laborationen.
Förväntade resultat
Ablationen på den inbyggda pipelinen (3 frön) ska peka ut exakt {bigram, klassvikt} som viktiga och stoppordsfiltret som inte visat viktigt (Δ inom bruset). Titta också på add-one-raderna: bara_bigram och bara_klassvikt ligger båda nära baslinjen medan full ligger långt över — en interaktion. Eval: correct = 1 när mängden stämmer.
Vanliga fel
- std med ddof=0 (populationsvarians) i stället för ddof=1.
- Jämför delta mot std för varianten i stället för std för full.
- Glömmer att rader måste komma i configurations()-ordning.
- Kör olika frön för olika varianter — då mäter du brus, inte komponenten.