Hoppa till innehållet
AI-grafen
GFrontier LabVetenskaplig metod· ca 120 min· grundkunskap som ändras sällan· verifierad 2026-09-20

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

Alla källor och licenser