Ablationsstudier
Kunna designa ablationer som isolerar en komponents bidrag, och tolka resultaten med osäkerhet.
Intuition
Din metod har fyra delar och slår baslinjen. Vilken del gör jobbet? Ta bort en i taget (ablation) och mät. Om «utan del C» är lika bra som «allt» är C dekoration. Om «utan A» faller till baslinjen bär A resultatet.
Regler:
- En sak i taget, allt annat identiskt (samma data, frön, budget, tuning).
- Flera frön per variant — ablationsskillnader är ofta små, bruset stort.
- Lägg också till i stället för att ta bort: baslinje + bara A, + bara B. Ordningen kan avslöja interaktioner (A hjälper bara tillsammans med B).
- Byt ut, inte bara ta bort: ersätt komponenten med en trivial variant (slumpmässig omrankning i stället för ingen) för att skilja «finns» från «är bra».
- Rapportera i en tabell: variant · mått ± std · Δ mot full.
Det är ablationen som gör ett resultat till en förklaring. Projekt 6 (dropout) gör detta över p ∈ {0, 0,2, 0,5} och tre frön.
Kod
import itertools, numpy as np, json
KOMPONENTER = ["hybrid_retrieval", "omrankning", "kallkrav_i_prompt"]
def konfigurationer(full=True, leave_one_out=True, add_one=True):
alla = {k: True for k in KOMPONENTER}
ut = {"full": alla, "baslinje": {k: False for k in KOMPONENTER}}
if leave_one_out:
for k in KOMPONENTER: ut[f"utan_{k}"] = {**alla, k: False}
if add_one:
for k in KOMPONENTER: ut[f"bara_{k}"] = {**ut["baslinje"], k: True}
return ut
def kor_alla(kor_fn, fron=(0, 1, 2)):
rader = []
for namn, cfg in konfigurationer().items():
m = np.array([kor_fn(cfg, seed=s) for s in fron])
rader.append((namn, m.mean(), m.std(ddof=1)))
full = next(r for r in rader if r[0] == "full")[1]
print(f"{'variant':28s} {'mått':>8s} {'±':>6s} {'Δ':>7s}")
for namn, mu, sd in rader:
print(f"{namn:28s} {mu:8.3f} {sd:6.3f} {mu - full:+7.3f}")
return rader
Tolkning: Δ mindre än ~2·std → komponenten är inte visad viktig. Interaktion: «bara_A» ≈ baslinje och «bara_B» ≈ baslinje men «full» ≫ → A och B behövs tillsammans.
Behärskning innebär
- Designar ablationer som isolerar en komponents bidrag
- Kör med flera frön och rapporterar osäkerhet
- Tolkar interaktioner mellan komponenter
Förkunskaper
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — Ablation Studies in Artificial Neural Networks — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Dropout: A Simple Way to Prevent Neural Networks from Overfitting (JMLR) — arXiv (öppen åtkomst; licens per artikel)