G· Frontier Labvetenskaplig-metod· ca 120 min· grundläggande — ändras sällan· verifierad 2026-09-20
Ablationsstudier
Kunna designa ablationer som isolerar en komponents bidrag, och tolka resultaten med osäkerhet.
Förkunskaper
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
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)