Hoppa till innehållet
AI-grafen
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

Alla källor och licenser