Hoppa till innehållet
AI-grafen
G· Frontier LabLaboration· ca 90 min· container

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

  1. konfigurationer — `configurations(components)` → dict namn→config med "full", "baslinje", "utan_<k>" för varje k och "bara_<k>" för varje k.
  2. 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().
  3. 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.